【问题标题】:K means clustering in scikit learnK 表示 scikit learn 中的聚类
【发布时间】:2017-04-06 22:35:21
【问题描述】:

我正在尝试在 scikit learn 中进行 k 表示聚类。代码:

from sklearn.cluster import KMeans
kmeans = KMeans(n_clusters = 10)
x = df.values
kmeans.fit(x.reshape(-1, 1))

如果参数n_init = random,它选择随机初始质心。有没有办法获取使用的初始质心?

【问题讨论】:

    标签: python scikit-learn cluster-analysis k-means


    【解决方案1】:

    只有在将KMeans 对象拟合到您的数据后,您才能获得集群中心。

    小技巧!

    因此,您可以将参数max_iter 设置为1。默认情况下,它设置为300,然后中心可能会在每次迭代时发生变化。

    如果您只使用一次迭代,算法会将每个样本分配给初始中心,然后它会停止,而不是更新中心。

    因此调用.cluster_centers_ 将返回初始质心!

    【讨论】:

    • 我再问一个问题,如果 max_iter = 300,在 ecah 迭代中心发生变化后,调用 '.cluster_centers_ ' 将给出最新的质心(第 300 次迭代的质心)?
    • @vikky 你明白了;)
    • km = KMeans(init=cluster_centers, n_init=1, max_iter=1) print(km.cluster_centers_) 仍然出现同样的错误
    • 你需要先拟合你的数据
    【解决方案2】:

    是的,我假设您可以先尝试centroids = kmeans.cluster_centers_,然后再致电fit()

    【讨论】:

    • 这会获取库使用的初始质心吗?
    • AttributeError: 'KMeans' 对象没有属性 'cluster_centers_' 是我得到的
    • 抱歉,在拨打fit()cluster_centers_ 将无法使用。我将创建一个质心数组并使用它来创建集群。 kmeans = KMeans(init=centroids_array)。这样我们就可以自定义质心的初始化方式。再次抱歉没有验证我的回答。
    猜你喜欢
    • 2012-06-19
    • 2021-01-19
    • 2015-02-20
    • 2015-11-20
    • 2019-04-15
    • 2021-11-04
    • 2018-05-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多