如何以 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()
这段代码并不是执行此操作的最有效方法,因为我的目标是清楚地展示概念。
我正在使用 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()
这段代码并不是执行此操作的最有效方法,因为我的目标是清楚地展示概念。