Sklearn Kmeans参数混淆?

Posted

技术标签:

【中文标题】Sklearn Kmeans参数混淆?【英文标题】:Sklearn Kmeans parameter confusion? 【发布时间】:2017-04-15 05:01:03 【问题描述】:

所以我可以像下面这样运行sklearn kmeans

kmeans = KMeans(n_clusters=3,init='random',n_init=10,max_iter=500)

但我对参数的含义有点困惑

所以n_init 说:

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

max_iter 说:

k-means 算法单次运行的最大迭代次数。

但我不完全明白这意味着什么。在给定一组初始质心的情况下,n_init 是质心靠近点均值的次数吗?

max_iter 是整个算法以新的初始质心运行的次数吗?

例如,对于max_iter=2,n_init=15,kmeans 将选择初始质心,然后将这些质心移动 15 次并得出聚类结果。然后 kmeans 将再次选择初始质心,移动这些质心 15 次,然后停止。那么,它会从两次运行中挑选出最好的集群吗?

感谢您的帮助!

[编辑] 还是与我在这里的完全相反...?

【问题讨论】:

【参考方案1】:

使用max_iter=2n_init=15,kmeans 将选择初始质心 15 次,并在 15 次运行中每次最多移动两次。

默认值为n_init=10max_iter=300。这意味着初始质心将被选择 10 次,每次运行将使用多达 300 次迭代。这 10 次运行中最好的将是最终结果。

【讨论】:

这消除了我的困惑,谢谢!将在 6 分钟内接受 :) 如果有人使用n_init=10random_state = 1234,那么回答没有意义。你怎么能随机初始化 10 倍具有固定random_state 的质心??? @seralouk 在我的理解中使用 random_state 的数字将确保使用相同的 10 个随机数(但 10 个不同的随机数)。

以上是关于Sklearn Kmeans参数混淆?的主要内容,如果未能解决你的问题,请参考以下文章

sklearn.cluster.KMeans 如何处理缺少质心(可用质心小于 n_clusters)的 init ndarray 参数?

sklearn.cluster.KMeans 得到“TypeError:__init__() 得到了一个意外的关键字参数‘n_jobs’”

机器学习sklearn19.0聚类算法——Kmeans算法

使用 sklearn 库中的 KMeans 实现彩色图像聚类分割

菜菜的sklearn课堂笔记聚类算法Kmeans-重要参数init & random_state & n_init:初始质心怎么放更好

详解聚类算法Kmeans-重要参数init & random_state & n_init:初始质心怎么放更好菜菜的sklearn课堂笔记