不知道聚类数量的K均值?
我正在尝试对一组高维数据点(大约有50个维度)应用k-means算法,想知道有没有什么方法可以找到最佳的聚类数量。
我记得之前看到过,算法通常是通过最大化聚类之间的距离和最小化聚类内部的距离来实现这个目标,但我不记得具体在哪里看到的。如果有人能给我推荐一些相关的资源,那就太好了。目前我在使用SciPy库来进行k-means,但其他相关的库也可以。
如果有其他方法可以实现同样的目标或者更好的算法,请告诉我。
7 个回答
4
一个有趣的方法是由Fred和Jain提出的证据积累。这个方法是通过多次运行k均值算法,使用很多个聚类,然后把这些结果合并成一个整体的解决方案。这个方法的好处在于,聚类的数量是在这个过程中确定的,并且最后得到的聚类不一定是球形的。
10
你可以看看这个维基百科页面,关于如何确定数据集中聚类的数量。
另外,你也可以试试聚合层次聚类。这种方法不需要事先知道聚类的数量,它会逐步形成聚类,直到最后只剩下一个聚类为止。这种技术在SciPy中也有实现(scipy.cluster.hierarchy)。