我需要你的帮助...我正在尝试计算这个矩阵的特征向量:
0.683043 -0.0248989 0.291915 0.0220227 -0.350487 -0.318394
0.435584 0.276779 0.192531 -0.00158314 -0.653018 -0.182419
0.409294 -0.196908 0.321927 0.409339 -0.214044 -0.301017
1 0 0 0 0 0
0 1 0 0 0 0
0 0 1 0 0 0
我在 Matlab 中拥有的是
[V,D] = eig([A; eye(d*(na-1),d*na)])
,我得到了这个:
在使用Python时
np.linalg.eig(np.block([[A], [np.eye((na-1)*d, na*d)]]))
,我得到了这个:
值几乎相同,但最后两列的符号完全相反:(有没有办法获得完全相同的输出?我一直在查看文档,但这是不可能的。
我尝试使用不同的超参数和 scipy 函数,但它仍然不同
恰好相反的符号仅表示向量方向相反,即正确。特征向量告诉你描述矩阵的新轴的方向(PCA 在这方面有很好的直觉),所以负数是正确的。
示例:在笛卡尔坐标系中,以下三个向量中的哪一个定义 x 轴:[1,0]、[-1,0]、[0,1]。答案:[1, 0] 和 [-1, 0] 都定义了 x 轴
有没有办法获得相同的值?不,这取决于特征向量计算方式的实现,因此您不能强制其中之一。让您用来比较/验证它们的任何代码都对此灵活。