python和机器学习 第七章 PCA和梯度上升法 (五)使用PCA进行降噪和人脸识别特征脸

In [50]: import numpy as np
In [51]: import matplotlib.pyplot as plt
In [52]: X = np.empty((100,2))
    ...: X[:,0] = np.random.uniform(0.,100.,size=100)
    ...: X[:,1] = 0.75 * X[:,0] + 3. + np.random.normal(0,5,size=100) 
In [53]: plt.scatter(X[:,0],X[:,1])

在这里插入图片描述

In [54]: from sklearn.decomposition import PCA
    ...: 
    ...: pca = PCA(n_components=1)
    ...: pca.fit(X)
    ...: X_reduction = pca.transform(X)
    ...: X_restore = pca.inverse_transform(X_reduction)
In [55]: plt.scatter(X_restore[:,0],X_restore[:,1])

在这里插入图片描述
降低了维度,丢失了信息,但是在PCA降维的过程中,可能也去除了噪音

人脸识别

载入人脸数据集
In [59]: import numpy as np
    ...: import matplotlib.pyplot as plt  
In [60]: from sklearn.datasets import fetch_lfw_people
In [61]: faces = fetch_lfw_people()
#13233个人脸,2914个特征
In [63]: faces.data.shape
Out[63]: (13233, 2914)
#把每个样本以二维的数据展示出来
In [65]: faces.images.shape
Out[65]: (13233, 62, 47)
#随机选取36张脸
In [66]: random_indexes = np.random.permutation(len(faces.data))
    ...: X = faces.data[random_indexes]
In [67]: example_faces = X[:36,:]
    ...: example_faces.shape
Out[67]: (36, 2914)
绘制人脸
In [72]: def plot_faces(faces):
    ...:     fig, axes = plt.subplots(6, 6, figsize=(10,10), 
    				subplot_kw={'xticks':[],'yticks':[]},
    				gridspec_kw=dict(hspace=0.1, wspace=0.1))
    ...:     for i, ax in enumerate(axes.flat):
    ...:         ax.imshow(faces[i].reshape(62,47),cmap='bone')
    ...:     plt.show()
    ...:     
    ...: plot_faces(example_faces)

在这里插入图片描述

特征脸
In [75]: %%time
#采用随机的方式实例化pca
    ...: pca = PCA(svd_solver='randomized')
    ...: pca.fit(X)
#2914个主成分    
In [77]: pca.components_.shape
Out[77]: (2914, 2914)
#绘制特征脸
In [78]: plot_faces(pca.components_[:36])
特征脸依据重要程度顺次排列

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值