matlab实现Kmeans聚类算法

上传人:M****1 文档编号:497066002 上传时间:2023-04-06 格式:DOCX 页数:10 大小:55.34KB
返回 下载 相关 举报
matlab实现Kmeans聚类算法_第1页
第1页 / 共10页
matlab实现Kmeans聚类算法_第2页
第2页 / 共10页
matlab实现Kmeans聚类算法_第3页
第3页 / 共10页
matlab实现Kmeans聚类算法_第4页
第4页 / 共10页
matlab实现Kmeans聚类算法_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《matlab实现Kmeans聚类算法》由会员分享,可在线阅读,更多相关《matlab实现Kmeans聚类算法(10页珍藏版)》请在金锄头文库上搜索。

1、XIAN TECHNOLOGICAL UNIVERSITY题目:matlab实现Kmeans聚类算法姓 名 沟超辉学 号 101001106背景知识1.简介:Kmeans算法是一种经典的聚类算法,在模式识别中得到了广泛的应 用,基于Kmeans的变种算法也有很多,模糊Kmeans、分层Kmeans 等。Kmeans和应用于混合高斯模型的受限EM算法是一致的。高斯混合 模型广泛用于数据挖掘、模式识别、机器学习、统计分析。Kmeans 的迭代步骤可以看成E步和M步,E:固定参数类别中心向量重新 标记样本,M:固定标记样本调整类别中心向量。K均值只考虑(估 计)了均值,而没有估计类别的方差,所以聚类

2、的结构比较适合于 特征协方差相等的类别。Kmeans在某种程度也可以看成Meanshitf的特殊版本,Meanshift 是一种概率密度梯度估计方法(优点:无需求解出具体的概率密度, 直接求解概率密度梯度。),所以Meanshift可以用于寻找数据的 多个模态(类别),利用的是梯度上升法。在06年的一篇CVPR文 章上,证明了 Meanshift方法是牛顿拉夫逊算法的变种。Kmeans 和EM算法相似是指混合密度的形式已知(参数形式已知)情况下, 利用迭代方法,在参数空间中搜索解。而Kmeans和Meanshift相 似是指都是一种概率密度梯度估计的方法,不过是Kmean选用的是 特殊的核函数

3、(uniform kernel),而与混合概率密度形式是否已 知无关,是一种梯度求解方式。k-means是一种聚类算法,这种算法是依赖于点的邻域来决定哪些 点应该分在一个组中。当一堆点都靠的比较近,那这堆点应该是分 到同一组。使用k-means,可以找到每一组的中心点。当然,聚类算法并不局限于2维的点,也可以对高维的空间(3维, 4维,等等)的点进行聚类,任意高维的空间都可以。上图中的彩色部分是一些二维空间点。上图中已经把这些点分组 了,并使用了不同的颜色对各组进行了标记。这就是聚类算法要做 的事情。这个算法的输入是:1:点的数据(这里并不一定指的是坐标,其实可以说是向量)2: K,聚类中心的

4、个数(即要把这一堆数据分成几组)所以,在处理之前,你先要决定将要把这一堆数据分成几组,即聚 成几类。但并不是在所有情况下,你都事先就能知道需要把数据聚 成几类的。但这也并不意味着使用k-means就不能处理这种情况, 下文中会有讲解。把相应的输入数据,传入k-means算法后,当k-means算法运行完 后,该算法的输出是:1:标签(每一个点都有一个标签,因为最终任何一个点,总会被 分到某个类,类的id号就是标签)2:每个类的中心点。标签,是表示某个点是被分到哪个类了。例如,在上图中,实际上 有4中“标签”,每个“标签”使用不同的颜色来表示。所有黄色 点我们可以用标签0表示,所有橘色点可以用标

5、签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)等等。在本文中,初始的类的中心点是随机产生的。如上图的红色点所示, 是本文随机产生的初始点。注意观察那两个离得比较近的类,它们 几乎要混合在一起,看看算法是如何将它们分开的。类的初

6、始中心点是随机产生的。算法会不断迭代来矫正这些中心 点,并最终得到比较靠近真实中心点的一组中心点。当然,最终的 结果不一定就是真实的那一组中心点,算法会尽量向真实的靠近。每个点(除了中心点的其他点)都计算与5个中心点的距离,选出一 个距离最小的(例如该点与第2个中心点的距离是5个距离中最小 的),那么该点就归属于该类.上图是点的归类结果示意图.经过步骤3后,每一个中心center(i)点都有它的”管辖范围”,由 于这个中心点不一定是这个管辖范围的真正中心点,所以要重新计 算中心点,计算的方法有很多种,最简单的一种是,直接计算该管辖 范围内所有点的均值,做为心的中心点new_center(i).

7、如果重新计算的中心点new_center(i)与原来的中心点center(i) 的距离大于一定的阈值(该阈值可以设定),那么认为算法尚未收 敛,使用new_center(i)代替center(i)(如图,中心点从红色点 转移到绿色点),转步骤3 ;否则,认为算法已经收敛,则 new_center(i)就是最终的中心点。现在,所有的中心都不再移动,即算法已经收敛。当然,也许这些 中心点还没有达到你要的精度,由于计算这些中心点的准确性,会 受初始中心点设置的影响。所以,如果初始中心设置的很糟糕,那 么得出来的结果也会不理想。可以从K=1开始,并且k值不断的增加,通常,随着k的增加,类 中的方差会急

