【问题标题】:How to keep record of centroids of every iteration in k-means?如何在k-means中记录每次迭代的质心?
【发布时间】:2020-04-09 17:26:02
【问题描述】:

通过使用“kmeans.cluster_centers_”,我得到了每个集群的最终质心,但是如果我想跟踪所有迭代的所有质心并将结果存储到一个列表中该怎么办。

【问题讨论】:

    标签: python machine-learning scikit-learn data-science sklearn-pandas


    【解决方案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.MiniBatchKMeanspartial_fit 方法,其中 X 一次是一个样本。它将避免重新创建 KMeans 的实例并初始化质心。
    猜你喜欢
    • 2015-01-19
    • 2017-09-12
    • 2019-05-14
    • 2020-02-21
    • 1970-01-01
    • 1970-01-01
    • 2016-07-29
    • 1970-01-01
    • 2020-09-08
    相关资源
    最近更新 更多