我在Unsupervised Machine Learning: Flat Clustering上看到了关于K-means聚类的本教程,下面是代码:
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]
等。
我尝试将X
替换为存储在np.array()
中的10 x 750矩阵(750个功能)。
它创建的图表没有任何意义。
我怎样才能改变上面的代码来解决我的问题?
答案 0 :(得分:2)
实际上,直接可视化750维度数据是不可能的。
但还有另外一种方法可以解决,例如,首先使用PCA进行尺寸减小,以达到远低的尺寸,例如4. Scikit-learn也提供function for this。
然后你可以绘制一个绘图矩阵,每个绘图只有两个特征。使用Pandas
包,您可以使用scatter_matrix函数轻松绘制这些图。
请注意,在您的情况下,您只使用PCA进行可视化,您仍然应该在获取质心之后对原始数据执行K-means聚类,使用您之前创建的PCA模型为质心执行PCA。
答案 1 :(得分:0)
可视化750维度很难。
找出独立的k-means如何可视化。
但是不要期望k-means在这些数据上返回有意义的结果......它对预处理和标准化非常敏感,并且很可能你的750维度不是完全相同的连续数值标度。