栏目分类:
子分类:
返回
文库吧用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
文库吧 > IT > 面试经验 > 面试问答

计算两个多维数组之间的相关系数

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

计算两个多维数组之间的相关系数

两个2D数组之间的相关性(默认为“有效”大小写):

您可以

np.dot
像这样简单地使用矩阵乘法-

out = np.dot(arr_one,arr_two.T)

"valid"
两个输入数组的每个成对行组合(row1,row2)之间的默认情况的关联将对应于每个(row1,row2)位置处的乘法结果。


两个2D数组的行相关系数的计算:

def corr2_coeff(A, B):    # Rowwise mean of input arrays & subtract from input arrays themeselves    A_mA = A - A.mean(1)[:, None]    B_mB = B - B.mean(1)[:, None]    # Sum of squares across rows    ssA = (A_mA**2).sum(1)    ssB = (B_mB**2).sum(1)    # Finally get corr coeff    return np.dot(A_mA, B_mB.T) / np.sqrt(np.dot(ssA[:, None],ssB[None]))

这是基于此解决方案

How to apply corr2 functions in Multidimentional arrays inMATLAB

标杆管理

本部分将运行时性能与针对其他答案中列出的基于

generate_correlation_map
&循环
pearsonr
的方法的建议方法进行比较。(取自该函数
test_generate_correlation_map()
末尾没有值正确性验证代码的函数)。请注意,建议的方法的时间安排还包括在开始时进行检查,以检查两个输入数组中的列数是否相等,就像在其他答案中所做的那样。接下来列出运行时。

情况1:

In [106]: A = np.random.rand(1000, 100)In [107]: B = np.random.rand(1000, 100)In [108]: %timeit corr2_coeff(A, B)100 loops, best of 3: 15 ms per loopIn [109]: %timeit generate_correlation_map(A, B)100 loops, best of 3: 19.6 ms per loop

情况2:

In [110]: A = np.random.rand(5000, 100)In [111]: B = np.random.rand(5000, 100)In [112]: %timeit corr2_coeff(A, B)1 loops, best of 3: 368 ms per loopIn [113]: %timeit generate_correlation_map(A, B)1 loops, best of 3: 493 ms per loop

情况3:

In [114]: A = np.random.rand(10000, 10)In [115]: B = np.random.rand(10000, 10)In [116]: %timeit corr2_coeff(A, B)1 loops, best of 3: 1.29 s per loopIn [117]: %timeit generate_correlation_map(A, B)1 loops, best of 3: 1.83 s per loop

另一种循环

pearsonr based
方法似乎太慢,但是这里是一个小数据大小的运行时-

In [118]: A = np.random.rand(1000, 100)In [119]: B = np.random.rand(1000, 100)In [120]: %timeit corr2_coeff(A, B)100 loops, best of 3: 15.3 ms per loopIn [121]: %timeit generate_correlation_map(A, B)100 loops, best of 3: 19.7 ms per loopIn [122]: %timeit pearsonr_based(A, B)1 loops, best of 3: 33 s per loop


转载请注明:文章转载自 www.wk8.com.cn
本文地址:https://www.wk8.com.cn/it/640071.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 wk8.com.cn

ICP备案号:晋ICP备2021003244-6号