如何使用协方差矩阵计算sigma_1和sigma_2

问题描述

我正在阅读this article

在“ 协方差矩阵和SVD ”部分中,
有两个\ sigma,分别是\ sigma_1和\ sigma_2。
这些值分别为14.40.19
如何获得这些值?
我已经用Numpy计算了协方差矩阵:

import numpy as np

a = np.array([[2.9,-1.5,0.1,-1.0,2.1,-4.0,-2.0,2.2,0.2,2.0,1.5,-2.5],[4.0,-0.9,0.0,3.0,-5.0,-3.5,2.6,1.0,3.5,-4.7]])

cov_mat = (a.shape[1] - 1) * np.cov(a)
print(cov_mat)

# b = np.std(a,axis=1)**0.5
b = (a.shape[1] - 1) * np.std(a,axis=1)**0.5
# b = np.std(cov_mat,axis=1)
# b = np.std(cov_mat,axis=1)**0.5
print(b)

结果是:

[[ 53.46  73.42]
 [ 73.42 107.16]]
[15.98102431 19.0154037 ]

无论我做什么,我都无法获得14.40.19。 它们只是错误的值吗?

请帮助我。预先谢谢你。

解决方法

不知道为什么对协方差进行“非采样”,但是原始的np.cov输出就是您想要获得的特征值的地方:

np.linalg.eigvalsh(np.cov(a))

Out[]: array([ 0.19403958,14.4077786 ])