如何获取 k 均值中每个簇的 SSE?

mac*_*oni 2 python k-means scikit-learn

我正在使用 sklearn.cluster KMeans 包并尝试为每个集群获取 SSE。据我了解,kmeans.inertia_将给出所有集群的 SSE 总和。有没有办法获取 sklearn.cluster KMeans 包中每个集群的 SSE?

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

rez*_*dev 5

没有直接的方法可以使用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()
Run Code Online (Sandbox Code Playgroud)

该代码片段并不是最有效的方法,因为我的目标是清楚地呈现这个概念。