我有一个336x336共保矩阵,我用numpy计算了特征值和特征向量,如下所示。在
evals, evecs = np.linalg.eig(cov)
idx = evals.argsort()
evals = evals[idx]
evecs = evecs[:,idx]
问题是evals中的最后一个值与其他值相比很奇怪。 像这样:
^{pr2}$最高特征值为1.69419875e-02,与其他值相比非常高。我检查了所有的336个特征值,除了这一个几乎都在同一范围内。在
有人能告诉我为什么会这样吗。在
你好,先生, 谢谢你的答复。我已经使用您建议的精度生成了8x8协方差矩阵。现在看起来像这样:
[[ 0.00e+00 0.00e+00 0.00e+00 0.00e+00 0.00e+00 0.00e+00 0.00e+00 0.00e+00]
[ 0.00e+00 4.62e-05 9.25e-05 4.62e-05 0.00e+00 -9.25e-05 -4.62e-05 -4.62e-05]
[ 0.00e+00 9.25e-05 1.85e-04 9.25e-05 0.00e+00 -1.85e-04 -9.25e-05 -9.25e-05]
[ 0.00e+00 4.62e-05 9.25e-05 4.62e-05 0.00e+00 -9.25e-05 -4.62e-05 -4.62e-05]
[ 0.00e+00 0.00e+00 0.00e+00 0.00e+00 0.00e+00 0.00e+00 0.00e+00 0.00e+00]
[ 0.00e+00 -9.25e-05 -1.85e-04 -9.25e-05 0.00e+00 1.85e-04 9.25e-05 9.25e-05]
[ 0.00e+00 -4.62e-05 -9.25e-05 -4.62e-05 0.00e+00 9.25e-05 4.62e-05 4.62e-05]
[ 0.00e+00 -4.62e-05 -9.25e-05 -4.62e-05 0.00e+00 9.25e-05 4.62e-05 4.62e-05]]
对于第1列和第1行,我不知道为什么都是零,我还手工计算了这些列和行的协方差,它只是零,可能是原始值没有太大变化,原始值是:
0.06 0.05 0.05 0.08 0.05 0.06 0.06 0.02
0.06 0.04 0.03 0.07 0.05 0.08 0.07 0.03
谢谢!在
@新手
基于8x8矩阵,我注意到一个零行和零列的模式,每 第四列或第四行。当一个矩阵的一列或一行充满了零,这就使得行列式为零,矩阵是奇异的,因此你的cov矩阵没有逆。在这种情况下,返回的特征值与奇异值分解(SVD)得到的奇异值相同。在
我建议您仔细检查一下协方差矩阵的计算会导致行和列充满零的原因,即使在主对角线上也是如此。在
希望有帮助。在
这意味着你所有的特征值都是零,除了一个。我想你的矩阵可能不是全秩矩阵。在
相关问题 更多 >
编程相关推荐