使用 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 的稀疏输入的主要内容,如果未能解决你的问题,请参考以下文章
python使用matplotlib可视化线图(line plot)使用arrow函数在matplotlib可视化图像中添加箭头(drawing arrows in matplotlib)