使用EmpiricalCovariance
开发高维数据的协方差矩阵时,我希望该矩阵的对角线(从左上角到右下角)全为1,当然变量总是与自身完美相关。然而,这种情况并非如此。为什么不呢?
如您所见,对角线比大多数数据要亮,但是不如最亮的点亮。
答案 0 :(得分:0)
如果查看它调用的EmpiricalCovariance类和实用程序implementation的function,您会发现np.cov(data, bias=1)
与EmpiricalCovariance.fit(...).covariance_
几乎相同。
让我们做一些实验:
from sklearn.covariance import EmpiricalCovariance
import numpy as np
np.random.seed(10)
data = np.random.rand(10, 10)
np.allclose(EmpiricalCovariance().fit(data).covariance_, np.cov(data.T, bias=1))
# returns True !
从numpy's official docs中您可以看到协方差矩阵的对角元素是行方差:
np.isclose(np.var(data[0]), np.cov(data, bias=1)[0][0])
# returns TRUE
答案 1 :(得分:0)
请参阅此相关主题from another SO post
总结:对角线中看到的是方差,而不是相关性