预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

题目:matlab实现Kmeans聚类算法 姓名 学号 背景知识 简介: Kmeans算法是一种经典的聚类算法,在模式识别中得到了广泛的应用,基于Kmeans的变种算法也有很多,模糊Kmeans、分层Kmeans等。 Kmeans和应用于混合高斯模型的受限EM算法是一致的。高斯混合模型广泛用于数据挖掘、模式识别、机器学习、统计分析。Kmeans的迭代步骤可以看成E步和M步,E:固定参数类别中心向量重新标记样本,M:固定标记样本调整类别中心向量。K均值只考虑(估计)了均值,而没有估计类别的方差,所以聚类的结构比较适合于特征协方差相等的类别。 Kmeans在某种程度也可以看成Meanshitf的特殊版本,Meanshift是一种概率密度梯度估计方法(优点:无需求解出具体的概率密度,直接求解概率密度梯度。),所以Meanshift可以用于寻找数据的多个模态(类别),利用的是梯度上升法。在06年的一篇CVPR文章上,证明了Meanshift方法是牛顿拉夫逊算法的变种。Kmeans和EM算法相似是指混合密度的形式已知(参数形式已知)情况下,利用迭代方法,在参数空间中搜索解。而Kmeans和Meanshift相似是指都是一种概率密度梯度估计的方法,不过是Kmean选用的是特殊的核函数(uniformkernel),而与混合概率密度形式是否已知无关,是一种梯度求解方式。 k-means是一种聚类算法,这种算法是依赖于点的邻域来决定哪些点应该分在一个组中。当一堆点都靠的比较近,那这堆点应该是分到同一组。使用k-means,可以找到每一组的中心点。当然,聚类算法并不局限于2维的点,也可以对高维的空间(3维,4维,等等)的点进行聚类,任意高维的空间都可以。上图中的彩色部分是一些二维空间点。上图中已经把这些点分组了,并使用了不同的颜色对各组进行了标记。这就是聚类算法要做的事情。这个算法的输入是:1:点的数据(这里并不一定指的是坐标,其实可以说是向量)2:K,聚类中心的个数(即要把这一堆数据分成几组)所以,在处理之前,你先要决定将要把这一堆数据分成几组,即聚成几类。但并不是在所有情况下,你都事先就能知道需要把数据聚成几类的。但这也并不意味着使用k-means就不能处理这种情况,下文中会有讲解。把相应的输入数据,传入k-means算法后,当k-means算法运行完后,该算法的输出是:1:标签(每一个点都有一个标签,因为最终任何一个点,总会被分到某个类,类的id号就是标签)2:每个类的中心点。标签,是表示某个点是被分到哪个类了。例如,在上图中,实际上有4中“标签”,每个“标签”使用不同的颜色来表示。所有黄色点我们可以用标签0表示,所有橘色点可以用标签1来表示,等等。在本文中,使用上图的二维坐标(x,y)向量为数据集。假设我们要将这些点聚成5类,即k=5。我们可以看出,有3个类离的比较远,有两个类离得比较近,几乎要混合在一起了。当然,数据集不一定是坐标,假如你要对彩色图像进行聚类,那么你的向量就可以是(b,g,r),如果使用的是hsv颜色空间,那还可以使用(h,s,v),当然肯定可以有不同的组合例如(b*b,g*r,r*b),(h*b,s*g,v*v)等等。在本文中,初始的类的中心点是随机产生的。如上图的红色点所示,是本文随机产生的初始点。注意观察那两个离得比较近的类,它们几乎要混合在一起,看看算法是如何将它们分开的。类的初始中心点是随机产生的。算法会不断迭代来矫正这些中心点,并最终得到比较靠近真实中心点的一组中心点。当然,最终的结果不一定就是真实的那一组中心点,算法会尽量向真实的靠近。每个点(除了中心点的其他点)都计算与5个中心点的距离,选出一个距离最小的(例如该点与第2个中心点的距离是5个距离中最小的),那么该点就归属于该类.上图是点的归类结果示意图.经过步骤3后,每一个中心center(i)点都有它的”管辖范围”,由于这个中心点不一定是这个管辖范围的真正中心点,所以要重新计算中心点,计算的方法有很多种,最简单的一种是,直接计算该管辖范围内所有点的均值,做为心的中心点new_center(i).如果重新计算的中心点new_center(i)与原来的中心点center(i)的距离大于一定的阈值(该阈值可以设定),那么认为算法尚未收敛,使用new_center(i)代替center(i)(如图,中心点从红色点转移到绿色点),转步骤3;否则,认为算法已经收敛,则new_center(i)就是最终的中心点。现在,所有的中心都不再移动,即算法已经收敛。当然,也许这些中心点还没有达到你要的精度,由于计算这些中心点的准确性,会受初始中心点设置的影响。所以,如果初始中心设置的很糟糕,那么得出来的结果也会不理想。可以从K=1开始,