相关疑难解决方法(0)

scipy.linalg.eig返回协方差矩阵的复特征值?

协方差矩阵的特征值应该是实数和非负的,因为协方差矩阵是对称的和半正定的.

但是,请看scipy的以下实验:

>>> a=np.random.random(5)
>>> b=np.random.random(5)
>>> ab = np.vstack((a,b)).T
>>> C=np.cov(ab)
>>> eig(C)
7.90174997e-01 +0.00000000e+00j,
2.38344473e-17 +6.15983679e-17j,
2.38344473e-17 -6.15983679e-17j,
-1.76100435e-17 +0.00000000e+00j,   
5.42658040e-33 +0.00000000e+00j
Run Code Online (Sandbox Code Playgroud)

但是,在Matlab中重现上面的例子可以正常工作:

a = [0.6271, 0.4314, 0.3453, 0.8073, 0.9739]
b = [0.1924, 0.3680, 0.0568, 0.1831, 0.0176]
C=cov([a;b])
eig(C)
-0.0000
-0.0000
 0.0000
 0.0000
 0.7902
Run Code Online (Sandbox Code Playgroud)

python matlab numpy linear-algebra scipy

15
推荐指数
2
解决办法
1万
查看次数

标签 统计

linear-algebra ×1

matlab ×1

numpy ×1

python ×1

scipy ×1