一种方法是交叉验证 。
本质上,您选择数据的一个子集并将其聚类为k个聚类,然后询问与其他数据相比聚类的效果如何:您是否将数据点分配给相同的聚类成员,或者它们属于不同的成员集群?
如果成员资格大致相同,则数据很适合k个聚类。否则,请尝试其他k 。
另外,您可以进行PCA( 主成分分析 )以将50个尺寸减小到更易于处理的数字。如果PCA运行表明您的大多数方差来自50个维度中的4个,则可以在此基础上选择k ,以探索如何分配四个集群成员。
0
0
另外,您可能想尝试聚集式分层聚类 。这种方法不需要知道群集的数量,它将逐步形成群集的群集,直到只有一个群集存在为止。 SciPy( scipy.cluster.hierarchy )中也存在此技术。
0
一种有趣的方法是Fred和Jain 收集证据的方法。这是基于将多次运行的k均值与大量聚类相结合,并将它们聚合为一个整体解决方案。该方法的优点包括在过程中确定簇的数量,并且最终簇不必一定是球形的。
0
我试图在一组高维数据点(约50个维)上应用k均值,并且想知道是否有任何实现可以找到最佳数量的群集。
我记得在某处读过一种算法通常会这样做的方法,即,使集群间距离最大化,而使集群内距离最小,但是我不记得在哪里看到了。如果有人可以将我引向讨论此问题的任何资源,那就太好了。我目前正在将SciPy用于k均值,但是任何相关库也可以。
如果有其他方法可以实现相同或更好的算法,请告诉我。