1.导入相应包

from sklearn.datasets import fetch_lfw_people
from sklearn.decomposition import PCA
from matplotlib import pyplot as plt
import pandas as pd
import numpy as np

2.准备数据集

本次我们使用的数据集是sklearn库中自带的人脸图片数据集,包括1348张长宽分别为62、 47的人脸图片,该数据集有data和image两种属性,image按照图片取出,为三维(1348, 62, 47),data属性为将长宽展平为一维(1348, 2914),2914 = 62×47。

faces = fetch_lfw_people(min_faces_per_person=60)
#取出我们需要用到的数据
X = faces.data
faces.images.shape
faces.data.shape

3.绘制原图像(这里只画出20张,想画更多改参数即可)

#创建画布和子图对象
#横纵长度为4和5的画布
fig, axes = plt.subplots(4, 5, figsize=(8, 4), subplot_kw = {"xticks":[],"yticks":[]} #不要显示坐标轴)
#这里采用enumerate函数对axes进行变化绘制(这里是将二位数据拉成一维)
for i, ax in enumerate(axes.flat):#显示图片ax.imshow(faces.images[i, :, :], cmap='gray')
plt.savefig(r"C:\Users\86377\Desktop\2.png")

绘制出20张原图片如图所示:

4.将数据从2914降至150维

#原本有2900维,我们现在来降到150维
pca = PCA(150).fit(X)
V = pca.components_

这里我讲一下我的理解:原始数据为1348张长宽为62×47=2914,特征为2914,我们使用pca将特征降至2914维,所以V’为150×2914维,这样矩阵所做的线性空间变换才会将特征维数降至150维,绘制特征空间,150个特征就有150种特征空间,所以我们可以将这150种特征空间绘制出来。

5.绘制150个特征空间

fig, axes = plt.subplots(10, 15, figsize=(20, 8), subplot_kw={"xticks": [], "yticks": []})
for i, ax in enumerate(axes.flat):ax.imshow(V[i, :].reshape(62, 47), cmap="gray")

绘制出的图片如下:

只显示20个我们仔细看:

这里我们可以看到后面越来越不显示出人脸特征,这也验证了保留有效信息的可行性。

6.利用接口将降维后的信息还原

#降维后的数据
X_dr = pca.transform(X)
#还原的数据
X_inverse = pca.inverse_transform(X_dr)
#可视化
fig, axes = plt.subplots(2, 10, subplot_kw={'xticks': [], 'yticks': []})
for i in range(10):axes[0, i].imshow(X[i, :].reshape(62, 47), cmap='binary_r')axes[1, i].imshow(X_inverse[i, :].reshape(62, 47), cmap='binary_r')
plt.savefig(r"C:\Users\86377\Desktop\4.png")

原始和还原的图像对比如下:

虽然两者差别不大,但是原始图像还是更加清晰,这说明还原并不是100%。

sklearn机器学习之降维(人脸图片数据集)相关推荐

  1. 人脸图片数据集:Olivetti Faces、LFW、YouTube Faces、IMDB WIKI、FDDB

    日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) # https://cs.nyu.edu/~roweis/da ...

  2. svd降维 python案例_菜菜的机器学习sklearn实战-----sklearn中的降维算法PCA和SVD

    菜菜的机器学习sklearn实战-----sklearn中的降维算法PCA和SVD 概述 从什么叫维度说开来 简单讲,shape中返回了几个数字就是几维. 一张表最多就是一维 当一个数组中存在2张3行 ...

  3. 《菜菜的机器学习sklearn课堂》降维算法PCA和SVD

    降维算法PCA和SVD 什么是维度? sklearn中的降维算法 PCA 与 SVD 降维究竟是怎样实现的? PCA重要参数 n_components 迷你案例:高维数据的可视化 附录 PCA参数列表 ...

  4. ML之分类预测:基于sklearn库的七八种机器学习算法利用糖尿病(diabetes)数据集(8→1)实现二分类预测

    ML之分类预测:基于sklearn库的七八种机器学习算法利用糖尿病(diabetes)数据集(8→1)实现二分类预测 目录 输出结果 数据集展示 输出结果 1.k-NN 2.LoR 4.DT 5.RF ...

  5. 【机器学习】 - 各种人脸数据集下载地址及说明汇总

    1. Olivetti Faces人脸数据集 由40个人组成,共计400张人脸: 每人的人脸图片为10张,包含正脸.侧脸以及不同的表情: 整个数据集就是一张大的人脸组合图片,下载地址:https:// ...

  6. 机器学习实验:使用sklearn的决策树算法对葡萄酒数据集进行分类

    机器学习实验:使用sklearn的决策树算法对葡萄酒数据集进行分类 问题如下: 使用sklearn的决策树算法对葡萄酒数据集进行分类,要求: ①划分训练集和测试集(测试集占20%) ②对测试集的预测类 ...

  7. CV之FR:基于DIY人脸图像数据集(每人仅需几张人脸图片训练)利用Hog方法提取特征和改进的kNN算法实现人脸识别并标注姓名(标注文本标签)—(准确度高达100%)

    CV之FR:基于DIY人脸图像数据集(每人仅需几张人脸图片训练)利用Hog方法提取特征和改进的kNN算法实现人脸识别并标注姓名(标注文本标签)-(准确度高达100%) 目录 基于DIY人脸图像数据集( ...

  8. 机器学习sklearn-PCA降维算法

    1 概述 1.1 什么叫"维度" 对于数组和Series来说,维度就是功能shape返回的结果,shape中返回了几个数字,就是几维. 针对每一张表,维度指的是样本的数量或特征的数 ...

  9. yolo人脸检测数据集_自定义数据集上的Yolo-V5对象检测

    yolo人脸检测数据集 计算机视觉 (Computer Vision) Step by step instructions to train Yolo-v5 & do Inference(fr ...

  10. sklearn+机器学习

    文章目录 一.KNN 1.1 KNN实现分类 1.1.1 二分类 1.1.2 多分类 1.2 回归 二.线性回归 4.1 正则化 4.1.1 岭回归 4.1.2 Lasso回归 五.随机森林 5.1参 ...

最新文章

  1. ESP32,ESP8266之间WiFi互联实验
  2. g++ 安装python_mac编译安装faiss
  3. ACM题解系列之一:刘汝佳:《算法竞赛入门经典》(第2版)
  4. Sharepoin学习笔记—架构系列—07nSharepoint服务(Services)与服务应用程序框架(Service Application Framework) 2
  5. 第十届 蓝桥杯大赛 青少年创意编程 C++组
  6. java 变量名 字符串_如何使字符串值在java中调用特定的现有JButton变量名?
  7. html浮动跟随鼠标,jQuery 图片跟随鼠标浮动
  8. dart 获取手机信息_flutter+dart仿微信App界面聊天实例
  9. mysql wait_timeout=_Mysql的wait_timeout解决_MySQL
  10. 你不知道的Retrofit缓存库RxCache
  11. javascript作用域链详解
  12. 菜鸟译文(二)——使用Java泛型构造模板方法模式
  13. win7下配置IIS(ASP.net)
  14. 高仿小米盒子UI桌面
  15. Android仿人人客户端(v5.7.1)——有关滑动式左侧菜单实现过程中网友的疑问解答
  16. javaScript常用案例
  17. element-ui vue-quill-editor 富文本编辑器 解决插入图片不采用base64 从服务器传图片在显示返回url
  18. BGP路由反射器RR
  19. 【深度学习/机器学习】为什么要归一化?归一化方法详解
  20. java心跳监控服务_JavaHeartBeat-应用服务器心跳检测

热门文章

  1. 聚类分析软件操作流程
  2. 彩影ARP防火墙 v6.0.2(x64)的问题 错误代码1/0 解决方案
  3. oa办公系统服务器网址是什么,OA办公系统登陆地址是多少呢?
  4. 安装“万能解码器”还原真实“解码”(纯以个人兴趣分析)
  5. android 7.1 默认壁纸拉伸问题
  6. 麦咖啡的设置,很长,如果你想百毒不侵的话。。
  7. airtest基本介绍
  8. 给大家推荐一款冰点文档下载器(免登陆,免积分)下载百度,豆丁,畅享网,mbalib,hp009,mab.book118文库文档
  9. 整站下载工具 webzip
  10. WinXP下搭建适合Nokia开发的J2ME环境