PCA
Question
In this part of the exercise, you will run PCA on face images to see how it can be used in practice for dimension reduction.
理论基础
PCA是利用矩阵向量的数学知识对目标数据进行降维的操作。比如以汽车为单位进行机器学习,车长,车高往往有较大变化,但车宽变化较小。我们就可以将原来多个轴映射到一条新轴上,实现对数据向量个数的削减。PCA在许多年前能广泛运用于机器学习算法的加速,那时计算机能容纳的数据量有限,运算速度也相对较慢,利用PCA对数据降维可以很好地实现机器学习。但随着时代的发展,现在已经不需要用PCA就能实现对数据的加工处理,加上PCA反而会导致数据一定程度上的损失。现阶段,PCA虽然已不能在学习算法中举足轻重,但我们依然可以利用PCA将数据可视化。因为绘制高维图像是不可能的,利用PCA将数据维度降低到立体空间或者平面,是一种很好的可视化操作。这里通过对图片数据进行PCA降维,来直观展现降维对于数据整体的影响。
数据读取处理
1 | import numpy as np |
1 | mat=sio.loadmat('PCA.mat') |
1 | def plot_100_image(X): |
1 | plot_100_image(X) |

数据降维操作
1 | means=np.mean(X,axis=0) |
画图
1 | plot_100_image(X_recover),plot_100_image(X) |
可以看见,经过PCA降维处理,人脸图像变得模糊,丢失了许多细节,各图片的五官失去了一定的独特性。但是,人脸的大致轮廓得以保留。


Site
代码(Jupyter)和所用数据:https://github.com/codeYu233/Study/tree/main/PCA
Note
该题与数据集均来源于Coursera上斯坦福大学的吴恩达老师机器学习的习题作业,学习交流用,如有不妥,立马删除