首页 > 解决方案 > seaborn - heatmap - 31,000 方阵 sns.heatmap 死亡

问题描述

问题

seaborn 热图jupyter notebookpython脚本形式消亡。

文献综述

seaborn failed是我能找到的最接近类似问题的问题,但这不是完全相同的问题。我的只是一个独立的 seaborn 不会打印热图问题。

症状

import numpy as np; np.random.seed(0)
import seaborn as sns; sns.set()
import matplotlib.pyplot as plt

M=np.ones((32000,32000))

ax = sns.heatmap(M)
plt.show()

使用上面的代码,我kernel stopped running在 jupyter notebook 中收到一条消息,[1]+ Killed: 9 python bible_ai_construction.py在等待热图 20 分钟后在我的终端中收到一条消息。

总体目标

我希望能够调查数据集中每个状态与其他状态的关系。我提供了每个状态,以及与之相关的所有其他状态的列表,下面的小例子:

d={'a':['b','c','e'],'b':['a','c'],'c':['a'],'d':['a','e','b'],'e':['a','c']}
#set the new dictionary to one_hot_encoding representation
d={'a':[0,1,1,0,1],'b':[1,0,1,0,0],'c':[1,0,0,0,0],'d':[1,1,0,0,1],'e':[1,0,1,0,0]}
#construct matrix
M=np.matrix(list(map(lambda x:x, d.values())))
#apply M to seaborn heatmap, i.e., M.shape->(32000,32000)

标签: python-3.xjupyter-notebookseabornheatmap

解决方案


尺寸为 32000x32000 的矩阵将包含超过十亿个元素。在我的计算机上,这个 numpy 数组的内存增长到超过 8Gb。

Seaborn/Matplotlib 将无法绘制如此巨大的数组。

您应该对矩阵、分箱等执行一些聚合方法。

简单地绘制这么大的阵列没有任何优势,没有人能够从如此详细的图表中推断出任何信息。


推荐阅读