【数据聚类】基于改进的粒子群算法优化K-means算法实现数据分类含Matlab源码
【数据聚类】基于改进的粒子群算法优化K-means算法实现数据分类含Matlab源码
TT_Matlab
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,完整matlab代码或者程序定制加qq1575304183。
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代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。
-
2023年血糖新标准公布,不是3.9-6.1,快来看看你的血糖正常吗? 2023-02-07
-
2023年各省最新电价一览!8省中午执行谷段电价! 2023-01-03
-
GB 55009-2021《燃气工程项目规范》(含条文说明),2022年1月1日起实施 2021-11-07
-
PPT导出高分辨率图片的四种方法 2022-09-22
-
2023年最新!国家电网27家省级电力公司负责人大盘点 2023-03-14
-
全国消防救援总队主官及简历(2023.2) 2023-02-10
-
盘点 l 中国石油大庆油田现任领导班子 2023-02-28
-
我们的前辈!历届全国工程勘察设计大师完整名单! 2022-11-18
-
关于某送变电公司“4·22”人身死亡事故的快报 2022-04-26
