k-means clustering 学习笔记

其实这算法巨简单。。。。让我想到了均分纸牌(noip200?

还是大致说一下:

对于有 features 但是 **没有 **labels 的数据,没办法用监督学习,但是可以使用非监督学习的聚类算法。

所谓聚类,简单理解,就是把相似的分成一组。。。

k-means就是一个常见的聚类算法。。。

k代表可以把数据分成k组。

举一个平面上二维点的例子,算法步骤如下:

  1. 随机k个点当做k个点作为k组的中心。
  2. 根据现在的k个中心,将数据集中的点,按照【距离哪个中心最近就属于哪个中心】的原则,分组。
  3. 在每一个组内求点的二维平均数,作为新的中心。**如果存在一个组的数据中心改变,那么返回2,否则结束**。![](http://stanford.edu/~cpiech/cs221/img/kmeansViz.png)

可以很容易推广到高维度,就只是求平均数和算距离的时候有区别。

一般化的流程:

然后该算法是Expectation Maximization的一个特例

该算法和KNN算法没有半毛钱关系。。。

参考资料:

k means 维基百科

CS221-kmeans