我在 Unsupervised Machine Learning: Flat Clustering 上看到了关于 K 均值聚类的教程,下面是代码:
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import style
style.use("ggplot")
from sklearn.cluster import KMeans
X = np.array([[1,2],[5,8],[1.5,1.8],[1,0.6],[9,11]])
kmeans = KMeans(n_clusters=3)
kmeans.fit(X)
centroid = kmeans.cluster_centers_
labels = kmeans.labels_
print (centroid)
print(labels)
colors = ["g.","r.","c."]
for i in range(len(X)):
print ("coordinate:" , X[i], "label:", labels[i])
plt.plot(X[i][0],X[i][1],colors[labels[i]],markersize=10)
plt.scatter(centroid[:,0],centroid[:,1], marker = "x", s=150, linewidths = 5, zorder =10)
plt.show()
在这个例子中,数组只有 2 个特征 [1,2],[5,8],[1.5,1.8]
等
我尝试用存储在 np.array()
中的 10 x 750 矩阵(750 个特征)替换 X
。
它创建的图表没有任何意义。
我怎样才能修改上面的代码来解决我的问题?
最佳答案
实际上,直接可视化 750 维数据是不可能的。
但是还有其他方法可以绕过,例如,先使用 PCA 进行降维到一个非常低的维度,比如 4。Scikit-learn 还提供了一个 function for this .
然后你可以画一个图矩阵,每个图只有两个特征。使用 Pandas
包,您可以很容易地用 scatter_matrix 绘制这些图功能。
请注意,在您只使用 PCA 进行可视化的情况下,您仍然应该对原始数据进行 K 均值聚类,在获得质心后,使用您之前创建的 PCA 模型对质心进行 PCA。
关于python - 使用 sklearn.cluster 的 K 均值聚类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34113790/