我很好奇,所以想问一下这个问题。为什么当我手动计算数据集的协方差矩阵时,我的值与numpy的值略有不同?
我有两个数据集X
和Y
data = io.loadmat("datafile.mat")['data']
X = data[:,0]
Y = data[:,1]
协方差矩阵可以通过以下方式计算(查看X和X,X和Y,Y和X等之间的相关性)。
n = len(X)
corXX = np.var(X)
corXY = (1/n)*np.dot(X - np.mean(X), Y - np.mean(Y))
corYY = np.var(Y)
covariance = np.array([[corXX, corXY], [corXY, corYY] ])
对于我的数据集,这给了我:
array([[ 1.722105 , 5.34104265],
[ 5.34104265, 17.72717759]])
如果使用numpy的协方差函数 covariance = np.cov(X,Y)
,则会得到以下结果:
array([[ 1.7395 , 5.39499258],
[ 5.39499258, 17.90623999]])
有些相似,但并不完全相同...
np.cov
的参数中添加bias=True
,然后再次进行比较。 - Ignacio Vergara Kausel