如何在k-means中记录每次迭代的质心?
Posted
技术标签:
【中文标题】如何在k-means中记录每次迭代的质心?【英文标题】:How to keep record of centroids of every iteration in k-means? 【发布时间】:2020-04-09 17:26:02 【问题描述】:通过使用“kmeans.cluster_centers_”,我得到了每个集群的最终质心,但是如果我想跟踪所有迭代的所有质心并将结果存储到一个列表中该怎么办。
【问题讨论】:
【参考方案1】:Scikit-learn 不会为您提供中间结果,也无法通过标准 API 来做到这一点。 获取它们的一种巧妙方法是使用以下方法:
k_means = KMeans(max_iter=1)
for i in range(300):
k_means.fit(X)
intermediate_centers = k_means.cluster_centers_
k_means = KMeans(max_iter=1, init=intermediate_centers)
这不是一个快速的方法,我不建议在生产环境中运行它。
【讨论】:
另一种方法是使用sklearn.cluster.MiniBatchKMeans
和 partial_fit
方法,其中 X 一次是一个样本。它将避免重新创建 KMeans
的实例并初始化质心。以上是关于如何在k-means中记录每次迭代的质心?的主要内容,如果未能解决你的问题,请参考以下文章