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=2
和n_init=15
,kmeans 将选择初始质心 15 次,并在 15 次运行中每次最多移动两次。
默认值为n_init=10
和max_iter=300
。这意味着初始质心将被选择 10 次,每次运行将使用多达 300 次迭代。这 10 次运行中最好的将是最终结果。
【讨论】:
这消除了我的困惑,谢谢!将在 6 分钟内接受 :) 如果有人使用n_init=10
和random_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’”
使用 sklearn 库中的 KMeans 实现彩色图像聚类分割
菜菜的sklearn课堂笔记聚类算法Kmeans-重要参数init & random_state & n_init:初始质心怎么放更好
详解聚类算法Kmeans-重要参数init & random_state & n_init:初始质心怎么放更好菜菜的sklearn课堂笔记