700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 【数据聚类】基于改进的粒子群算法优化K-means算法实现数据分类含Matlab源码

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

时间:2018-06-15 00:14:13

相关推荐

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

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-1p=rand();if p<probabilityno=crossmatrix(i*2+1);no1=crossmatrix(i*2+2);for j=1:lwcr=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);endif firstcross(j)<field(2,j)firstcross(j)= field(2,j);endif secondcross(j)>field(1,j)secondcross(j)= field(1,j);endif secondcross(j)<field(2,j)secondcross(j)= field(2,j);endendA(no,:)=firstcross;A(no1,:)=secondcross;endendend

3 仿真结果

4 参考文献

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

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

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。