为什么np.corrcoef(x)和df.corr()给出不同的结果?



为什么使用np.corrcoef(x)和df.corr()时numpy相关系数矩阵和pandas相关系数矩阵不同?

x = np.array([[0, 2, 7], [1, 1, 9], [2, 0, 13]]).T
x_df = pd.DataFrame(x)
print("matrix:")
print(x)
print()
print("df:")
print(x_df)
print()
print("np correlation matrix: ")
print(np.corrcoef(x))
print()
print("pd correlation matrix: ")
print(x_df.corr())
print()

给出输出

matrix:
[[ 0  1  2]
[ 2  1  0]
[ 7  9 13]]
df:
0  1   2
0  0  1   2
1  2  1   0
2  7  9  13
np correlation matrix: 
[[ 1.         -1.          0.98198051]
[-1.          1.         -0.98198051]
[ 0.98198051 -0.98198051  1.        ]]
pd correlation matrix: 
0         1         2
0  1.000000  0.960769  0.911293
1  0.960769  1.000000  0.989743
2  0.911293  0.989743  1.000000

我猜它们是不同类型的相关系数?

@AlexAlex是对的,你在相关系数中采用了一组不同的数字。

考虑2x3矩阵

x = np.array([[0, 2, 7], [1, 1, 9]])
np.corrcoef(yx)

array([[1.        , 0.96076892],
[0.96076892, 1.        ]])

x_df = pd.DataFrame(yx.T)
print(x_df)
x_df[0].corr(x_df[1])

0  1
0  0  1
1  2  1
2  7  9
0.9607689228305227

,其中0.9607…etc数字匹配NumPy计算的输出。

如果你在计算中这样做,它相当于比较行而不是列的相关性。您可以使用.T或参数rowvar=False

修复NumPy版本。

相关内容

  • 没有找到相关文章

最新更新