有没有可能使用numpy得到一个没有逆矩阵的协方差矩阵?

63lcw9qa  于 2023-01-20  发布在  其他
关注(0)|答案(1)|浏览(184)

我有以下问题:我需要使用以下数据求协方差矩阵的逆矩阵:
x =[255、239、213]
y =[255、240、245]
我用numpy.cov()得到下面的协方差矩阵

cov_matrix = np.cov(np.array([[255.0, 255.0], [239.0, 240.0], [213.0, 245.0]]))

然后,当我使用numpu.linalg.inv()时,我得到这个错误

inv_matrix = np.linalg.inv(cov_matrix)

链接算法错误:奇异矩阵
这怎么可能呢?

9rbhqvlz

9rbhqvlz1#

您计算cov_matrix的方式错误。假设您对两个不同的变量 xy 有3个观测值:

x = [255, 239, 213]
y = [255, 240, 245]

cov_matrix = np.cov(x, y)
#array([[449.33333333,  88.33333333],
#       [ 88.33333333,  58.33333333]])

inv_matrix = np.linalg.inv(cov_matrix)
#array([[ 0.00316885, -0.00479855],
#       [-0.00479855,  0.02440923]])

如果你的 xy 是3D空间上的两个观测值,你计算cov_matrix的方法是正确的,但是你会得到一个零方差变量(第一个),因为var[(255,255)]=0,这会产生一个零行列式协方差矩阵,正如@碧玉Row已经说过的那样。

相关问题