浅析Kmeans聚类算法

kmeans用于数据挖掘,是很典型的基于距离的聚类算法,采用距离作为相似性的评价指标,即认为两个对象的距离越近,其相似度就越大
主要步骤如下:
1.从一群点中任意选择K个点,且叫他中心点,K值就是将这群点分的类别数目
2.对余下的每一个点,分别计算它与每一个中心点的距离,得到K个距离,比较这K个距离,选择其中最小的距离,将点与这个中心点归为一类。
3.当所有的点都归类后,对每一个类别重新计算其中心点,再次得到K个中心点,然后重复2步骤。

然后,开始解决以下问题:
1.只有把现实世界的物体的属性抽象成向量或坐标,就可以用K-Means算法来归类了。如何把一个实体文件抽象为一个点。在这里,用到了中文分词和坐标、维度概念。比如说有100篇文章,对每一篇均进行分词,从中提取关键字。将100篇文章的关键字整合并进行去重复操作,假如最终得到1000个关键字,暂时标记为整合关键字。此外,这1000个关键字还可抽象为1000个维度。然后将每一篇文章的关键字与整合关键字进行比对。若某个整合关键字在文章中出现了,则此篇文章在这个关键字处,即这个维度上可以计作1,若没有出现则计作0,当一片文章中的关键字被比对完之后,一篇文章就被抽象为一个点,且这个点由1000个坐标组成。点的坐标除了1和0外,还可以是其他整数。由此,抽象一篇文章可以有两种思路
(1)某个整合关键字只要在文章中出现了,就计作1,而不管这个整合关键字在这片文章中出现了几次。因此,这种思路下的点的坐标仅由1和0组成。
(2)我们不仅要考虑某个整合关键字是否文章中出现了,还要考虑他到底出现了几次。即出现几次,就计作几,这种思路下坐标,除了1和0,还有其他整数。
2.在划分类别的时候,是如何判断两点之间的距离的。首先一个点由两个坐标组成,计作(x,y),就像在二维平面中,求两点之间的距离,d=。这种方法是最简答,也是我们最容易想到的。
3.如何计算中心点,最简单的,使用各个点的X/Y坐标的平均值。
4.在Kmeans算法中,需要重复计算中心点,那么具体要重复多少次才停止呢?
停止的条件有两种
(1) 每次重复计算的中心点,与上一次计算的中心点之间总有一定的浮动范围。因此, 我们提前给定一个中心点的浮动范围,在两次中心点之间的差值在这个浮动范围里时, 我们就认定中心点已经固定,重复计算就此结束。
(2)不论重复计算多少次,我们可以确定一点,重复计算次数越多,中心点就越精确,即每一个类别里点之间的关系就越亲密。当然我们不可能进行无数次的重复计算。因此,我们根据实际情况,选择一个合适的次数进行重复计算即可。当重复计算了限定次数的时候,就固定当前所分类的情况。
(3)其实还有第三种,就是将浮动范围和限定次数相结合,作为两个限定条件,只要满足其中一个条件,重复即可停止。
5.其实,kmeans也是有缺点的,很重要的一点就是K 是事先给定的,这个 K 值的选定是非常难以估计的。很多时候,事先并不知道给定的数据集应该分成多少个类别才最合适。此时,我们就需借助其他算法来确定K值

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,687评论 25 708
  • 1. 机器学习基本概念 1.1 什么是机器学习 机器学习(Machine Learning)是一种基本数据的学习,...
    ZPPenny阅读 4,398评论 0 10
  • 你能看到一个路人身上的闪光点,那就值得。
    风雨等故人阅读 187评论 0 0
  • 图片服务器存在的需求是,根据手机屏幕尺寸以及dpi的不同,将一些尺寸较大的图片进行动态等比例缩放,最终达到不浪费屏...
    stois阅读 2,598评论 0 5
  • 真的很遗憾,这次没能带着紫涵一起出来,虽然知道她以后肯定也会有机会重走这一路,可心里还是很遗憾,想让孩子不怕挑战,...
    勇敢的Sandy阅读 441评论 0 2