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')
我有一个数据可以进行 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')