from sklearn.datasets import fetch_lfw_people
from sklearn.decomposition import PCA
import matplotlib.pyplot as plt
import numpy as np
faces = fetch_lfw_people(min_faces_per_person=60) # 每个人取出60张图
x = faces.data # 特征矩阵
# print(faces.data.shape) # (1348,2914)
# print(faces.images.shape) # (1348, 62, 47) 矩阵中图像的个数,每个图像行,列
# todo: 将数据可视化
# 建画布
# fig, axis = plt.subplots(3, 8, # 专门创建子图画布的,四行五列共20个图
# figsize=(8, 4)
# , subplot_kw={"xticks": [], "yticks": []} # 不显示座标轴
# )
# axis[0][0].imshow(faces.images[0, :, :])
# # print([*enumerate(axis.flat)])
# # 画图像
# for i, ax in enumerate(axis.flat):
# # print(ax)
# ax.imshow(faces.images[i, :, :], cmap="gray") # 显示灰色
# plt.show()
# todo: 模型降维
pca = PCA(150).fit(x)
v = pca.components_ # 结构应该是vkn,代表新特征向量空间
# 要用来映射的新特征向量空间,决定新特征的含义
# print(v.shape) # (150, 2914) # k:150, n:2914
# 做一波可视化
fig, axis = plt.subplots(3, 8, # 专门创建子图画布的,四行五列共20个图
figsize=(8, 4)
, subplot_kw={"xticks": [], "yticks": []} # 不显示座标轴
)
for i, ax in enumerate(axis.flat):
# print(ax)
ax.imshow(v[i, :].reshape(62, 47), cmap="gray") # 显示灰色
plt.show()
day 8.1 PCA人脸识别 重要属性components_
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.