ORL人脸数据集共包含40个不同人的400张图像。所有图像都是以PGM格式存储的灰度图。每一个目录下的图像是在不同的时间、不同的光照、不同的面部表情条件下采集的。在该数据集中,每个人有10张照片。这10张照片中,前8张作为训练集,而后2张归为测试集。这样可以获得一个40×8大小的训练集,以及40×2大小的测试集。

特征提取

先将每张图片展开成 1x10304的维度,这里展开时会丢失一些图像信息,暂未采用卷积神经网络来进行规避。人脸数据有40种人脸,我们就用1到40来表示类别(py语言中for循环就是(1,41)),但是要注意在把400组1x10304的特征向量进行堆叠时是从第二次开始的。特征向量矩阵最后一列为类别,故最后的特征向量矩阵为400x10305

import numpy as np
from PIL import Image
import sklearnclass_fisher = []feature = np.array([[0]])
for i in range(1, 41):class_fisher.append(i)class_arry = np.array(class_fisher)for j in range(1, 11):path = 's{}/{}.pgm'.format(i, j)data = np.asarray(Image.open(path))value = np.column_stack((np.reshape(data, (1, -1)), class_arry))if i == 1 and j == 1:feature = valuecontinue   feature = np.row_stack((feature, value))class_fisher.pop()
np.savetxt('feature.txt', feature)

PCA降维

利用PCA降维至15维度,SVM系数C取50(可以根据模型预测情况变化),核函数选取的高斯核rbf


from sklearn.decomposition import PCA
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC
train_data = np.loadtxt('feature.txt')
data = train_data[:, :10304]
target = train_data[:, -1:]
x_train, x_test, y_train, y_test = train_test_split(data, target, test_size=0.2)
pca = PCA(n_components=15)
x_train = pca.fit_transform(x_train)
model = SVC(C=50,kernel="rbf")
model.fit(x_train, y_train)
x_trans = pca.transform(x_test)
y_predict = model.predict(x_trans)
print('测试集前20个样本类别:', y_test[:20].tolist())
print('测试集前20个样本预测类别:', y_predict[:20])
from sklearn.metrics import classification_report
print(classification_report(y_test, y_predict))

完整代码

import numpy as np
from PIL import Image
import sklearnclass_fisher = []feature = np.array([[0]])
for i in range(1, 41):class_fisher.append(i)class_arry = np.array(class_fisher)for j in range(1, 11):path = 's{}/{}.pgm'.format(i, j)data = np.asarray(Image.open(path))value = np.column_stack((np.reshape(data, (1, -1)), class_arry))if i == 1 and j == 1:feature = valuecontinuefeature = np.row_stack((feature, value))class_fisher.pop()
np.savetxt('feature.txt', feature)from sklearn.decomposition import PCA
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC
train_data = np.loadtxt('feature.txt')
data = train_data[:, :10304]
target = train_data[:, -1:]
x_train, x_test, y_train, y_test = train_test_split(data, target, test_size=0.2)
pca = PCA(n_components=15)
x_train = pca.fit_transform(x_train)
model = SVC(C=50,kernel="rbf")
model.fit(x_train, y_train)
x_trans = pca.transform(x_test)
y_predict = model.predict(x_trans)
print('测试集前20个样本类别:', y_test[:20].tolist())
print('测试集前20个样本预测类别:', y_predict[:20])
from sklearn.metrics import classification_report
print(classification_report(y_test, y_predict))

