如何以 k 方式为每个集群获取 SSE?

How to get SSE for each cluster in k means?

我正在使用 sklearn.cluster KMeans 包并尝试为每个集群获取 SSE。我知道 kmeans.inertia_ 会给出所有集群的 SSE 总和。有什么方法可以为 sklearn.cluster KMeans 包中的每个集群获取 SSE?

我有一个包含 7 个属性和 210 个观察值的数据集。簇数为 3,想为每个簇计算 SSE。

没有使用 KMeans 对象的直接方法。但是,您可以自己轻松计算每个聚类的距离平方和。

import numpy as np

# ...

kmeans = KMeans(n_clusters=3).fit(X)

cluster_centers = [X[kmeans.labels_ == i].mean(axis=0) for i in range(3)]

clusterwise_sse = [0, 0, 0]
for point, label in zip(X, kmeans.labels_):
    clusterwise_sse[label] += np.square(point - cluster_centers[label]).sum()

这段代码并不是执行此操作的最有效方法,因为我的目标是清楚地展示概念。