K-means 的聚类逻辑蛮清晰的,主要靠计算“谁离谁近”,把数据点分到最近的中心里。你要是手上有一堆样本,想看看有没有分组规律,用它还挺合适。孤立点也能得比较稳,结果还挺有参考价值。
K-means的实现过程不算复杂,核心就两个步骤:先随机选中心,不停更新,直到不再变。嗯,像在调频收音机,调到信号位置为止。要注意初始中心点选得不好,聚类效果就偏了。
如果你是用Python写的,可以直接撸个小脚本试试,比如下面这样:
from sklearn.cluster import KMeans
kmeans = KMeans(n_clusters=3)
kmeans.fit(data)
别的语言也有,Matlab也挺方便,尤其是搞学术的用得多。我下面给你挑了几个资源,分类清楚,想怎么实现都能找到例子:
- 详解 k-means 聚类算法(原理讲得还不错)
- Python 实现 K-Means 聚类算法(代码直接上手)
- Matlab 实现 K-means 聚类算法(适合搞科研)
- 数据挖掘中的 k-means 聚类算法及 matlab 代码示例(结合案例讲)
如果你平时要做聚类,或者准备写点推荐系统、图像分割一类的功能,K-means 都还蛮实用的。就是要注意标准化数据,不然距离算出来会有偏差。
哦对,如果你有噪声点、离群点比较多的情况,记得调一下初始点选择策略,或者考虑加点限制条件。