2016-12-01 313 views
1

我想了解类sklearn.cluster.KMeans的参数max_iter。Scikit学习,KMeans:如何使用max_iter

根据文档:

max_iter : int, default: 300 
Maximum number of iterations of the k-means algorithm for a single run. 

但在我看来,如果我有100个对象的代码必须运行100次,如果我有10.000对象的代码必须运行10.000倍cassify每个对象。另一方面,在所有物体上运行几次都是没有意义的。

我的误解是什么,我该如何解释这个参数?

回答

1

到这里看看:

https://www.naftaliharris.com/blog/visualizing-k-means-clustering/

每次单击更新重心,执行新的迭代。这是有道理的,因为当质心被移动时,与这些质心的距离也会改变,并且一些点可能会改变聚类。

+0

谢谢!它似乎是sklearn和Mac Queen的k-means之间的区别(他的出版物的第283页:http://projecteuclid.org/download/pdf_1/euclid.bsmsp/1200512992) –

+0

可以肯定地说,较大的max_iter的值,你会得到更好的结果? – Eddy

1

是的,你错误地解释了参数。

一次迭代是一次通过整个数据集。如果您有100个对象,则一次迭代会分配100个点。如果您有10000个对象,则一次迭代会处理10000个对象。

还有更多聪明的算法;但sklearn k-means在每次迭代中处理每个对象。