Perl:计算大量数据的相关系数时的编程效率

标签 perl memory performance dataset

编辑:链接现在应该可以工作了,很抱歉遇到麻烦
我有一个看起来像这样的文本文件:

名称、测试 1、测试 2、测试 3、测试 4、测试 5
鲍勃, 86, 83, 86, 80, 23
爱丽丝,38、90、100、53、32
吉尔,49、53、63、43、23 岁。

我正在编写一个程序,给出这个文本文件,它将生成一个 Pearson 相关系数表,如下所示,其中条目 (x,y) 是人员 x 和人员 y 之间的相关性:

姓名,鲍勃,爱丽丝,吉尔
鲍勃, 1, 0.567088412588577, 0.899798494392584
爱丽丝, 0.567088412588577, 1, 0.812425393004088
吉尔, 0.899798494392584, 0.812425393004088, 1

我的程序有效,除了我提供给它的数据集有 82 列,更重要的是,有 54000 行。当我现在运行我的程序时,它非常慢,并且出现内存不足错误。有没有一种方法可以首先消除内存不足错误的任何可能性,并使程序运行效率更高一些?代码在这里:code .

谢谢你的帮助,
jack

编辑:如果其他人正在尝试进行大规模计算,请将您的数据转换为 hdf5 格式。这就是我最终为解决这个问题所做的。

最佳答案

您将必须至少进行 54000^2*82 次计算和比较。当然,这需要很多时间。你把所有的东西都保存在内存中了吗?这也将是相当大的。它会更慢,但如果您可以将用户保留在数据库中并根据所有其他用户计算一个用户,然后继续下一个并针对所有其他用户而不是一个庞大的数组或散列进行计算,它可能会使用更少的内存。

关于Perl:计算大量数据的相关系数时的编程效率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/675021/

相关文章:

Perl `use` - 导入没有被调用两次?

perl - 根据标题关闭选项卡

Perl HTML 解析器

c++ - 进程的内存空间从哪里开始,到哪里结束?

尽管增加,PHP 内存限制已耗尽

android - 在 Service 中发送广播并在 AndroidTestCase 中接收

performance - JMeter的 'loop count'行为

perl - 如何使用 perl 解释器转义单引号?

memory - 什么是分页?

java - 新的 BigInteger(String) 性能/复杂性