8、剧的下降,当k达到一定大的时候,方差的下降会明 显减慢(至于慢道何种程度,可以设阈值),此时,就选取到了最 住的k值。如果初始值没设置好,肯定也不能获得理想的聚类效果。针对这种情况,这里提供两种方法:随机的选取多组中心点,在每一组中心点上,都把kmeans算法运 行一次。最后,在选取类间方差最小的一组。通过设定的选初始值方法(这里提供一种,当然自己也可以去构想 其他的方法)1. 在数据集上随机选择一个点,做为第一个中心点;2:在数据集上,选取离第一个中心点最远的一个点做为第二个中心点。3:在数据集上,选取离第一个和第二个中心最远的点,做为第三 个中心。4:依此计算后续的中心点2. 数据来源描述

9、本次数据挖掘实验的数据源来自加州大学计算机与信息院,是用于 合成控制图时间序列聚类分析的一组数据。数据集中一共包含600组数 据,每一组数据都有60个分量,也就是数据是60维的。数据一共可以 分成6个聚类,分别是:1-100 Normal (正常)101-200 Cyclic (循环)201-300 Increasing trend (增加趋势)301-400 Decreasing trend (减少趋势)401-500 Upward shift (上升变化)501-600 Downward shift (下降变化)3. 数据预处理由于本数据集的数据维数较多,所以本实验采用了结构体来存储60

10、维的数据,并使用指针来进行对数据的操作,以提高速度。在数据预处 理过程中,首先将数据从data文件中读出,后依次存入结构体数组 dataset600中。4. k-means聚类算法k-means算法接受参数k ;然后将事先输入的n个数据对象 划分为k个聚类以便使得所获得的聚类满足:同一聚类中的对象相 似度较高;而不同聚类中的对象相似度较小。聚类相似度是利用各 聚类中对象的均值所获得一个“中心对象”(引力中心)来进行计 算的。K-means算法是最为经典的基于划分的聚类方法,是十大经典 数据挖掘算法之一。K-means算法的基本思想是:以空间中k个点 为中心进行聚类,对最靠近他们的对象归类。通过

11、迭代的方法,逐 次更新各聚类中心的值,直至得到最好的聚类结果。(1)算法思路:首先从n个数据对象任意选择k个对象作为初始聚类中心;而 对于所剩下其它对象,贝U根据它们与这些聚类中心的相似度(距离), 分别将它们分配给与其最相似的(聚类中心所代表的)聚类;然 后 再计算每个所获新聚类的聚类中心(该聚类中所有对象的均值);不 断重复这一过程直到标准测度函数开始收敛为止。一般都采用均方 差作为标准测度函数.k个聚类具有以下特点:各聚类本身尽可能 的紧凑,而各聚类之间尽可能的分开。该算法的最大优势在于简洁和快速。算法的关键在于初始中心 的选择和距离公式。(2)算法步骤:step.1-初始化距离K个聚类

12、的质心(随机产生)step.2-计算所有数据样本与每个质心的欧氏距离,将数据样 本加入与其欧氏距离最短的那个质心的簇中(记录其数据样本的编 号)step.3 计算现在每个簇的质心,进行更新,判断新质心是否与原质心相等,若相等,则迭代结束,若不相等,回到step2继续迭代。Matlab 代码:function km(k,A)%函数名里不要出现“-”X = randn(100,2).*100;.randn(100,2).*200;randn(100,2).*300;.randn(100,2).*400;randn(100,2).*500;randn(100,2).*600;opts = stats

13、et(Display,final);idx,ctrs=kmeans(X,6,.,Distance, city ,.Replicates ,5,.Options ,opts);plot(X(idx=1,1),X(idx=1,2),r.,MarkerSize ,12)hold onplot(X(idx=2,1),X(idx=2,2),b.,MarkerSize ,12)hold onplot(X(idx=3,1),X(idx=3,2),m.,MarkerSize ,12)hold onplot(X(idx=4,1),X(idx=4,2),g.,MarkerSize ,12)hold onplot(

14、X(idx=5,1),X(idx=5,2),k.,MarkerSize ,12)hold onplot(X(idx=6,1),X(idx=6,2),c.,MarkerSize ,12)title(bf Kmeans 聚类算法图像)plot(ctrs(:,1),ctrs(:,2),kx, MarkerSize ,12, LineWidth ,2)plot(ctrs(:,1),ctrs(:,2),ko,MarkerSize ,12, LineWidth ,2)plot(ctrs(:,1),ctrs(:,2),kx, MarkerSize ,12, LineWidth ,2)plot(ctrs(:,

15、1),ctrs(:,2),kx, MarkerSize ,12, LineWidth ,2)plot(ctrs(:,1),ctrs(:,2),kx, MarkerSize ,12, LineWidth ,2)plot(ctrs(:,1),ctrs(:,2),kx, MarkerSize ,12, LineWidth ,2)plot(ctrs(:,1),ctrs(:,2),kx, MarkerSize ,12, LineWidth ,2) legend(Cluster 1, Cluster 2, Cluster 3, Cluster 4, Cluster 5,. Cluster 6, Centroids, Location ,NW) 15 iterations,totalsumofdistances=18894728 iterations,totalsumofdistances=17870912 iterations,totalsumofdistances=18405514 iterations,totals

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号