如何使用 skleans 的 KMeans 查看 n_init 每次迭代的集群质心

Posted

技术标签:

【中文标题】如何使用 skleans 的 KMeans 查看 n_init 每次迭代的集群质心【英文标题】:How to view cluster centroids for each iteration of n_init using skleans' KMeans 【发布时间】:2019-01-12 19:48:45 【问题描述】:

我目前正在尝试查看从 n_init 的每次迭代确定的 KMeans 的每次迭代所创建的质心(聚类中心)。到目前为止,我可以查看最终结果,但我希望在每次迭代中看到这些结果,因此我能够在每次迭代中使用 init='random' 和预设聚类中心时报告 KMeans 的差异。以下是我目前拥有的简要示例 \

#Creating model for Kmeans
Model=[]

Model=KMeans(n_clusters=5,max_iter=10,n_init=10)
#Data trials below represents my data for model training
Model.fit(Data_Trials)

#Get Created Clusters
labels=Model.predict(Data_Trials)
inertia=Model.inertia_

### Gets created Cluster centroids for Final iteration of n_init
zTrial=pd.DataFrame(Model.cluster_centers_)

如果有人知道如何在每次迭代中获取此信息,我将不胜感激。

【问题讨论】:

【参考方案1】:

您可以玩迭代次数。以这个 12 点为例

X = np.array([[1, 2], [1, 4], [1, 0],[1, 3], [1, 8], [1, 9],[2, 2], [2, 4], [2, 0],[4, 2], [4, 4], [4, 0]])

一次迭代

kmeans = KMeans(n_clusters=3, random_state=0,max_iter=1).fit(X)
kmeans.predict([[0, 0], [2, 2],[6, 4]])

结果我们有

 kmeans.cluster_centers_
array([[ 2.75      ,  0.5       ],
       [ 1.83333333,  3.16666667],
       [ 1.        ,  8.5       ]])

如果你增加迭代次数

kmeans = KMeans(n_clusters=3, random_state=0,max_iter=10).fit(X)
kmeans.cluster_centers_
array([[ 1.        ,  8.5       ],
       [ 2.75      ,  0.5       ],
       [ 1.83333333,  3.16666667]])

【讨论】:

我没想过以这种方式解决我的问题。我现在应该能够创建一个 for 循环测试 x 次迭代并存储每次通过的结果。谢谢你的建议

以上是关于如何使用 skleans 的 KMeans 查看 n_init 每次迭代的集群质心的主要内容,如果未能解决你的问题,请参考以下文章

使用sklean进行多分类下的二分类

如何在 Scikit KMeans 中使用预先计算的距离矩阵?

chapter3——逻辑回归手动+sklean版本

第十篇:K均值聚类(KMeans)

⭐K-Means和DBSCAN聚类算法——理论结合代码的实现

⭐K-Means和DBSCAN聚类算法——理论结合代码的实现