尝试在python中有效地计算相关矩阵

Posted

技术标签:

【中文标题】尝试在python中有效地计算相关矩阵【英文标题】:Trying to compute correlation matrix efficiently in python 【发布时间】:2017-11-28 05:39:31 【问题描述】:

我有一个非常大的 numpy 数据数组(100K 列乘 7K 行),我想计算列之间的所有成对 Pearson 相关性(~(100,000^2)/2 = 50 亿个相关性)。该数组几乎不适合 RAM,所以简单的方法不会削减它,我也想合理有效地做到这一点。有没有办法做到这一点(最好在 Python 中,尽管 C/C++ 也可以接受)?任何与此并行的方法也会更有帮助,因为我希望在合理的时间内完成它。

我已经尝试过使用numpy.corrcoef 函数,但这只使用了一个处理器,而且还引发了内存错误。

【问题讨论】:

【参考方案1】:

我正在使用DeepGraph 库来并行运行它。我按照他们那里的教程生成大型相关矩阵。它现在正在运行,在我的 8*3.4GHz 机器上似乎需要(仅!!)2 小时。我正在使用我 16GB 的大部分 RAM 来执行此操作,但似乎一切都保持在一起。

【讨论】:

你有任何代码可以显示如何从 (n,m) -> (m,m) 矩阵中走出来吗?

以上是关于尝试在python中有效地计算相关矩阵的主要内容,如果未能解决你的问题,请参考以下文章

如何在python中有效地计算(稀疏)位矩阵的矩阵乘积

在 python 中有效地处理一个大的 .txt 文件

在 python 2.7 中计算 TF-IDF(三行代码)。这段代码有效吗?

如何更有效地存储距离矩阵?

在Matlab中有效地计算成对平方欧几里德距离

如何有效地将稀疏矩阵列添加到另一个稀疏矩阵中的每一列?