解释 K-Means cluster_centers_ 输出

Posted

技术标签:

【中文标题】解释 K-Means cluster_centers_ 输出【英文标题】:Interpreting K-Means cluster_centers_ output 【发布时间】:2020-07-26 06:38:35 【问题描述】:

我很难解释 cluster_centers_ 数组输出的结果。

考虑以下 MWE:

from sklearn.cluster import KMeans
from sklearn.datasets import load_iris
import numpy as np

# Load the data
iris = load_iris()
X, y = iris.data, iris.target

# shuffle the data
shuffle = np.random.permutation(np.arange(X.shape[0]))
X = X[shuffle]

# scale X
X = (X - X.mean()) / X.std()

# plot K-means centroids
km = KMeans(n_clusters = 2, n_init = 10)  # establish the model

# fit the data
km.fit(X);

# km centers
km.cluster_centers_
array([[ 1.43706001, -0.29278015,  0.75703227, -0.89603057],
       [ 0.78079175, -0.04797174, -0.96467783, -1.60799713]])

在上面的数组中,我不清楚如何使用这些值来识别集群中心。我告诉 K-Means 给我 2 个聚类,但它为我返回 8 个值,但它们不能是所有 4 个特征的 x、y 坐标。

如果我绘制1.43706001, -0.29278015;这很直观,它是一个位于预测集群中间的集群。

如果是这种情况,我的第二个集群是0.78079175, -0.04797174,那么第 2 列和第 3 列中的值是什么?

【问题讨论】:

【参考方案1】:

来自文档 cluster_centers_: ndarray of shape (n_clusters, n_features)

iris 数据库有 4 个特征(X.shape = (150,4)),您希望 Kmeans 在 4 维特征空间中获得两个质心。 cluster_centers_ 正是这样做的,list 的每个条目对应于 R^4 中的质心坐标。

【讨论】:

在cluster_centers_数组中,数组中的第一个条目是否对应标签0,第二个条目是否对应标签2,像这样 有点。第一个条目 - 标签 1,第二个条目 - 标签 2(你只是混合了 0-indexed 和 1-indexed)

以上是关于解释 K-Means cluster_centers_ 输出的主要内容,如果未能解决你的问题,请参考以下文章

使用 TF-IDF 在 K-Means 中绘制质心

sklearn KMeans 中 KMeans.cluster_centers_ 的值

用 PCA 解释 K-Means 聚类 - Python

cluster_centers_ 的排序/索引在 KMeans 聚类 SKlearn 中代表啥

解释 K-means 的结果

Bisecting k-means 聚类算法解释