不知道簇数的Kmeans? [重复]
data-mining
k-means
machine-learning
python
5
0

我试图在一组高维数据点(约50个维)上应用k均值,并且想知道是否有任何实现可以找到最佳数量的群集。

我记得在某处读过一种算法通常会这样做的方法,即,使集群间距离最大化,而使集群内距离最小,但是我不记得在哪里看到了。如果有人可以将我引向讨论此问题的任何资源,那就太好了。我目前正在将SciPy用于k均值,但是任何相关库也可以。

如果有其他方法可以实现相同或更好的算法,请告诉我。

参考资料:
Stack Overflow
收藏
评论
共 3 个回答
高赞 时间 活跃

一种方法是交叉验证

本质上,您选择数据的一个子集并将其聚类为k个聚类,然后询问与其他数据相比聚类的效果如何:您是否将数据点分配给相同的聚类成员,或者它们属于不同的成员集群?

如果成员资格大致相同,则数据很适合k个聚类。否则,请尝试其他k

另外,您可以进行PCA( 主成分分析 )以将50个尺寸减小到更易于处理的数字。如果PCA运行表明您的大多数方差来自50个维度中的4个,则可以在此基础上选择k ,以探索如何分配四个集群成员。

收藏
评论

查看此Wikipedia页面,了解确定数据集中的簇数

另外,您可能想尝试聚集式分层聚类 。这种方法不需要知道群集的数量,它将逐步形成群集的群集,直到只有一个群集存在为止。 SciPy( scipy.cluster.hierarchy )中也存在此技术。

收藏
评论

一种有趣的方法是Fred和Jain 收集证据的方法。这是基于将多次运行的k均值与大量聚类相结合,并将它们聚合为一个整体解决方案。该方法的优点包括在过程中确定簇的数量,并且最终簇不必一定是球形的。

收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号