numpy.corrcoef() 对返回值的怀疑



我需要两个矩阵 X,Y 之间的皮尔逊相关系数。 如果我运行代码corr=numpy.corrcoef(X,Y)我的输出是一个具有相关系数的矩阵。 但是,我需要单个值来表示两个矩阵之间的相关性。

我刚刚在这个 kennytm 的答案上看到,要有一个值,我应该写numpy.corrcoef(X,Y)[1,0].

这个解决方案有效,但我不明白方括号内的数字是什么意思,以及为什么将它们添加为一个值的结果。

我将 1 和 0 解释为系数的限制,但是矩阵内的所有系数会发生什么? 对它们计算什么类型的操作以获得单个值? 例如,如果我更改方括号内的数字[1,-1](相关性、反相关),则corr的值会发生变化,所以我对应该在括号内使用哪些数字感到困惑。

numpy.corrcoef返回一个矩阵,其中包含每对行的相关系数。例如,A.shape=(3,3)B.shape=(3,3)numpy.corrcoef(A,B)将返回一个(6,6)矩阵,因为有 36 行组合。 请注意,它是一个对称矩阵,因为它返回(例如)A[1],B[1](索引[1,4])和B[1],A[1](索引[4,1])的相关性。当你有两个一维数组时,你会得到一个(2,2)矩阵:第一个数组与自身[0,0]的相关性,第一个数组与第二个数组[0,1]的相关性,第二个数组与第一个数组[1,0]的相关性以及第二个数组与自身[1,1]的相关性。

import numpy as np
A = np.random.randint(low=0, high=99, size=(3,3))
B = np.random.randint(low=0, high=99, size=(3,3))
C = np.corrcoef(A,B)
print(C[1,4]==np.corrcoef(A[1],B[1])[0,1]) # True

如果需要二维相关性(如图像之间的相关性),请展平二维数组,以便为每个数组获得一行。然后,该相关矩阵的元素[0,1][1,0]将是二维数组如何彼此完全关联。

print(np.corrcoef(A.flatten(), B.flatten())[0,1])

相关内容

  • 没有找到相关文章

最新更新