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) 矩阵中图像的个数,每个图像行,列 # 降维 pca = PCA(150) # 实例化 X_dr = pca.fit_transform(x) # 拟合+提取结果 # print(X_dr.shape) x_inverse = pca.inverse_transform(X_dr) # print(x_inverse.shape) # 成功还原 # 期待x_inverse应该和原数据有相同的结果, # 如果相同,可以认定inverse_transform实行降维过程逆转 # 将他可视化一下看是否一样 fig, ax = plt.subplots(2, 10, subplot_kw={"xticks": [], "yticks": []} ) for i in range(10): ax[0, i].imshow(faces.images[i, :, :], cmap="binary_r") ax[1, i].imshow(x_inverse[i].reshape(62, 47), cmap="binary_r") plt.show() # 结论 inverse_transform并没有实现降维之后的逆转, # 降维是不可逆的,原数据被舍弃的信息也不可能再回来了
day 8.2 PCA重要接口 inverse_transform
最新推荐文章于 2024-05-31 12:38:44 发布