【发布时间】:2021-03-04 03:24:57
【问题描述】:
我正在尝试了解 numpy svd 与 eig 的想法和行为。 为什么它们会产生不同的结果?我在这里比较苹果和苹果吗? 希望我的用法是正确的。 这是我尝试理解 SVD 和特征向量的简单愚蠢代码
import numpy as np
from sklearn import preprocessing
np.random.seed(123)
np.set_printoptions(suppress=True)
X = np.random.rand(2, 3)
X1 = preprocessing.scale(X, axis=1)
cov = np.matmul(X1.T, X1)/X1.shape[0]
U,S,V = np.linalg.svd(cov)
eig_vals, eig_vec = np.linalg.eig(cov)
ids = eig_vals.argsort()[::-1]
eig_vals = eig_vals[ids]
eig_vec = eig_vec[:,ids]
print("SVD: \n U_svd: \n {} \n V_svd:\n {}\n".format( U, V))
print("Eig: \n U_eig: \n {} \n V_eig: \n {}\n".format(eig_vec, eig_vals))
U 非常接近。然而,Eigen vals 差异很大。谢谢!!
【问题讨论】:
标签: python numpy svd eigenvalue eigenvector