【发布时间】:2020-11-08 07:14:30
【问题描述】:
当我将一个特征向量乘以一个矩阵时,它应该得到与将该特征向量乘以其对应的特征值相同的输出。我正在尝试验证我的特征向量和特征值是否像宣传的那样工作,但输出似乎不正确。
cov_matrix = np.cov(scaled_data)
eig_vals, eig_vecs = np.linalg.eigh(cov_matrix)
a = cov_matrix.dot(eig_vecs[:, 0])
b = eig_vecs[:, 0] * eig_vals[0]
当我打印 a 和 b 时,它们的形状相同,但它们的值都不同。这里出了什么问题?
【问题讨论】:
-
列eig_vecs[:, i]是特征值eig_vals[i]对应的特征向量,而不是行eig_vecs[i]
-
谢谢!我编辑了代码(可能不正确,但不确定)来纠正这个问题,但 a 和 b 仍然返回不同的向量。
-
notice
np.linalg.eigh仅适用于“复 Hermitian(共轭对称)或实对称矩阵”(取自文档)。你确定你的矩阵是对称的吗?如果是这样,请为scaled_data提供具体示例
标签: numpy linear-algebra matrix-multiplication eigenvalue eigenvector