我是Python的初学者。现在,我试图了解来自sklearn.cluster.KMeans的参数 n_init
来自文档:
n_init :int,默认值:10
使用不同质心种子运行k-means算法的时间。根据惯性,最终结果将是n_init连续运行的最佳输出。
起初,我认为这意味着代码运行的时间,直到我找到helpful question,并且我意识到这是 max_iter 所做的。
参数 n_init 到底是做什么的?我真的不明白。
答案 0 :(得分:3)
在K-means中,质心的初始位置在其收敛中起着非常重要的作用。有时,初始质心的放置方式使得在K-连续迭代期间群集保持大幅度变化,甚至在收敛条件发生之前,达到max_iter
并且我们留下错误簇。因此,在此获得的聚类可能不正确。为了克服这个问题,引入了这个参数。 n_iter
的值基本上决定算法使用的随机选择的质心集合的数量。对于每个不同的点集,比较群集移动的距离,即如果群集行进的距离小于我们最接近地面实况/最佳解决方案的可能性。返回提供最佳性能的点及其各自的运行以及所有簇标签。
如果您有兴趣,还可以查看专为解决此问题而设计的k-means++ algorithm。
您还可以查看有关初始质心问题的this link for more details。