首页 > 解决方案 > 对特征向量进行排序是什么意思?

问题描述

我正在处理一项需要我计算Eigenfaces的任务。要计算特征脸,需要计算特征值和特征向量

我使用numpy 的 eigh函数计算了特征值和特征向量。我想我明白什么是特征向量。当图像从一个几何体/平面转换到另一个几何体/平面时,它们是不改变位置的向量。因为他们能够唯一地识别图像。特征值对应于每个特征向量,这些特征向量表示特征向量所经历的标量变化。

我不明白的是numpy 文档中的一个声明:

该函数以升序返回特征值,每个特征值根据其多重性重复。

订购这件事是什么?文档指的是什么顺序?

例如:

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 个特征向量解释了最佳方差。但我无法理解它的意思。

标签: pythonnumpyopencvimage-processingcomputer-vision

解决方案


正如文档解释的那样,它们按特征值幅度升序排列:

print(eigen_val)

array([[-0.65484945,  0.53345853,  1.2783374 ],
       [-0.54451155,  0.23566298,  1.32844171],
       [-0.11539487,  0.49887717,  1.55005921]])

幅度最小的特征值排在最前面,幅度最大的特征值排在最后。每个特征值都有一个对应的特征向量,因此一旦特征值排序,特征向量的顺序就固定了。


推荐阅读