python - 在 python 中绘制二维矩阵,代码和最有用的可视化

标签 python numpy matplotlib plot visualization

我有一个“numpy”矩阵格式的非常大的矩阵(10x55678)。该矩阵的行对应于一些“主题”,列对应于单词(文本语料库中的独特单词)。该矩阵中的每个条目 i,j 都是一个概率,表示词 j 属于主题 i 的概率为 x。因为我使用的是 id 而不是真实的单词,而且矩阵的维度非常大,所以我需要以某种方式将其可视化。你建议使用哪种可视化?一个简单的情节?还是更复杂、信息更丰富的?(我问这些是因为我不知道有用的可视化类型)。如果可能的话,你能给我一个使用 numpy 矩阵的例子吗?谢谢

我问这个问题的原因是我想对我的语料库中的词-主题分布有一个大概的了解。欢迎任何其他方法

最佳答案

您当然可以使用 matplotlib 的 imshowpcolor 方法来显示数据,但正如评论所提到的,如果不放大数据的子集可能很难解释数据。

a = np.random.normal(0.0,0.5,size=(5000,10))**2
a = a/np.sum(a,axis=1)[:,None]  # Normalize

pcolor(a)

Unsorted random example

然后您可以根据单词属于一个聚类的概率对单词进行排序:

maxvi = np.argsort(a,axis=1)
ii = np.argsort(maxvi[:,-1])

pcolor(a[ii,:])

enter image description here

这里 y 轴上的单词索引不再等于原始顺序,因为事物已经排序。

另一种可能性是使用 networkx 包为每个类别绘制词簇,其中概率最高的词由更大或更靠近图中心的节点表示,忽略那些不属于该类别的词。这可能会更容易,因为您有大量的单词和少量的类别。

希望这些建议中的一个有用。

关于python - 在 python 中绘制二维矩阵,代码和最有用的可视化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5552641/

相关文章:

python - 如何在 View 中捕获 django.http.request.DisallowedHost?

python - 连续在numpy数组中添加值,不循环

python - matplotlib 中文本的部分着色

python - 如何对齐networkx中的节点和边

python - Matplotlib - 为什么我的箭袋图总是关闭?

python - 从 pandas 列中提取对象属性

python - 将单列数据帧合并到另一个数据帧,而无需任何公共(public)键

python - 将嵌入式 Python IO 重定向到使用 AllocConsole Win32 应用程序创建的控制台

python - 如何在没有 OpenCV 的情况下通过 ROS 发布 PIL 图像二进制文件?

python - model.fit(...) 和 "Failed to convert a NumPy array to a Tensor"