从Python或R中获取大数据集的高度相关对的有效方法

Aka*_*all 4 python algorithm r

我有一个大型数据集(假设有10,000个变量,每个变量大约有1000个元素),我们可以把它想象成2D列表,类似于:

[[variable_1],
 [variable_2],
 ............
 [variable_n]
]
Run Code Online (Sandbox Code Playgroud)

我想从该数据中提取高度相关的变量对.我希望"高度相关"成为我可以选择的参数.

我不需要提取所有对,我不一定需要最相关的对.只要有一种有效的方法让我高度相关,我很高兴.

此外,如果变量不会出现在多个对中,那将会很好.虽然这可能不是至关重要的.

当然,有一种蛮力的方式来寻找这样的对,但对我来说它太慢了.

我已经google了一下,发现了一些关于这个问题的理论工作,但我找不到能够做到我想要的东西的包.我主要在python中工作,所以python中的一个包最有帮助,但是如果R中有一个包来做我正在寻找的东西,它会很棒.

有没有人知道在Python或R中执行上述操作的包?还是其他任何想法?

先感谢您

Cha*_*ase 9

你没有告诉我们你需要多快的速度,所以这是一个天真的解决方案.

只需计算相关矩阵,然后使用which获得您所关注的对的索引:

x <- matrix(rnorm(10000*1000), ncol = 10000)
corm <- cor(x)
out <- which(abs(corm) > 0.80, arr.ind=TRUE)
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用子集来摆脱对角线和冗余对:

out[out[,1] > out[,2]]
Run Code Online (Sandbox Code Playgroud)

在我的机器上计算相关矩阵大约需要75秒,该which()部分需要大约3秒钟...将冗余分组需要大约1.2秒.这太慢了吗?


Phi*_*per 0

10,000 x 1,000 听起来并不是什么大小问题。看看熊猫