Python、Scikit-learn、K-means:参数 n_init 实际上有什么作用?

GH.*_*iou 0 python cluster-analysis machine-learning k-means scikit-learn

我是 Python 初学者。现在,我试图了解sklearn.cluster.KMeans中的参数n_init是什么

从文档中:

n_init:整数,默认值:10

k-means 算法使用不同质心种子运行的次数。最终结果将是n_init连续运行中惯性方面的最佳输出。

起初,我认为这意味着代码运行的次数,直到我发现这个有用的问题,然后我意识到这就是max_iter所做的。

参数n_init到底有什么作用?我真的不明白。

Moh*_*hif 5

在K-means中,质心的初始放置对其收敛起着非常重要的作用。有时,初始质心的放置方式使得在 K 均值的连续迭代期间,簇不断发生剧烈变化,甚至在收敛条件可能发生之前就max_iter达到了,我们留下了不正确的簇。因此,这样获得的聚类可能不正确。为了解决这个问题,引入了这个参数。的值n_iter基本上决定了算法应该使用多少组不同的随机选择的质心。对于每个不同的点集,对簇移动的距离进行比较,即,如果簇移动的距离短,那么我们很可能最接近地面实况/最佳解决方案。返回提供最佳性能的点及其各自的运行以及所有集群标签。

如果你有兴趣,还可以看看专门为处理这个问题而设计的k-means++算法。

您还可以查看此链接以获取有关初始质心问题的更多详细信息。