【问题标题】:plot clusters of kmeans of sparse matrix绘制稀疏矩阵的 kmeans 簇
【发布时间】:2020-10-29 16:25:06
【问题描述】:

我有一个 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_
                                   

【问题讨论】:

  • 您能向我们展示您的作品吗?
  • 我编辑了我的帖子,显示了我所做的事情。

标签: python matplotlib scikit-learn


【解决方案1】:

如果没有数据集,我建议如下:

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

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

  • 使用plt.scatter(centroids[:,0], centroids[:,1], marker='D') 跟随此操作,以查看带有菱形的质心的位置。

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

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

【讨论】:

  • 感谢您的回答,但是当我将矩阵转换为 numpy 数组时,我得到了一个包含很多零的 numpy 数组,如下所示:[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.16 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.41 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.43 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.1 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.01]
  • 数据集如下所示: 0 11:0.38 21:0.89 1 11:0.3 21:0.92 2 11:0.36 21:0.78 3 11:0.3 21:0.8 4 11:0.32 21:0.82 5 11:0.2 21:0.64 31:0.25 41:0.03 6 31:0.81 41:0.32 7 31:0.79 41:0.33 8 31:0.81 41:0.3 9 31:0.88 41:0.25
猜你喜欢
  • 2017-07-01
  • 1970-01-01
  • 2014-05-22
  • 2020-03-20
  • 1970-01-01
  • 2018-01-19
  • 2019-10-31
  • 2015-09-28
  • 2012-01-10
相关资源
最近更新 更多