加载sklearn中的人脸数据集

from sklearn.datasets importfetch_lfw_people

faces= fetch_lfw_people()

执行上面的第二行程序,python会从网上下载labeled_face_wild people数据集,这个数据集大概200M,因为墙的原因下载很慢失败。

使用百度云下载该数据集,是个.tgz的压缩包

把下载好的压缩包放入C:\Users\Tim\scikit_learn_data\lfw_home,其中yyy是我的用户名,再次运行faces = fetch_lfw_people(),成功,jupyter notebook中的输出如下:

from sklearn.datasets importfetch_lfw_people

faces= fetch_lfw_people(min_faces_per_person=60)print(faces.target_names)print(faces.images.shape)

['Donald Rumsfeld' 'George W Bush' 'Gerhard Schroeder' 'Junichiro Koizumi'

'Tony Blair']

(964, 62, 47)

# 进行完上一步还可以看一下图片长什么样子

importmatplotlib.pyplot as plt%matplotlib inline

fig, ax= plt.subplots(3, 5)for i, axi inenumerate(ax.flat):

axi.imshow(faces.images[i], cmap='bone')

axi.set(xticks=[], yticks=[],

xlabel=faces.target_names[faces.target[i]])

解决人脸识别(jupyter)

人脸识别是一个分类问题,因为机器学习中svd属于王霸地位(深度学习不算),所以使用svd对图像进行训练。

#svc 支持向量解决分类问题

from sklearn.svm importSVC#图片的维度太高,降维

from sklearn.decomposition importPCA#管道

from sklearn.pipeline importmake_pipeline

pca= PCA(n_components=150, whiten=True, random_state=42)

svc= SVC(kernel='rbf', class_weight='balanced')

model= make_pipeline(pca, svc)

和上一步一样看看我们数据的同时加载数据

from sklearn.datasets importfetch_lfw_people

faces= fetch_lfw_people(min_faces_per_person=60)print(faces.target_names)print(faces.images.shape)importmatplotlib.pyplot as plt%matplotlib inline

fig, ax= plt.subplots(3, 5)for i, axi inenumerate(ax.flat):

axi.imshow(faces.images[i], cmap='bone')

axi.set(xticks=[], yticks=[],

xlabel=faces.target_names[faces.target[i]])

切分训练集和测试集

from sklearn.model_selection importtrain_test_split

Xtrain, Xtest, ytrain, ytest=train_test_split(faces.data, faces.target,

random_state=40)

# 进行训练

from sklearn.model_selection importGridSearchCV

param_grid= {'svc__C': [1, 5, 10],'svc__gamma': [0.0001, 0.0005, 0.001]}

grid=GridSearchCV(model, param_grid)%time grid.fit(Xtrain, ytrain)

GridSearchCV(cv='warn', error_score='raise-deprecating',

estimator=Pipeline(memory=None,

steps=[('pca',

PCA(copy=True, iterated_power='auto',

n_components=150, random_state=42,

svd_solver='auto', tol=0.0,

whiten=True)),

('svc',

SVC(C=1.0, cache_size=200,

class_weight='balanced', coef0=0.0,

decision_function_shape='ovr',

degree=3, gamma='auto_deprecated',

kernel='rbf', max_iter=-1,

probability=False,

random_state=None, shrinking=True,

tol=0.001, verbose=False))],

verbose=False),

iid='warn', n_jobs=None,

param_grid={'svc__C': [1, 5, 10],

'svc__gamma': [0.0001, 0.0005, 0.001]},

pre_dispatch='2*n_jobs', refit=True, return_train_score=False,

scoring=None, verbose=0)

print(grid.best_params_)

{'svc__C': 10, 'svc__gamma': 0.0001}

查看测试集的测试结果

model =grid.best_estimator_

yfit=model.predict(Xtest)

yfit.shapeimportmatplotlib as mpl#防止中文报错

mpl.rcParams["font.sans-serif"] = ["SimHei"]

mpl.rcParams["axes.unicode_minus"] =False#画图

fig, ax = plt.subplots(4, 6)for i, axi inenumerate(ax.flat):#调整像素为[62,47]

axi.imshow(Xtest[i].reshape(62, 47), cmap='bone')

axi.set(xticks=[], yticks=[])#截取目标名字的最后一组字

axi.set_ylabel(faces.target_names[yfit[i]].split()[-1],

color='black' if yfit[i] == ytest[i] else 'red')

fig.suptitle('预测错误的名字被红色标注', size=14);

可以看到预测错误了四个,准确率欠佳,下面打印分类报告

from sklearn.metrics importclassification_reportprint(classification_report(ytest, yfit,

target_names=faces.target_names))

precision recall f1-score support

Donald Rumsfeld 0.75 0.87 0.81 31

George W Bush 0.97 0.92 0.94 124

Gerhard Schroeder 0.80 0.83 0.81 29

Junichiro Koizumi 1.00 1.00 1.00 16

Tony Blair 0.85 0.85 0.85 41

accuracy 0.90 241

macro avg 0.87 0.89 0.88 241

weighted avg 0.90 0.90 0.90 241

最后使用seaborn的heatmap打印混淆矩阵

importseaborn as snsfrom sklearn.metrics importconfusion_matrix#混淆矩阵

mat =confusion_matrix(ytest, yfit)#注意这里的混淆矩阵的画图

sns.heatmap(mat.T, square=True, annot=True, fmt='d', cbar=False,

xticklabels=faces.target_names,

yticklabels=faces.target_names)

plt.xlabel('true label')

