Python机器学习:PCA与梯度上升:009人脸识别与特征脸(lfw_people数据集)

Python机器学习:PCA与梯度上升:009人脸识别与特征脸(lfw_people数据集)
将w的每一行想成一个样本,则第一行是最重要的样本。。第二行次重要。。(Wk特征engen face)

CODE

我们使用lfw_people数据集

#人脸识别与特征脸
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import fetch_lfw_people

这个数据集很大有200多m直接用fetch命令下载却失败了,手动下载数据

链接:https://pan.baidu.com/s/11ebeCTH7E24XAgYVL7y_-A 
提取码:3gut 
复制这段内容后打开百度网盘手机App,操作更方便哦

放在这个目录下面,解压(job本来没有,重新启动一下jupyter运行一下就ok了)
Python机器学习:PCA与梯度上升:009人脸识别与特征脸(lfw_people数据集)
Python机器学习:PCA与梯度上升:009人脸识别与特征脸(lfw_people数据集)
也是一个字典结构

faces.keys()
dict_keys(['data', 'images', 'target', 'target_names', 'DESCR'])

看看data的大小

print(faces.data.shape)
(13233, 2914)
print(faces.images.shape)

62*47 = 2914

(13233, 62, 47)

打乱索引

random_indexs = np.random.permutation(len(faces.data))
X = faces.data[random_indexs]
example_faces = X[:36,:]
print(example_faces.shape)
(36,2914)

绘制36幅图片

#cmap 改变绘制风格,cmaps['Sequential'] = [
            # 'Greys', 'Purples', 'Blues', 'Greens', 'Oranges', 'Reds',
            # 'YlOrBr', 'YlOrRd', 'OrRd', 'PuRd', 'RdPu', 'BuPu',
            # 'GnBu', 'PuBu', 'YlGnBu', 'PuBuGn', 'BuGn', 'YlGn']
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')
plot_faces(example_faces)

Python机器学习:PCA与梯度上升:009人脸识别与特征脸(lfw_people数据集)
Python机器学习:PCA与梯度上升:009人脸识别与特征脸(lfw_people数据集)
特征脸
使用随机方式求PCA,数据量较大

#特征脸
from sklearn.decomposition import PCA
pca = PCA(svd_solver='randomized')#使用随机的方式求pca,数据较大
%time pca.fit(X)
Wall time: 32.3 s

特征脸矩阵大小

print(pca.components_.shape)
(2914, 2914)

还可以绘制36-73

绘制特征脸
plot_faces(pca.components_[:36,:])#绘制特征脸,第一张就很简单只有轮廓,越往后细节越多

Python机器学习:PCA与梯度上升:009人脸识别与特征脸(lfw_people数据集)
Python机器学习:PCA与梯度上升:009人脸识别与特征脸(lfw_people数据集)

上一篇:从摄像头捕捉视频检测人数


下一篇:Mysql 查询语句优化原则