上一篇文章介绍了PCA降维后的特征矩阵可视化,可以直观得看出降维后提取的综合特征,但我们想继续探究降维后的信息,能否通过逆转还原呢。 

1、导入并探索数据

from sklearn.datasets import fetch_lfw_people

faces = fetch_lfw_people(min_faces_per_person=60)

2、降维建模

from sklearn.decomposition import PCA

x = faces.data[:200, :] # 节约时间,只取200张照片
pca = PCA(100)
x_dr = pca.fit_transform(x)
print(x_dr.shape) # (1348, 150)

3、逆转升维

x_inv = pca.inverse_transform(x_dr)
print(x_inv.shape)

4、特征提取前后对比可视化

import matplotlib.pyplot as plt

fig, ax = plt.subplots(2, 5, figsize=(10, 2)
    ,subplot_kw={'xticks':[], 'yticks':[]}
)

for i in range(5):
    ax[0,i].imshow(faces.images[i, :, :], cmap='binary_r') 
    ax[1,i].imshow(x_inv[i].reshape(62, 47), cmap='binary_r') 

plt.show()

由图可见,降维后再逆转还原的图片,清晰度不如原图,说明降维后的特征信息还是会损失一些内容的。

本文为 陈华 原创,欢迎转载,但请注明出处:http://ichenhua.cn/read/277