K-means 没有正确绘制

K-means does not plotting correctly

我有一个数据可以进行 k 均值聚类:

from sklearn.cluster import KMeans
num_clusters = 5
km = KMeans(n_clusters = num_clusters, init="random", max_iter=100, n_init=1)
x=km.fit(X)
print(km.labels_)
Output:
 [3 0 1 ... 2 0 0]

然后我画了个图:

import matplotlib.pyplot as plt
%matplotlib inline
import seaborn as sns; sns.set() 
plt.scatter(X[:,0],X[:,1], c=km.labels_, cmap='rainbow')

但得到了这个结果:

我得到这个结果的原因可能是什么?

您正在绘制 X 的两个第一个维度(种族和性别),其中颜色是 K-means 找到的聚类。因此,您得到这些结果也就不足为奇了。

我相信您正在寻找的是通往 visually check that the clustering done by K-means makes sense 的途径。为此,您必须可视化 K-means 用来制作聚类的所有特征:但那是 41,我们的眼睛看不到超过 4 个。

一个有趣的解决方案是 dimension reduction: most of the information in the 41 features can be synthetized into less (e.g. 2). For example using principal component analysis (PCA),你可以 compress X 为两个特征。请尝试以下操作:

from sklearn.decomposition import PCA
X_pca = PCA.fit_transform(X, n_dim=2)
plt.scatter(X_pca[:,0], X_pca[:,1], c=km.labels_, cmap='rainbow')