查找列表内列表之间的相关性时出现效率问题

如果我有两个小列表,并且想要找到list1内的每个列表与list2内的每个列表之间的相关性,则可以执行此操作

from scipy.stats import pearsonr

list1 = [[1,2,3],[4,5,6],[7,8,9],[10,11,12]]
list2 = [[10,20,30],[40,50,60],[77,78,79],[80,78,56]]

corrVal = []
for i in list1:
    for j in list2:
        corrVal.append(pearsonr(i,j)[0])

print(corrVal)

OUTPUT: [1.0, 1.0, 1.0, -0.90112711377916588, 1.0, 1.0, 1.0, -0.90112711377916588, 1.0, 1.0, 1.0, -0.90112711377916588, 1.0, 1.0, 1.0, -0.90112711377916588]

效果很好...就在附近。(编辑:只是注意到我上面的相关输出似乎给出了正确的答案,但它们重复了4次。不完全确定为什么这样做了)

但是,对于列表中具有1000个值的较大数据集,我的代码将无限期冻结,不输出任何错误,因此使我每次都强制退出IDE。有什么想法我要溜到这里吗?不确定对pearsonr函数可以处理的数量是否存在固有限制,或者我的编码是否引起了问题。

沃伦·韦克瑟

scipy模块scipy.spatial.distance包含一个称为Pearson距离的距离函数,该函数只是1减去相关系数。通过使用参数metric='correlation'scipy.spatial.distance.cdist,可以有效地计算皮尔逊相关系数为在两个输入每对载体。

这是一个例子。我将修改您的数据,以使系数变化更大:

In [96]: list1 = [[1, 2, 3.5], [4, 5, 6], [7, 8, 12], [10, 7, 10]]

In [97]: list2 = [[10, 20, 30], [41, 51, 60], [77, 80, 79], [80, 78, 56]]

因此,我们知道了什么,这是使用来计算的相关系数scipy.stats.pearsonr

In [98]: [pearsonr(x, y)[0] for x in list1 for y in list2]
Out[98]: 
[0.99339926779878296,
 0.98945694873927104,
 0.56362148019067804,
 -0.94491118252306794,
 1.0,
 0.99953863896044937,
 0.65465367070797709,
 -0.90112711377916588,
 0.94491118252306805,
 0.93453339271427294,
 0.37115374447904509,
 -0.99339926779878274,
 0.0,
 -0.030372836961539348,
 -0.7559289460184544,
 -0.43355498476205995]

在数组中查看它们更方便:

In [99]: np.array([pearsonr(x, y)[0] for x in list1 for y in list2]).reshape(len(list1), len(list2))
Out[99]: 
array([[ 0.99339927,  0.98945695,  0.56362148, -0.94491118],
       [ 1.        ,  0.99953864,  0.65465367, -0.90112711],
       [ 0.94491118,  0.93453339,  0.37115374, -0.99339927],
       [ 0.        , -0.03037284, -0.75592895, -0.43355498]])

这是使用计算得出的相同结果cdist

In [100]: from scipy.spatial.distance import cdist

In [101]: 1 - cdist(list1, list2, metric='correlation')
Out[101]: 
array([[ 0.99339927,  0.98945695,  0.56362148, -0.94491118],
       [ 1.        ,  0.99953864,  0.65465367, -0.90112711],
       [ 0.94491118,  0.93453339,  0.37115374, -0.99339927],
       [ 0.        , -0.03037284, -0.75592895, -0.43355498]])

使用cdist在嵌套循环中调用快得多pearsonr在这里,我将使用两个数组data1data2,每个数组的大小分别为(100,10000):

In [102]: data1 = np.random.randn(100, 10000)

In [103]: data2 = np.random.randn(100, 10000)

我将使用便捷的%timeit命令ipython来测量执行时间:

In [104]: %timeit c1 = [pearsonr(x, y)[0] for x in data1 for y in data2]
1 loop, best of 3: 836 ms per loop

In [105]: %timeit c2 = 1 - cdist(data1, data2, metric='correlation')
100 loops, best of 3: 4.35 ms per loop

