numpy eigh函数给出正定矩阵的负特征值

时间:2018-07-06 20:37:46

标签: python linear-algebra eigenvalue

我有一个正定的51 x 51协方差矩阵。我知道这是因为np.cholesky返回正确的cholesky分解。但是,当我使用eigh函数返回特征值/向量时,大约一半的特征向量为负,这没有任何意义。数据是从excel导入的,然后我使用以下方法制作协方差矩阵:

CovMat2 = np.cov(df.T)*252/10000

然后我请求特征值

eig_vals, eig_vecs = np.linalg.eigh(CovMat2)
print('Eigenvectors \n%s' %eig_vecs)
print('\nEigenvalues \n%s' %eig_vals)

我得到以下输出:

Eigenvalues 
[-1.35963506e-03 -1.09487110e-03 -5.00507744e-04 -4.76180253e-04
-4.26481890e-04 -3.65765795e-04 -3.21245207e-04 -2.90812021e-04
-2.49174935e-04 -2.47519558e-04 -2.20946393e-04 -2.11019230e-04
-2.01940366e-04 -1.99581473e-04 -1.87201389e-04 -1.74938799e-04
-1.41441186e-04 -1.24247169e-04 -1.11167101e-04 -9.78191552e-05
-8.75246993e-05 -8.69367038e-05 -8.36134890e-05 -8.03187245e-05
-7.36730798e-05 -5.70815773e-05 -4.65981850e-05 -2.92229574e-05
-2.77958421e-05 -1.84175309e-05 -7.45464337e-06  1.37165843e-05
 2.91872261e-05  3.93959482e-05  4.46749803e-05  6.07783927e-05
 7.42504887e-05  7.99764211e-05  9.49821563e-05  1.05894570e-04
 1.15379642e-04  1.37420008e-04  1.47812090e-04  2.07834453e-04
 2.63958555e-04  2.75403037e-04  3.01136833e-04  3.06428511e-04
 3.75549199e-04  1.96296188e-03  5.80951459e-03]

这没有任何意义。我在做什么错了?

0 个答案:

没有答案