【聚类算法】基于matlab改进的粒子群算法优化K-means算法【含Matlab源码 1946期】

举报
海神之光 发表于 2022/07/10 23:19:26 2022/07/10
1.6k+ 0 0
【摘要】 一、获取代码方式 获取代码方式1: 完整代码已上传我的资源:【聚类算法】基于matlab改进的粒子群算法优化K-means算法【含Matlab源码 1946期】 获取代码方式2: 通过订阅紫极神光博客...

一、获取代码方式

获取代码方式1:
完整代码已上传我的资源:【聚类算法】基于matlab改进的粒子群算法优化K-means算法【含Matlab源码 1946期】

获取代码方式2:
通过订阅紫极神光博客付费专栏,凭支付凭证,私信博主,可获得此代码。

备注:
订阅紫极神光博客付费专栏,可免费获得1份代码(有效期为订阅日起,三天内有效);

二、基于划分的K-means聚类算法简介

1 K均值聚类
K-means代表一种非常有用的分割式集群技术, 通过竞争学习, 它在许多领域得到了广泛的应用.不幸的是, 作为一种爬山法, K-means在很大程度上取决于初始聚类中心和输入模式的选择, 否则无法收敛或收敛到局部最优, 从而导致不确定的聚类结果.为了解决上述问题, 本文研究了一种改进的粒子群优化 (IPSO) , 提出了基于IPSO的K-means算法 (IPSO-KM) .

2 粒子群优化
在PSO算法中, 每个粒子在搜索空间中作为一个点, 通过自己的努力和周围其他粒子的社会合作进行搜索.所有粒子都有适应值和速度.粒子通过学习所有粒子的最好经验穿越D维问题空间.因此, 通过搜索过程粒子倾向于飞向更好的搜索区域.第i个粒子的速度Vi和位置更新Xi如下:
在这里插入图片描述
其中:c1和c2是加速度常量, 代表到达Pbesti和Gbest位置的每个粒子的加权随机加速度.r1和r2是两个在区间[0, 1]之间的随机函数.Xi= (xi1, xi2, …, xi D) 是第i个粒子的位置;Pbesti= (pbesti1, pbesti2, …, pbesti D) 是第i个粒子的最好先前位置产生的最适应值;Gbest= (gbest1, gbest2, …, gbestD) 是整个种群发现的最好位置;Vi= (vi1, vi2, …, vi D) 代表粒子i的位置变化 (速度) 比率.w是用于平衡全局和局部搜索能力的惯性权值.Shi和Eberhart[7]的研究表明, 一个相对较大的w值有利于总体最优, 一个较小的w值有利于收敛.与此同时, 提出了一个迭代线性递减算法, 刚开始具有良好的全局搜索能力, 随后具有良好的局部搜索能力.给出下面的方程:
在这里插入图片描述
其中:w1和w2分别是初始值和最终值.Max_iter和iter分别是最大值和当前迭代值.如果|vi D|超过用户指定的正常数值vdmax, 该维度的速度分配给标志 (vid) vdmax.即每一维的粒子速度不能超过最大值vdmax.

三、部分源代码

%% 清屏、清空变量
clc;
clear all;
close all; 
%% 算法参数设置
k=10;    % 聚类数目
iter=20; % 迭代次数
%% 生成随机变量点 
n=1000;          % 样本点数目
rx=10*rand(n,1); % vector of random data x
ry=10*rand(n,1); % vector of random data y

% %% 使用改进后的PSO进行优化Kmeans聚类算法的初始聚类中心
p = pso(rx,ry,k);  %改进的PSO优化Kmeans聚类算法
centroidsx=p(1:k); % initial cluster centers x
centroidsy=p(k+1:end); % initial cluster centers y
%% 随机初始化聚类中心
% centroidsx=rx( ceil(rand(k,1)*size(rx,1)) ,:); % initial cluster centers x
% centroidsy=ry( ceil(rand(k,1)*size(ry,1)) ,:); % initial cluster centers y
% % plot(centroidsx,centroidsy)
%% normal data clustering(NDC)
for p=1:iter          %迭代次数
    for i=1:n         %样本数目
        for j=1:k     %聚类数目
            if p==1   %迭代次数为1diste(i,j)=sqrt(((rx(i))-(centroidsx(j)))^2+((ry(i))-(centroidsy(j)))^2);  
                %计算个数据点到聚类中心的距离
            % the sample of the jth centroid
            else
                diste(i,j)=sqrt(((rx(i))-(Cclustx(j)))^2+((ry(i))-(Cclusty(j)))^2);
            end
        end
        % Define clusters
        [minidist, CN] = min(diste(i,1:k)); % 求取距离最小的,并记录对应类别数
        % cluster which the sample belongs to
        Distance(p,i)=minidist;  %记录每一代的每一个样本与各个聚心最小的距离
        Cln(p,i)=CN;             %记录每一代的每一个样本的类别数
    end
    % Recompute the clusters center
    for q=1:k
        PC=(Cln(p,:)==q); % Position of the points of the cluster
        Cpoints(q,:)=PC; % Points of the cluster
        Cclustx(q,:)=mean(rx(PC)); % New cluster centers in x
        Cclusty(q,:)=mean(ry(PC)); % New cluster centers in y
    end
    SCCx(p,:)=Cclustx; % center of the cluster at each iteration in x
    SCCy(p,:)=Cclusty; % center of the cluster at each iteration in y
    CPP(p,:,:)=Cpoints; % points of the cluster at each iteration
end
%% Plot of the movements of the centroids and clusters
CV= 'o*+s^v.db+c+m+k+yorobocomokoysrsbscsmsksy'; % Color Vector
for p=1:iter+1
    figure (1)
    if p==1
        plot(rx,ry,'o','LineWidth',1.5); hold on; plot(centroidsx,centroidsy,'*k','LineWidth',6.5);
        hold off
    else
        for i=1:k
        plot(rx(CPP(p-1,i,:)),ry(CPP(p-1,i,:)),CV(i),'LineWidth',2); % Plot points with determined color and shape
        hold on
        end
        plot(SCCx(p-1,:),SCCy(p-1,:),'*k','LineWidth',6); hold off
    end
    grid on
    pause(0.8)
end
  
 

四、运行结果

在这里插入图片描述

五、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1] 蔡利梅.MATLAB图像处理——理论、算法与实例分析[M].清华大学出版社,2020.
[2]杨丹,赵海滨,龙哲.MATLAB图像处理实例详解[M].清华大学出版社,2013.
[3]周品.MATLAB图像处理与图形用户界面设计[M].清华大学出版社,2013.
[4]陆维.基于改进粒子群优化的K-means算法在学生状态分析系统中的应用[J].佳木斯大学学报(自然科学版). 2014,32(06)

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

文章来源: qq912100926.blog.csdn.net,作者:海神之光,版权归原作者所有,如需转载,请联系作者。

原文链接:qq912100926.blog.csdn.net/article/details/125696615

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。