day 8.1 PCA人脸识别 重要属性components_

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()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章