Python 的 KMeans 实现讲得挺细的,适合刚入门聚类算法的同学。思路清晰,代码注释也到位,哪怕你之前只听说过“无监督学习”四个字,看完也能写出点东西来。实现过程一步一步来,连初始化中心点的方法都做了对比,蛮贴心的。
代码用的就是标准库+NumPy,没有复杂依赖,上手快。逻辑上先随机选中心,再迭代更新直到收敛,写得比较通俗,适合自己动手抠逻辑。实测下来,数据量不是太大的话,跑得也挺快,调试起来没什么负担。
如果你对聚类感兴趣,顺带也可以看看其它实现,比如KMeans 的 MapReduce 版本,适合大规模数据;或者KMeans 在实际业务中的应用,可以了解怎么落地到项目里。
另外,有意思的是还有不同语言版本的,比如MATLAB的、Java的,思路其实都差不多,就是写法风格不太一样。如果你是多语言选手,不妨都看看,挺长见识的。
对了,想继续深入的也别错过KMeans 改进算法的研究这篇 PDF,讲了一些优化思路,比如初始点选择、距离度量这些,实际用处还挺大的。
如果你是刚上手KMeans
,建议先用 Python 版本跑通基本流程,再去对比不同实现,会更有感觉。