- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
K-means算法的实现与应用举例
K-means方法
K-means算法如下:
S1:初始化,聚类中心c,c
,?c
,标号集I ?I
???I
??;
S2:分类:
for i?1:n
?
1 2 k
?? ?
1 2 k
j*?argmin
1?j?k
x?c
i j
x?c T;i j
I
j*
end
?I ??i?;
j*
S3:重新计算聚类中心:
for j?1:k
c ?
j
end
1? x;
Ij
I
j
i?Ij
S4:迭代S2-S3,直至收敛。其matlab程序见附录1。
实验
实验1随机生成300个??4,4?之间的二维数对,用K-means算法将其分为两类(其matlab
程序见附录2),如fig1,由图1(b)可看出,离群点对聚类中心的位置有明显的影响。
Cluster1Cluster2CentroidsCluster1Cluster2
Cluster1
Cluster2Centroids
Cluster1
Cluster2Centroids
3 2
2
1
1
0
0
-1
-1
-2
-2
-3 -3
-4
-4 -3 -2 -1 (0a)
1 2 3 4
-4
(b)-4 -3 -2 -1 0 1 2 3 4
(b)
fig1 实验1
实验2随机生成600个二维数对,其中300个落于以(0,0)为圆心的单位圆,另外300
个落入(2,2)为圆心的单位圆,用K-means算法将其分为两类(其matlab程序见附录2),如fig2(a),而fig2(b)则为在以上实验的基础上增加了30个干扰点之后的分类图,可见K-means算法不能对其很好的分类,离群点对聚类中心的位置有明显的影响。
Cluster1Cluster2Centroids
Cluster1
Cluster2Centroids
Cluster1
Cluster2Centroids
5
1.5
4
1
3
0.5
2
0
1
-0.5 0
-1
-1 -0.5 0 (a)0.5 1 1.5 2
-1
-1 0 1 2 (b)3 4 5 6
fig2 实验2
实验3随机生成600个二维数对,其中300个落于以(0,0)为圆心的单位元,另外300个落入以(0,0)为圆心的单位圆,长半径为3短半径为2的圆盘,用K-means算法将其分为2类(其matlab程序见附录2),结果见fig3,可见K-means算法同样不能对其很好的分类。
Cluster1Cluster2
Cluster1
Cluster2Centroids
2
1
0
-1
-2
K-means算法修正
-3
-3 -2 -1 0 1 2 3
fig3 实验3
修正一:实验2中增加离群点后,K-means算法失效,是因为采用2范数计算距离,使
计算出的重心与实际重心存在较大的误差。为减小误差,可以采用1-范数计算距离,或是采用中值代替均值计算新的聚类中心,即
? ?
c ?mediumx
j i
i?I ,
j
j?1, k
1
通过实验可以知道,采用1-范数计算距离实验效果并没有很好的改进,而采用中值计算聚类中心取得较好的效果(matlab程序见附录3),采用同实验2增加干扰后相同的实验数据用修正后的K-means算法进行分类,得到实验结果如fig4(a),而实验3中结果产生的原因则是由于没有考虑数据点自身的结构特征与其他数据点之间关系引起,并且K-means算法只考虑类内间距最小性并没有考虑类间间距的最大性,即只考虑了类内数据的相似性的最大性并没有考虑类间数据的差异性的最大性,所以单纯的改变聚类中心的选取方法,而没有对相关性(距离)进行本质的重新的定义,并不能对实验3的实验结果很好的改进,如fig4(b):
Cluster1Cluster2CentroidsCluster1
Cluster1
Cluster2Centroids
Cluster1
Cluster2Centroids
5 2
4
1
3
0
2
-1
1
-2
0
-1
-1 0 1 2
-3
3 4 5 6 -3
-2 -1
(b)0 1 2 3
(a)
fig4 中值修正
附录
附录1
function[idx,C,D,sumD]=kmeans_mean(X,k)
%kmeans2normK-meansclustering.
%X:n*p的数
文档评论(0)