我正在完成一项需要我计算Eigenfaces的任务。要计算特征脸,需要计算Eigenvalues and Eigenvectors。
我使用numpy's eigh函数计算了特征值和特征向量。我想我明白什么是特征向量。当图像从一种几何形状/平面转换为另一种几何形状/平面时,它们是不会改变位置的向量。因为它们能够唯一地识别图像。特征值对应于每个特征向量,这些特征向量表示特征向量已经经历的标量变化。
我不明白的是numpy's documentation的声明中说:
该函数以升序返回特征值,每个特征值根据其多重性重复。
关于订购这件事是什么?文档指的是什么顺序?
例如:
arr = np.random.uniform(size=(3,3,3))
eigen_val, eigen_vec = np.linalg.eigh(arr)
以上运行返回的特征向量如下:
array([[[ 0.73988841, 0.42234431, -0.52363195],
[ 0.00792645, -0.78378814, -0.62097771],
[-0.67268292, 0.45530367, -0.58326346]],
[[-0.57948585, 0.3848149 , -0.7184105 ],
[-0.32564468, -0.91740718, -0.22873479],
[ 0.74709551, -0.10139798, -0.6569374 ]],
[[-0.77375832, 0.50124139, -0.38736951],
[-0.12305613, -0.7187746 , -0.68426622],
[ 0.62141392, 0.48178849, -0.61783865]]])
我从这里的订单中得到什么解释?
整个上下文是特征向量是在PCA期间计算的,我读到前K个特征向量可以解释最佳方差。但我不明白这是什么意思。
答案 0 :(得分:0)
正如本文档所述,它们按特征值幅度升序排列。
print(eigen_val)
array([[-0.65484945, 0.53345853, 1.2783374 ],
[-0.54451155, 0.23566298, 1.32844171],
[-0.11539487, 0.49887717, 1.55005921]])
首先列出幅度最小的特征值,最后列出幅度最大的特征值。每个特征值都有一个对应的特征向量,因此一旦特征值排序,特征向量的顺序就固定了。