【数据聚类】基于改进的粒子群算法优化K-means算法实现数据分类含Matlab源码

本文介绍了一种改进的粒子群优化算法应用于K-means聚类,以解决传统K-means的局部最优问题。通过动态调整参数、转换时机监控和防止早熟收敛,算法能寻找到全局最优的初始聚类中心,提高聚类准确性和稳定性。实验结果显示,新算法在聚类效果上优于常规方法。
摘要由CSDN通过智能技术生成

1 简介

针对传统的K—means算法对初始聚类中心的选取敏感,容易收敛到局部最优的缺点,提出一种基于改进粒子群优化算法(PSO)的K—means优化聚类算法.该算法利用PSO算法强大的全局搜索能力对初始聚类中心的选取进行优化:通过动态调整惯性权重等参数增强PSO算法的性能;利用群体适应度方差决定算法中前部分PSO算法和后部分K—means算法的转换时机;设置变量实时监控各个粒子和粒子群的最优值变化情况,及时地对出现早熟收敛的粒子进行变异操作,从而为K—means算法搜索到全局最优的初始聚类中心,使聚类结果不受初始聚类中心影响,易于获得全局最优解.实验结果表明文中提出的改进算法与传统聚类算法相比具有更高的聚类正确率,更好的聚类质量及全局搜索能力.

2 部分代码

function A=TwoSideUpDownRealCross1(A,field,objfunction,probability) %横向交叉lw=size(A,2);popsize=size(A,1);% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% p0=[98.4,134.0,141.5,183.3,125.0,91.3,401.1,329.5,386.1,427.3,412.2,370.1,301.8,368.0,301.9,476.4,283.1,414.1,328.0,389.4,354.7,262.0,461.5,371.6,462.6,379.2,530.8,391.9,480.1,319.0,329.5,333.8,390.0,432.0,402.0,428.0,178.4,194.1,474.0,609.8,17.8,6.9,224.3,210.0,212.0,200.8,220.0,232.9,168.0,208.4,443.9,426.0,434.1,402.5,357.4,423.0,220.0,369.4,273.5,336.0,432.0,220.0,410.6,422.7,351.0,296.0,411.1,263.2,370.3,418.7,409.6,412.0,423.2,428.0,436.0,428.0,425.0,497.2,510.0,470.0,464.1,118.1,141.3,132.0,135.0,252.0,221.0,245.9,247.9,183.6,288.0,557.4,529.5,800.8,801.5,582.7,680.7,670.7,651.7,921.0,916.8,911.9,898.0,905.0,846.5,850.9,843.7,841.4,835.7,828.8,846.0,179.0,120.8,121.0,317.4,318.4,335.8,151.0,129.5,130.0,218.9,5.4,45.0,20.0,16.3,20.0,22.1,125.0,10.0,13.0,7.5,53.2,6.4,69.1,49.9,91.0,41.0,13.7,7.4,28.6];% for i=1:popsize%     [Temfit(i),A(i,:)]=objfunction(A(i,:),p0,1);% end% [Y,I] = sort(Temfit); % %  for i=popsize/2+1:popsize%          no1=ceil(rand*popsize/2);%          no=i;%          for j=1:lw %             cr=rand();%             r=2*(rand()-0.5);%             firstcross(j)= A(no,j)*cr+A(no1,j)*(1-cr)+r*(A(no,j)-A(no1,j));   %             if  firstcross(j)>field(1,j)%                firstcross(j)= field(1,j);%             end%             if  firstcross(j)<field(2,j)%                firstcross(j)= field(2,j);%             end% %          end   %          %           A(no,:)=firstcross;% %                  %  end% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%D=sum(A,2);F=sum(A);crossmatrix=randperm(popsize);             for i=0:popsize/2-1                 p=rand();                 if p<probability                     no=crossmatrix(i*2+1);                     no1=crossmatrix(i*2+2);                     for j=1:lw                       cr=rand();                      r=2*(rand()-0.5);                      %r=0;                      firstcross(j)= A(no,j)*cr+A(no1,j)*(1-cr)+r*(A(no,j)-A(no1,j));                                                     cr=rand();                      r=2*(rand()-0.5);                      secondcross(j)= A(no1,j).*cr+A(no,j).*(1-cr)+r*(A(no1,j)-A(no,j));                      if  firstcross(j)>field(1,j)                          firstcross(j)= field(1,j);                      end                      if  firstcross(j)<field(2,j)                          firstcross(j)= field(2,j);                      end                                            if  secondcross(j)>field(1,j)                          secondcross(j)= field(1,j);                      end                      if  secondcross(j)<field(2,j)                          secondcross(j)= field(2,j);                      end                                         end                                 A(no,:)=firstcross;                     A(no1,:)=secondcross;                                                      end             end             end             

3 仿真结果

4 参考文献

[1]谢秀华, 李陶深. 一种基于改进PSO的K-means优化聚类算法[J]. 计算机技术与发展, 2014, 24(2):5.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

matlab科研助手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值