在机器学习中,图片信息转化为数据之后,一般维度都比较高,比如一张28x28大小的图片,展平为特征之后,就是784个特征值。所以在处理图片数据时,一般都少不了PCA这一步骤。以下我们就以Sklearn中一个经典的人脸数据集fetch_lfw_people为例,为大家介绍PCA降维和降维后的特征矩阵可视化。
1、导入并探索数据
如果下载失败,进入该路径/Users/xxx/scikit_learn_data/lfw_home,删除后重新下载即可。
from sklearn.datasets import fetch_lfw_people faces = fetch_lfw_people(min_faces_per_person=60) print(faces.data.shape) #(1348, 2914) 2914=62x47 print(faces.images.shape) #(1348, 62, 47) print(faces.target) print(faces.target_names) #人名列表
2、原始数据可视化
import matplotlib.pyplot as plt fig, ax = plt.subplots(4, 5, subplot_kw={'xticks':[], 'yticks':[]}) for i, ax in enumerate(ax.flat): ax.imshow(faces.images[i, :, :], cmap="gray") plt.show()
3、降维后特征可视化
from sklearn.decomposition import PCA import matplotlib.pyplot as plt pca = PCA(100).fit(faces.data) V = pca.components_ print(V.shape) #(100, 2914) fig, ax = plt.subplots(4, 5, subplot_kw={'xticks':[], 'yticks':[]}) #不显示坐标轴 for i,ax in enumerate(ax.flat): ax.imshow(V[i].reshape(62, 47), cmap='gray') plt.show()
由图可见,PCA降维后,只保留了光线和人脸五官这类重要信息。
本文为 陈华 原创,欢迎转载,但请注明出处:http://ichenhua.cn/read/276
- 上一篇:
- 数据结构之栈与括号匹配问题
- 下一篇:
- 数据结构之队列