我正在关注有关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
在这里检查什么?
答案 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
),我们必须比较它们的“影响”。这就是特征值的用途,因为无法对归一化为相同(单位)尺度的特征向量进行比较。