嵌套循环的时间为836毫秒,而嵌套循环的时间为4.35毫秒cdist

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

R data.table中各组之间的相关性

来自分类Dev

python中数组之间的相关性

来自分类Dev

查找图像之间的空间相关性应使用哪种算法?

来自分类Dev

查找变量和类变量之间的相关性

来自分类Dev

两个数据框之间的相关性

来自分类Dev

for循环可在2个不同的数据框中查找相同变量(列)之间的相关性

来自分类Dev

svg feGaussianBlur:stdDeviation和大小之间的相关性

来自分类Dev

根据语义相似性/相关性从列表中删除重复项

来自分类Dev

在列表内的列表之间查找相关性的效率问题

来自分类Dev

查找其名称被指定为另一个数据框中的值的列之间的相关性

来自分类Dev

如何找到两个图像之间的相关性

来自分类Dev

NA介于值之间->错误的相关性和情节?

来自分类Dev

R中因素之间的Spearman等级相关性

来自分类Dev

查找多个变量在每组行之间的相关性

来自分类Dev

计算表中各列之间的相关性

来自分类Dev

R-考虑重叠日期查找多行之间的相关性

来自分类Dev

R-每个文档的文章之间的相关性

来自分类Dev

如何将相关性应用于指定的向量,从而遍历文件列表?

来自分类Dev

使用多个列表时出现问题

来自分类Dev

加载链接列表时出现问题

来自分类Dev

在C中使用void指定空参数列表的相关性

来自分类Dev

遍历文件列表并在R中计算它们之间的相关性

来自分类Dev

列表内列表的问题

来自分类Dev

角度模块相关性列表是否有序?

来自分类Dev

遍历列表或数组时出现内存问题

来自分类Dev

不同矩阵之间的相关性R

来自分类Dev

在两个以上数据框内的相同变量的嵌套列表内循环相关性测试

来自分类Dev

使用 YCSB 进行基准测试时吞吐量和延迟之间的相关性

来自分类Dev

尝试查找列表的唯一编号时出现问题

Related 相关文章

  1. 1

    R data.table中各组之间的相关性

  2. 2

    python中数组之间的相关性

  3. 3

    查找图像之间的空间相关性应使用哪种算法?

  4. 4

    查找变量和类变量之间的相关性

  5. 5

    两个数据框之间的相关性

  6. 6

    for循环可在2个不同的数据框中查找相同变量(列)之间的相关性

  7. 7

    svg feGaussianBlur:stdDeviation和大小之间的相关性

  8. 8

    根据语义相似性/相关性从列表中删除重复项

  9. 9

    在列表内的列表之间查找相关性的效率问题

  10. 10

    查找其名称被指定为另一个数据框中的值的列之间的相关性

  11. 11

    如何找到两个图像之间的相关性

  12. 12

    NA介于值之间->错误的相关性和情节?

  13. 13

    R中因素之间的Spearman等级相关性

  14. 14

    查找多个变量在每组行之间的相关性

  15. 15

    计算表中各列之间的相关性

  16. 16

    R-考虑重叠日期查找多行之间的相关性

  17. 17

    R-每个文档的文章之间的相关性

  18. 18

    如何将相关性应用于指定的向量,从而遍历文件列表?

  19. 19

    使用多个列表时出现问题

  20. 20

    加载链接列表时出现问题

  21. 21

    在C中使用void指定空参数列表的相关性

  22. 22

    遍历文件列表并在R中计算它们之间的相关性

  23. 23

    列表内列表的问题

  24. 24

    角度模块相关性列表是否有序?

  25. 25

    遍历列表或数组时出现内存问题

  26. 26

    不同矩阵之间的相关性R

  27. 27

    在两个以上数据框内的相同变量的嵌套列表内循环相关性测试

  28. 28

    使用 YCSB 进行基准测试时吞吐量和延迟之间的相关性

  29. 29

    尝试查找列表的唯一编号时出现问题

热门标签

归档