python - 使用 sklearn.cluster 的 K 均值聚类

标签 python scikit-learn cluster-analysis k-means

我在 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。

这是一个由 scatter_matrix 函数创建的示例图: enter image description here

关于python - 使用 sklearn.cluster 的 K 均值聚类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34113790/

相关文章:

java - Python 中的静态初始化器

cluster-analysis - 为什么 k-means 不给出全局最小值?

python - Vpython 使用 Spyder : how to prevent browser tab from opening?

python - 在范围内分配多个值

python-3.x - GridSearchCV 给出的结果与 LassoCV 的最佳 alpha 不同

python - scikit-learn 管道中具有递归特征消除的网格搜索返回错误

python - 从 scikit 管道中提取选定的特征名称

algorithm - EM算法的贝叶斯信息准则计算

algorithm - 使用 BIC 的 K 均值聚类中的最佳聚类数,(MATLAB)

python - 所有带有三个字符的五个字母的单词都重复?