为什么 np.linalg.eig 会产生一个相反符号的特征向量?

数据挖掘 机器学习 Python 数据挖掘 麻木的 线性代数
2022-03-01 16:59:21

我正在通过学​​习SVD学习这门 MIT 课程在此视频中,讲师正在寻找 SVD

(5517),

这涉及找到特征值

CTC=(26181874).

在示例中(当时在上面的链接中),讲师找到了特征值

(3/101/10),(1/103/10).

np.linalg.eig产生与第二个相反的向量:

w, v = np.linalg.eig(C.T*C)
v
matrix([[-0.9486833 , -0.31622777],
        [ 0.31622777, -0.9486833 ]])

为什么?

1个回答

特征向量的任何标量倍数也是特征向量。LAPACK(在引擎盖下使用 np.linalg.eig)选择返回单位长度的特征向量(对 SVD 有好处!),但这仍然留下两个选择,并且似乎没有一个返回的约定;这取决于底层算法(这又可能取决于输入数据)。

https://stackoverflow.com/questions/17998228/sign-of-eigenvectors-change-depending-on-specification-of-the-symmetric-argument