10.6 试使用MATLAB中的PCA 函数对Yale人脸数据集进行降维,并观察前20个特征向量所对应的图像。
为了便于练习,未使用MATLAB,而是用了scikit-learn.decomposition模块下的PCA进行练习。书上给的Yale人脸数据集访问有点慢(貌似被墙了),我重新上传了一份到百度云(点此下载)。数据集共有样本166个,每张图像的分辨率为320*243(用numpy的shape是倒过来的)。由于图片较多,只选取了几张的PCA(k=20,50,150)的效果进行了展示,具体代码与结果如下,(PCA相关函数的帮助请参考scikit-learn PCA官方文档)。
由图可见,选取PCA的特征束越多,图像越清晰、明显,而在特征数不足时,会出现大量阴影轮廓,而我们可以用pca.explained_variance_ratio_来查看当前选择的最大k个特征向量的方差占比,方差占比越