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

发布于 2021-01-29 16:23:36

我有一个非常大的矩阵(10x55678)为“
numpy”矩阵格式。此矩阵的行对应于某些“主题”,列对应于单词(来自文本语料库的唯一单词)。此矩阵中的每个条目i,j都是一个概率,这意味着单词j以概率x属于主题i。由于我使用的是ids而不是真实的单词,并且由于矩阵的维数很大,因此我需要以某种方式对其进行可视化。您建议使用哪种可视化?一个简单的情节?还是更复杂,更有用的信息?(我问这些原因是因为我对可视化的有用类型一无所知)。如果可能,您可以举一个使用numpy矩阵的例子吗?谢谢

我问这个问题的原因是我想对我的语料库中的单词主题分布有一个总体的了解。任何其他方法都可以

关注者
0
被浏览
198
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

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

    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程序包为每个类别绘制单词簇,其中概率最高的单词由更大或更接近图中心的节点表示,而忽略那些没有该类别成员资格的单词。因为您有大量的单词和少量的类别,所以这可能会更容易。

    希望这些建议之一是有用的。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看