K均值算法.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
在数据挖掘中,?k-Means 算法是一种?/wiki/Cluster_analysiscluster analysis?的算法,其主要是来计算数据聚集的算法,主要通过不断地取离种子点最近均值的算法。问题K-Means算法主要解决的问题如下图所示。我们可以看到,在图的左边有一些点,我们用肉眼可以看出来有四个点群,但是我们怎么通过计算机程序找出这几个点群来呢?于是就出现了我们的K-Means算法(/wiki/K-means_clusteringWikipedia链接)这个算法其实很简单,如下图所示:?K-Means 算法概要从上图中,我们可以看到,A, B, C, D, E 是五个在图中点。而灰色的点是我们的种子点,也就是我们用来找点群的点。有两个种子点,所以K=2。然后,K-Means的算法如下:1.随机在图中取K(这里K=2)个种子点。2.然后对图中的所有点求到这K个种子点的距离,假如点Pi离种子点Si最近,那么Pi属于Si点群。(上图中,我们可以看到A,B属于上面的种子点,C,D,E属于下面中部的种子点)3.接下来,我们要移动种子点到属于他的“点群”的中心。(见图上的第三步)4.然后重复第2)和第3)步,直到,种子点没有移动(我们可以看到图中的第四步上面的种子点聚合了A,B,C,下面的种子点聚合了D,E)。这个算法很简单,但是有些细节我要提一下,求距离的公式我不说了,大家有初中毕业水平的人都应该知道怎么算的。我重点想说一下“求点群中心的算法”求点群中心的算法一般来说,求点群中心点的算法你可以很简的使用各个点的X/Y坐标的平均值。不过,我这里想告诉大家另三个求中心点的的公式:1)Minkowski Distance 公式 ——?λ 可以随意取值,可以是负数,也可以是正数,或是无穷大。2)Euclidean Distance 公式?—— 也就是第一个公式?λ=2 的情况3)CityBlock Distance 公式?——?也就是第一个公式?λ=1 的情况这三个公式的求中心点有一些不一样的地方,我们看下图(对于第一个 λ 在 0-1之间)。??(1)Minkowski Distance(2)Euclidean Distance(3)?CityBlock Distance上面这几个图的大意是他们是怎么个逼近中心的,第一个图以星形的方式,第二个图以同心圆的方式,第三个图以菱形的方式。K-Means的演示如果你以”/search?hl=zh-CNq=K+Means+DemoK Means Demo“为关键字到Google里查你可以查到很多演示。这里推荐一个演示http://home.dei.polimi.it/matteucc/Clustering/tutorial_html/AppletKM.htmlhttp://home.dei.polimi.it/matteucc/Clustering/tutorial_html/AppletKM.html操作是,鼠标左键是初始化点,右键初始化“种子点”,然后勾选“Show History”可以看到一步一步的迭代。注:这个演示的链接也有一个不错的?http://home.dei.polimi.it/matteucc/Clustering/tutorial_html/index.htmlK Means Tutorial?。K-Means ++ 算法K-Means主要有两个最重大的缺陷——都和初始值有关:● ?K 是事先给定的,这个 K 值的选定是非常难以估计的。很多时候,事先并不知道给定的数据集应该分成多少个类别才最合适。(?/wiki/Multispectral_pattern_recognitionISODATA 算法通过类的自动合并和分裂,得到较为合理的类型数目 K)● K-Means算法需要用初始随机种子点来搞,这个随机种子点太重要,不同的随机种子点会有得到完全不同的结果。(/wiki/K-means%2B%2BK-Means++算法可以用来解决这个问题,其可以有效地选择初始点)我在这里重点说一下?K-Means++算法步骤:1.先从我们的数据库随机挑个随机点当“种子点”。2.对于每个点,我们都计算其和最近的一个“种子点”的距离D(x)并保存在一个数组里,然后把这些距离加起来得到Sum(D(x))。3.然后,再取一个随机值,用权重的方式来取计算下一个“种子点”。这个算法的实现是,先取一个能落在Sum(D(x))中的随机值Random,然后用Random?-=?D(x),直到其=0,此时的点就是下一个“种子点”。4.重复第(2)和第(3)步直到所有的K个种子点都被选出来。5.进行K-Means算法。相关的代码你可以在这里找到“/wiki/K-means%2B%2B_clusteringimp

文档评论(0)

wuailuo + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档