plt.ylabel('predicted label');

对于svd不懂得可以转头看一下,svm原理

python人脸识别svd_机器学习-svd实现人脸识别相关推荐

  1. 机器学习算法之PCA(主成分分析)人脸识别,最小重构误差和最大化散度证明,PCA主成分分析原理剖析,PCA人脸识别matlab实现,PCA人脸识别python实现

    目录 PCA介绍 PCA大致思路 PCA人脸识别(特征脸法) matlab代码实现 Python代码实现 PCA几何解释 PCA证明最小重构误差和最大散度等价 实验结果 PCA介绍 主成分分析(Pri ...

  2. Python 3 利用 Dlib 和 sklearn 人脸笑脸检测机器学习建模

    0. 引言 利用机器学习的方法训练微笑检测模型,输入一张人脸照片,判断是否微笑: 精度在 95% 左右( 使用的数据集中 69 张没笑脸,65 张有笑脸 ): 图1 测试图像与检测结果 项目实现的笑脸 ...

  3. python识别人脸多种属性_深度学习人脸识别仅9行python代码实现?同时高效处理100张相片?...

    随着人脸识别.视频结构化等计算视觉相关技术在安防.自动驾驶.手机等领域走向商业化应用阶段,计算视觉技术行业市场迎来大规模的爆发.伴随人脸识别.物体识别等分类.分割算法不断提升精度.计算视觉的核心算法深 ...

  4. Python+OpenCv实现AI人脸识别身份认证系统(2)——人脸数据采集、存储

    原 Python+OpenCv实现AI人脸识别身份认证系统(2)--人脸数据采集.存储 2019年07月02日 08:47:52 不脱发的程序猿 阅读数 602更多 所属专栏: 人脸识别身份认证系统设 ...

  5. Python+OpenCv实现AI人脸识别身份认证系统(1)——人脸识别原理

    原 Python+OpenCv实现AI人脸识别身份认证系统(1)--人脸识别原理 置顶 2019年07月02日 08:47:40 不脱发的程序猿 阅读数 1255更多 所属专栏: 人脸识别身份认证系统 ...

  6. pca人脸识别python_[机器学习] 用PCA进行人脸识别

    本文会带你详细的分析PCA人脸识别的代码 PCA在人脸识别中有重要的应用,如果想详细了解PCA的原理,可以看我的这篇文章:任妍Carol:[机器学习] 人脸识别的重要方法--PCA​zhuanlan. ...

  7. python人脸识别框很小_人脸识别:从传统方法到深度学习

    人脸识别:从传统方法到深度学习 这开始于上世纪七十年代,人脸识别成为了计算机视觉领域和生物识别领域最具有研究型的话题之一.传统方法依赖于手工制作模型特征,通过深度神经网络训练大量的数据集的方法也在最近 ...

  8. 基于python的人脸识别技术_用Python写个简单但强大的人脸识别系统

    face_recognition是一个强大.简单.易上手的人脸识别开源项目,并且配备了完整的开发文档和应用案例,特别是兼容树莓派系统. face_recognition一经开源发布就得到的广泛的热捧, ...

  9. 【Python实现人脸比对】——打造智能人脸识别系统

    [Python实现人脸比对]--打造智能人脸识别系统 人脸比对是指对两张或多张人脸图像进行对比,判断它们是否属于同一个人的过程.在现代化社会的各个领域中,如金融.安防.旅游等等,人脸识别技术得到广泛应 ...

最新文章

  1. 计算机rsnge指令,计算机二级office Excel 函数复习重点
  2. NumPy基础用法总结
  3. 6_jfoenix_自定义舞台,JFXSlider
  4. Android 图片的帧动画
  5. 本地Windows远程桌面连接阿里云Ubuntu服务器
  6. OpenCV人脸识别Eigen算法源码分析
  7. TensorFlow 教程——手写数字识别
  8. P2050 [NOI2012]美食节
  9. 搜狗浏览器也可以直接安装Chrome插件,太棒了
  10. 今天在海淀黄庄地铁站真实经历 写下来希望我的好友可以看一下!
  11. verilog 生成块_如何高效的编写Verilog——终极版
  12. gettext 国际化_如何使用Gettext在Phoenix应用程序中执行本地化
  13. python连接不上数据库_详解pycharm连接不上mysql数据库的解决办法
  14. VCSA 6.5 HA配置 之四 开启vCenter HA
  15. Android iw 使用方法
  16. CentOS系统下安装配置ftp服务
  17. php 获取某周的最后一天,PHP获取本周首先天和最后一天
  18. Android屏幕适配(SmallestWidth适配 sw限定符)最新步骤解析
  19. 史上最详细解说!小白iriver T60拆机
  20. 2017 寒假作业 (一) 随笔

热门文章

  1. QT中如何读写ini配置文件
  2. 纪委计算机管理制度,纪委监察处信息管理办法
  3. websocket如何区分用户_WebSocket与普通Socket的差异
  4. 小白成长之路_LeetCode刷题记录
  5. VC++中从txt文本中读取数据并且存到二维数组中
  6. DeepMind的蛋白质折叠AI解决了50年来的生物学重大挑战
  7. 中科院分子细胞中心、清华大学和Bio-protocol联手发布《高通量筛选实验手册》...
  8. 这个神奇的网站提供各种图的代码供您参考!
  9. Windows10安装Linux子系统Ubuntu 20.04LTS,轻松使用生信软件,效率秒杀虚拟机
  10. 有声专栏-宏基因组专业词汇讲解