简体   繁体   中英

Sklearn K means Clustering convergence

I am trying to construct clusters out of a set of data using the Kmeans algorithm from SkLearn . I want to know how one can determine whether the algorithm actually converged to a solution for one's data.

We feed in the tol parameter to define the tolerance for convergence but there is also a max_iter parameter that defines the number of iterations the algorithm will do for each run. I get that the algorithm may not always converge within the max_iter times of iterations. So is there any attribute or a function that I can access to know if the algorithm converged before the max_iter iterations ?

You have access to the n_iter_ field of the KMeans class, it gets set after you call fit (or other routines that internally call fit .

Not your fault for overlooking that, it's not part of the documentation, I just found it by checking the source code ;)

When I asked the question I was working with the class KMeans [ http://scikit-learn.org/stable/modules/generated/sklearn.cluster.KMeans.html].This does not have any function or attribute that allows you to access the n_iter of each run of the algorithm. Instead we could use the function k_means [ http://scikit-learn.org/stable/modules/generated/sklearn.cluster.k_means.html] instead of the class which has an option that enables returning the best n_iter . But this might have its own complications like having to write the predict by oneself etc.,

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM