首页 > 解决方案 > 绘制稀疏矩阵的 kmeans 簇

问题描述

我有一个 python 脚本,它对 svmlight 格式的数据文件进行聚类。我使用该函数sklearn.datasets.load_svmlight_file从数据文件中加载数据。我知道这个函数返回一个稀疏矩阵。我需要散点图,请任何人帮助我。这就是我所做的:

import sklearn.datasets
import sys
from sklearn.cluster import KMeans
dataFilename = sys.argv[1]
X, y = sklearn.datasets.load_svmlight_file(dataFilename)
kmeans = KMeans(n_clusters = 3)
kmeans.fit(X)
labels = kmeans.labels_
print(labels)
centroids = kmeans.cluster_centers_
                                   

标签: pythonmatplotlibscikit-learn

解决方案


如果没有数据集,我会建议以下内容:

  • 由于load_svmlight_file()返回一个稀疏矩阵,因此在拟合模型之前使用转换X为 NumPy 数组。samples = X.toarray()

  • 使用以下方法绘制数据集的两个特征(例如): plt.scatter(samples[:,0], samples[:,1], c=labels). 这会根据它们的预测标签对集群进行着色。

  • 按照这个plt.scatter(centroids[:,0], centroids[:,1], marker='D')来查看带有菱形的质心的位置。

请注意,它表示一个数组,其中包含数据集第 th 个特征的samples[:,n]样本值。n

我希望这有帮助。如果没有,请告诉我。


推荐阅读