使用np.linalg.norm检查PCA中的特征向量

时间:2019-02-10 01:12:50

标签: python python-3.x numpy

我正在关注有关PCA的教程,我的意思是选择主要成分。

这是PCA上的教程的link

我现在仍然停留在代码中。我不明白它的实际作用是什么?

eigen_values, eigen_vectors = np.linalg.eig(cor_mat2)

for ev in eigen_vectors:
    np.testing.assert_array_almost_equal(1.0, np.linalg.norm(ev))
print('Everything ok!')

如果有人能帮助我理解我,我深表感谢。

np.linalg.norm在这里检查什么?

1 个答案:

答案 0 :(得分:1)

np.linalng.norm文档中所述,此函数计算向量的L2 Norm

此循环所做的全部工作是确保每个eigenvector具有单位长度,因此可以使用eigenvalues来比较每个特征向量对数据表示的重要性。

特征向量跨越了投影的新基础,因此,它们具有单位长度(如文章中所述)。它们不一定非要如此,但用这种方法更容易,您可以将其视为3-D中的新x y z轴(这样的规范基始终由向量构成,向量在所有维度上都包含零,而在一个位置上仅包含一个,x为向量(1, 0, 0),y为(0, 1, 0),z为(0, 0, 1)

为了获得包含有关数据的最多信息的新方向(至少是线性的,最大方差)并执行所需大小的降维(例如N),我们必须比较它们的“影响”。这就是特征值的用途,因为无法对归一化为相同(单位)尺度的特征向量进行比较。