python - 对特征向量进行排序是什么意思?
问题描述
我正在处理一项需要我计算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 个特征向量解释了最佳方差。但我无法理解它的意思。
解决方案
正如文档解释的那样,它们按特征值幅度升序排列:
print(eigen_val)
array([[-0.65484945, 0.53345853, 1.2783374 ],
[-0.54451155, 0.23566298, 1.32844171],
[-0.11539487, 0.49887717, 1.55005921]])
幅度最小的特征值排在最前面,幅度最大的特征值排在最后。每个特征值都有一个对应的特征向量,因此一旦特征值排序,特征向量的顺序就固定了。
推荐阅读
- java - 如何交替二维数组中每隔一列中的元素顺序
- python - 如何按文件大小重新读取文件?
- java - ChromeDriver Does not find the element on the page with selenium JAVA
- javascript - slick-slider with Corresponding Image Section
- google-apps-script - Inserting an Image From Google Drive or from a URL into Google Sheets with Google Apps Script
- powershell - How to take a remote screenshot with Powershell
- scala - 如何在 ElFileBody 中为 Gatling 中的 GraphQL StringBody 发送参数
- f# - 编译器无法从共享的“头”文件中解析类型
- mysql - Docker(docker-compose)节点+ MySQL:ECONNREFUSED
- javafx - fxgl 超过 11.3 并且缺少胶子