当前位置:文档之家› 实验三报告实验三-Kmeans算法实现

实验三报告实验三-Kmeans算法实现

实验三报告实验三-Kmeans算法实现
北华大学开放实验报告
实验名称:实验三Kmeans算法实现
所属课程:模式识别
班级:信息10—1
学号:36
姓名:张慧
实验三、K_means算法实现
一、背景知识简介:
Kmeans算法是一种经典的聚类算法,在模式识别中得到了广泛的应用,基于Kmeans的变种算法也有很多,模糊Kmeans、分层Kmeans 等。

Kmeans和应用于混合高斯模型的受限EM算法是一致的。

高斯混合模型广泛用于数据挖掘、模式识别、机器学习、统计分析。

Kmeans的迭代步骤可以看成E步和M步,E:固定参数类别中心向量重新标记样本,M:固定标记样本调整类别中心向量。

K均值只考虑(估计)了均值,而没有估计类别的方差,所以聚类的结构比较适合于特征协方差相等的类别。

二、k-means聚类算法
k-means 算法接受参数 k ;然后将事先输入的n个数据对象划分为 k个聚类以便使得所获得的聚类满足:同一聚类中的对象相似度较高;而不同聚类中的对象相似度较小。

聚类相似度是利用各聚类中对象的均值所获得一个“中心对象”(引力中心)来进行计算的。

K-means算法是最为经典的基于划分的聚类方法,是十大经典数据挖掘算法之一。

K-means算法的基本思想是:以空间中k个点
为中心进行聚类,对最靠近他们的对象归类。

通过迭代的方法,逐次更新各聚类中心的值,直至得到最好的聚类结果。

(1)算法思路:
首先从n个数据对象任意选择 k 个对象作为初始聚类中心;而对于所剩下其它对象,则根据它们与这些聚类中心的相似度(距离),分别将它们分配给与其最相似的(聚类中心所代表的)聚类;然后再计算每个所获新聚类的聚类中心(该聚类中所有对象的均值);不断重复这一过程直到标准测度函数开始收敛为止。

一般都采用均方差作为标准测度函数. k个聚类具有以下特点:各聚类本身尽可能的紧凑,而各聚类之间尽可能的分开。

该算法的最大优势在于简洁和快速。

算法的关键在于初始中心的选择和距离公式。

(2)算法步骤:
step.1---初始化距离K个聚类的质心(随机产生)
step.2---计算所有数据样本与每个质心的欧氏距离,将数据样本加入与其欧氏距离最短的那个质心的簇中(记录其数据样本的编号)
step.3---计算现在每个簇的质心,进行更新,判断新质心是否与原质心相等,若相等,则迭代结束,若不相等,回到step2继续迭代。

(3)算法流程图
开始
读入要分
设置初始
计算数据到
C个聚类中
将数据分入
与其距离最
计算新的
否聚类中心
是否收

输出C个分类

四、实验Matlab代码
k=4;
DATA=xlsread('zb0708.xls');
x=zeros(150,2);
x(1:150,1:2)=DATA(1:150,1:2);
%x=rand(150,2)*5;
[n,d] = size(x);
bn=round(n/k*rand);%第一个随机数在前1/K的范围内
nc=[x(bn,:);x(2*bn,:);x(3*bn,:);x(4*bn,:)];%初始聚类中心[cid,nr,centers] = kmeans(x,k,nc);%调用kmeans函数
for i=1:150,
if cid(i)==1,
plot(x(i,1),x(i,2),'r*') % 显示第一类
hold on
else
if cid(i)==2,
plot(x(i,1),x(i,2),'b*') %显示第二类
hold on
else
if cid(i)==3
plot(x(i,1),x(i,2),'g*') %显示第三类
hold on
else
if cid(i)==4
plot(x(i,1),x(i,2),'k*') %显示第四类
hold on
end
end
end
end
end
strt=['红色*为第一类;蓝色*为第二类;绿色*为第三类;黑色*为第四类' ];
text(-4,-3.6,strt);
五、实验结果
六、结果分析
结论(一):
初始均值设置的不同会影响迭代的次数以及各次迭代所产生的聚类中心,但它不会影响最后的分类结果。

结论(二):
数据的输入顺序不同,同样影响迭代次数,而对聚类结果没有太大的影响。

k均值算法的优点:
1.如果变量很大,k均值比层次聚类的计算速度更快(如果k很小)。

2.与层次聚类相比,k均值可以得到更紧密的簇,尤其是对于球状簇。

3.对大数据集,是可伸缩和高效率的。

4.算法尝试找出使平方误差函数值最小的k个划分。

当结果簇是密集的,而簇与簇之间区别明显的时候,效果较好。

K均值算法的缺点:
1. 没有指明初始化均值的方法。

常用的方法是随机的选取k个样本作为
均值。

2.产生的结果依赖于均值的初始值,经常发生得到次优划分的情况。


决方法是多次尝试不同的初始值。

3.可能发生距离簇中心m
i 最近的样本集为空的情况,因此, m
i
将得不到
更新。

这是一个必须处理的问题,但我们忽略该问题。

4.结果依赖于||x- m
i
||的度量单位。

一个常用的解决方法是用标准差规范各个变量,虽然这并非总是可取的。

结果还依赖于k值,所以难以比较聚类结果的优劣。

5.不适合发现非凸面形状的簇,并对噪声和离群点数据是较敏感的,因为少量的这类数据能够对均值产生极大的影响。

相关主题