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

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

时间:2022-07-10 来源: 浏览:

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

天天Matlab 天天Matlab
天天Matlab

TT_Matlab

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,完整matlab代码或者程序定制加qq1575304183。

收录于合集 #数据分析matlab源码 5个

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 ); % %%% %%% %%% %%% %%% %%% %%% %%% %%% %%% %%% %%% %%% %%% %%% % p 0 =[ 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, : ),p 0 , 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代码问题可私信交流。

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

版权:如无特殊注明,文章转载自网络,侵权请联系cnmhg168#163.com删除!文件均为网友上传,仅供研究和学习使用,务必24小时内删除。
相关推荐