我有以下数据框:
A B
0 1 5
1 2 6
2 3 7
3 4 8
我希望计算协方差
a = df.iloc[:,0].values
b = df.iloc[:,1].values
将numpy用于cov:
numpy.cov(a,b)
我明白了:
array([[ 1.66666667, 1.66666667],
[ 1.66666667, 1.66666667]])
对角线元素不应该是1吗?如何将对角线元素设为1?
答案 0 :(得分:1)
使用pd.DataFrame.corr
此外,当内置的Pandas方法为您完成工作时,无需使用Numpy。相关性将是一个,因为您已根据各自的标准偏差对不同系列进行了标准化。
df.corr()
A B
A 1.0 1.0
B 1.0 1.0
df.cov()
A B
A 1.666667 1.666667
B 1.666667 1.666667
其他海报是正确的。我们可以看到正确执行数学,我们得到
df.cov().div(df.std()).div(df.std(), 0)
A B
A 1.0 1.0
B 1.0 1.0
答案 1 :(得分:0)
答案 2 :(得分:0)
我相信您正在寻找的功能应该是numpy.corrcoef而不是numpy.cov。
相关矩阵与协方差矩阵之间的关系如下:
R[i,j] = C[i,j]/sqrt(C[i,i]*C[j,k])