使用 MatplotLib 可视化来自 SKlearn Kmeans 的稀疏输入

Posted

技术标签:

【中文标题】使用 MatplotLib 可视化来自 SKlearn Kmeans 的稀疏输入【英文标题】:Visualize Sparse Input from SKlearn Kmeans with MatplotLib 【发布时间】:2018-11-26 16:14:09 【问题描述】:
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.cluster import KMeans

cc_tfid = TfidfVectorizer().fit_transform(cc_corpus)
cc_km = KMeans(n_clusters = 3, init = 'k-means++', max_iter = 99, n_init = 4, verbose = False )
cc_km.fit(cc_tfid)

plt.scatter(cc_tfid[:, 0], cc_tfid[:, 1])
centroids = cc_km.cluster_centers_
plt.scatter(centroids[:, 0], centroids[:, 1], c='red', s=200, alpha=0.5)
plt.show()

我可以可视化质心,但不能可视化点,因为它们来自稀疏矩阵。请问这个怎么画?

【问题讨论】:

你能分享复制问题的数据吗? @MohammedKashif 给你dropbox.com/s/knwsoto5sa8blbg/cc_corpus?dl=0 【参考方案1】:

您可以使用.toarray() 将稀疏矩阵转换为密集数组:

plt.scatter(cc_tfid[:, 0].toarray(), cc_tfid[:, 1].toarray())

请注意,将所有点投影到 TF-IDF 向量空间的前两个维度上可能会导致非常无用的绘图。您最好通过 PCA 或 t-SNE 管道传输数据以将维数降低到 2。

【讨论】:

以上是关于使用 MatplotLib 可视化来自 SKlearn Kmeans 的稀疏输入的主要内容,如果未能解决你的问题,请参考以下文章

matplotlib.pyplot可视化训练结果

可视化简述平均密度图有啥作用

最完整的学习 Matplotlib 数据可视化

python使用matplotlib可视化线图(line plot)使用arrow函数在matplotlib可视化图像中添加箭头(drawing arrows in matplotlib)

python使用matplotlib可视化查看matplotlib可视化中不同字体形式不同字号斜体可视化的效果对比

不用写一行Python代码,就可以用Matplotlib绘图,妈妈再也不担心我不会作图了!