如何将seaborn.clustermap与大型(20 000个条目)数据集一起使用?

问题描述 投票:0回答:1

我经常使用

sns.clustermap
,并且我非常喜欢它作为一个简单的工具来概述大量数据(在我的例子中是时间序列数据,大多数是几百个条目)。

所以我想我也会喜欢一些更大的数据,但好吧,不是那么多......

我不介意在我的机器上计算大约需要 6 个小时,但是这 6 个小时没有得到任何输出是相当烦人的。

我确实显示了树状图,但应包含矩阵的字段仍为空。现在,假设seaborn没有处理像素之间插值的内置例程,这有点有意义。假设行的高度为 1 像素,则矩阵本身的高度就应为 20 000 像素,数据集包含 20 000 个条目。但是如果我增加我的

figsize
来表示
figsize=(400,400)
它需要一整天然后崩溃,因为它内存不足和/或因为我的数字太大(显然,对 png 文件的大小有硬性限制) .

有没有办法用这么大的数据集生成聚类图?

当我使用small图像尺寸运行它时,我可以生成所示的空图片,例如:

correlations = data.corr()
clusterplot = sns.clustermap(correlations, center=0
                            linewidths=0.4, figsize=(150, 150))
clusterplot.savefig('Cluster.png', facecolor='white', transparent=False)

由于这需要相当长的时间并且不会产生错误,我假设

clusterplot
包含聚类图,但我怎样才能得到它呢?假设有办法,我是否也可以在没有任何输出的情况下计算 clustermap ? IE。像
clusterplot = sns.clustermap(correlations, center=0, showmap=False)
之类的东西可以节省一些时间吗?

python seaborn cluster-analysis
1个回答
0
投票

我认为你的白色是由于

linewidths=0.4
。白色背景只是覆盖您实际数据的线条。

这是一个可重现的小示例:

N = 6
df = pd.DataFrame(np.random.random((N, N)))
sns.clustermap(data=df, linewidths=5, figsize=(3, 3))

N = 60
df = pd.DataFrame(np.random.random((N, N)))
sns.clustermap(data=df, linewidths=5, figsize=(3, 3))

只需将宽度设置为零:

linewidths=0

N = 60
df = pd.DataFrame(np.random.random((N, N)))
sns.clustermap(data=df, linewidths=0, figsize=(3, 3))

要从现有图表中获取基础数据,请使用:

clusterplot.data
© www.soinside.com 2019 - 2024. All rights reserved.