我有一个“numpy”矩阵格式的非常大的矩阵(10x55678)。该矩阵的行对应于一些“主题”,列对应于单词(文本语料库中的独特单词)。该矩阵中的每个条目 i,j 都是一个概率,表示词 j 属于主题 i 的概率为 x。因为我使用的是 id 而不是真实的单词,而且矩阵的维度非常大,所以我需要以某种方式将其可视化。你建议使用哪种可视化?一个简单的情节?还是更复杂、信息更丰富的?(我问这些是因为我不知道有用的可视化类型)。如果可能的话,你能给我一个使用 numpy 矩阵的例子吗?谢谢
我问这个问题的原因是我想对我的语料库中的词-主题分布有一个大概的了解。欢迎任何其他方法
最佳答案
您当然可以使用 matplotlib 的 imshow
或 pcolor
方法来显示数据,但正如评论所提到的,如果不放大数据的子集可能很难解释数据。
a = np.random.normal(0.0,0.5,size=(5000,10))**2
a = a/np.sum(a,axis=1)[:,None] # Normalize
pcolor(a)
然后您可以根据单词属于一个聚类的概率对单词进行排序:
maxvi = np.argsort(a,axis=1)
ii = np.argsort(maxvi[:,-1])
pcolor(a[ii,:])
这里 y 轴上的单词索引不再等于原始顺序,因为事物已经排序。
另一种可能性是使用 networkx
包为每个类别绘制词簇,其中概率最高的词由更大或更靠近图中心的节点表示,忽略那些不属于该类别的词。这可能会更容易,因为您有大量的单词和少量的类别。
希望这些建议中的一个有用。
关于python - 在 python 中绘制二维矩阵,代码和最有用的可视化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5552641/