【发布时间】:2019-03-23 01:59:55
【问题描述】:
我正在处理一项需要我计算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 个特征向量解释了最佳方差。但我不明白这是什么意思。
【问题讨论】:
-
我认为特征值是对应的向量有多少信息。 eigen_val[0] / sum(eigen_val) 为您提供特定 eigen_vector 拥有的信息的百分比。
-
它们是根据其对应的特征值排序的。
-
@D_Serg 我知道,但是对特征值/向量进行排序意味着什么?
-
eigh返回的特征值是实数,所以排序就是通常的数字排序(即排序)。例如。数字 [1, 3, 19, 21] 是按递增顺序排列的。 -
希望我能正确理解您的问题。之所以对其进行排序是因为对应于较大特征向量值的特征向量在某种程度上“更重要”,因为沿着该方向,数据具有最高的方差。也许检查这个link,尤其是在titla PCA下
标签: python numpy opencv image-processing computer-vision