深度学习入门_对ORL数据集进行特征提取降维后SVM分类相关推荐

  1. 使用Python和Numpy进行波士顿房价预测任务(二)【深度学习入门_学习笔记】

    使用Python和Numpy进行波士顿房价预测任务–详解 目录: 一.数据处理 (1)读入数据 (2)数据形状变换 (3)数据集划分 (4)数据归一化处理 (5)封装成load data函数 二.模型 ...

  2. 深度学习入门_斋藤康毅_chapter23

    系列文章目录 这是第一部分 文章目录 系列文章目录 前言 一.chapter 1 二.chapter感知机 1.numpy生成数组 三. 神经网络 总结 前言 本来是想通过李沐的网课入门深度学习的,但 ...

  3. 使用Python和Numpy进行波士顿房价预测任务(一)【深度学习入门_学习笔记】

    波士顿房价预测是一个经典的机器学习任务,类似于程序员世界的"Hello World".和大家对房价的普遍认知相同,波士顿地区的房价是由诸多因素影响的. 下载数据集:https:// ...

  4. 将MNIST手写数字数据集导入NumPy数组(《深度学习入门:基于Python的理论与实现》实践笔记)

    将MNIST手写数字数据集导入NumPy数组(<深度学习入门:基于Python的理论与实现>实践笔记) 一.下载MNIST数据集(使用urllib.request.urlretrieve( ...

  5. [TensorFlow深度学习入门]实战九·用CNN做科赛网TibetanMNIST藏文手写数字数据集准确率98%+

    [TensorFlow深度学习入门]实战九·用CNN做科赛网TibetanMNIST藏文手写数字数据集准确率98.8%+ 我们在博文,使用CNN做Kaggle比赛手写数字识别准确率99%+,在此基础之 ...

  6. 深度学习入门(一)快速建立自己的图片数据集

    机器学习或深度学习的第一步是获取数据集,一般我们使用业务数据集或公共数据集.本文将介绍使用 Bing Image Search API 和 Python 脚本,快速的建立自己的图片数据集. 1. 快速 ...

  7. 深度学习试题_初学者入门宝典-机器学习入门资料汇总及学习建议(2018版)

    机器学习初学者公众号自从2018年10月开设以来,发表了不少机器学习入门的宝贵资料,受到广大机器学习爱好者的好评,本文对2018年本站发过的文章进行分类和汇总,以便初学者更好地学习. 机器学习入门,初 ...

  8. 深度学习入门-误差反向传播法(人工神经网络实现mnist数据集识别)

    文章目录 误差反向传播法 5.1 链式法则与计算图 5.2 计算图代码实践 5.3激活函数层的实现 5.4 简单矩阵求导 5.5 Affine 层的实现 5.6 softmax-with-loss层计 ...

  9. 深度学习入门-基于Python的理论入门与实现源代码加mnist数据集下载推荐

    深度学习入门-基于Python的理论入门与实现源代码加mnist数据集下载推荐 书籍封面 1-图灵网站下载 书里也说了,可以图灵网站下载https://www.ituring.com.cn/book/ ...

  10. 深度学习入门源代码下载使用mnist数据集出现错误EOFError Compressed file ended before the end-of-stream marker was reached

    深度学习入门:基于Python的理论与实现源代码下载使用mnist数据集出现错误[EOFError: Compressed file ended before the end-of-stream ma ...

最新文章

  1. Android开源库介绍:AndLinker-Android 上的 IPC 库
  2. 1.16 快速排序法(Quicksort)
  3. 深度神经网络实践:车牌识别
  4. 程序集信息设置.net
  5. mybatis-Batch Executor
  6. android webview卡顿检测_Android webview隐藏后跳转新页面input输入卡顿与白屏渲染慢的问题说明及修复方案...
  7. 如何安装mysql5.5.6_centos6安装mysql5.5.53
  8. 简易计算器 java_终于写出一个简单的计算器了
  9. 字节跳动28岁程序员退休:我只想做一个自由的“废物”
  10. win环境sftp软件_WinSCP中文版
  11. 武汉往事之撰写的SAP软文被微信公众号充公
  12. 如何构建数据指标体系?
  13. matlab 数值积分 截断误差,几种数值积分算法误差分析(10页)-原创力文档
  14. CentOS配置samba文件共享服务
  15. php移动端可拖动可视化,可视化编辑uniapp项目DIY拖拽
  16. 树莓派Zero 2W python3.7 安装tensorflow2.2
  17. 深度系统对Java的支持,国产操作系统深度deepin V20体验
  18. 转贴-- CISCO CPOS STM配置示例
  19. 杭电嵌入式课程设计——上位机
  20. 行业分析网站-网站分析软件-免费网站详细数据分析软件

热门文章

  1. java计数器_Java高效计数器
  2. 模式识别与机器学习---绪论
  3. ITIL是什么意思?ITIL是什么?
  4. 联想服务器电脑找不到wifi网络,联想笔记本无线网络找不到怎么办
  5. 2014,这些邮件设计好厉害!
  6. 反弹c语言作业,C语言实现反弹球游戏
  7. 英汉汉英词典,牛津高级词典,电子词典,离线英汉,汉英词典的使用方法
  8. JAVA中ResourceBundle使用详解
  9. 你在家看电视,家里的电视也在看你?
  10. 海量数据处理的方法总结