深度学习入门_对ORL数据集进行特征提取降维后SVM分类
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分类相关推荐
- 使用Python和Numpy进行波士顿房价预测任务(二)【深度学习入门_学习笔记】
使用Python和Numpy进行波士顿房价预测任务–详解 目录: 一.数据处理 (1)读入数据 (2)数据形状变换 (3)数据集划分 (4)数据归一化处理 (5)封装成load data函数 二.模型 ...
- 深度学习入门_斋藤康毅_chapter23
系列文章目录 这是第一部分 文章目录 系列文章目录 前言 一.chapter 1 二.chapter感知机 1.numpy生成数组 三. 神经网络 总结 前言 本来是想通过李沐的网课入门深度学习的,但 ...
- 使用Python和Numpy进行波士顿房价预测任务(一)【深度学习入门_学习笔记】
波士顿房价预测是一个经典的机器学习任务,类似于程序员世界的"Hello World".和大家对房价的普遍认知相同,波士顿地区的房价是由诸多因素影响的. 下载数据集:https:// ...
- 将MNIST手写数字数据集导入NumPy数组(《深度学习入门:基于Python的理论与实现》实践笔记)
将MNIST手写数字数据集导入NumPy数组(<深度学习入门:基于Python的理论与实现>实践笔记) 一.下载MNIST数据集(使用urllib.request.urlretrieve( ...
- [TensorFlow深度学习入门]实战九·用CNN做科赛网TibetanMNIST藏文手写数字数据集准确率98%+
[TensorFlow深度学习入门]实战九·用CNN做科赛网TibetanMNIST藏文手写数字数据集准确率98.8%+ 我们在博文,使用CNN做Kaggle比赛手写数字识别准确率99%+,在此基础之 ...
- 深度学习入门(一)快速建立自己的图片数据集
机器学习或深度学习的第一步是获取数据集,一般我们使用业务数据集或公共数据集.本文将介绍使用 Bing Image Search API 和 Python 脚本,快速的建立自己的图片数据集. 1. 快速 ...
- 深度学习试题_初学者入门宝典-机器学习入门资料汇总及学习建议(2018版)
机器学习初学者公众号自从2018年10月开设以来,发表了不少机器学习入门的宝贵资料,受到广大机器学习爱好者的好评,本文对2018年本站发过的文章进行分类和汇总,以便初学者更好地学习. 机器学习入门,初 ...
- 深度学习入门-误差反向传播法(人工神经网络实现mnist数据集识别)
文章目录 误差反向传播法 5.1 链式法则与计算图 5.2 计算图代码实践 5.3激活函数层的实现 5.4 简单矩阵求导 5.5 Affine 层的实现 5.6 softmax-with-loss层计 ...
- 深度学习入门-基于Python的理论入门与实现源代码加mnist数据集下载推荐
深度学习入门-基于Python的理论入门与实现源代码加mnist数据集下载推荐 书籍封面 1-图灵网站下载 书里也说了,可以图灵网站下载https://www.ituring.com.cn/book/ ...
- 深度学习入门源代码下载使用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 ...
最新文章
- Android开源库介绍:AndLinker-Android 上的 IPC 库
- 1.16 快速排序法(Quicksort)
- 深度神经网络实践:车牌识别
- 程序集信息设置.net
- mybatis-Batch Executor
- android webview卡顿检测_Android webview隐藏后跳转新页面input输入卡顿与白屏渲染慢的问题说明及修复方案...
- 如何安装mysql5.5.6_centos6安装mysql5.5.53
- 简易计算器 java_终于写出一个简单的计算器了
- 字节跳动28岁程序员退休:我只想做一个自由的“废物”
- win环境sftp软件_WinSCP中文版
- 武汉往事之撰写的SAP软文被微信公众号充公
- 如何构建数据指标体系?
- matlab 数值积分 截断误差,几种数值积分算法误差分析(10页)-原创力文档
- CentOS配置samba文件共享服务
- php移动端可拖动可视化,可视化编辑uniapp项目DIY拖拽
- 树莓派Zero 2W python3.7 安装tensorflow2.2
- 深度系统对Java的支持,国产操作系统深度deepin V20体验
- 转贴-- CISCO CPOS STM配置示例
- 杭电嵌入式课程设计——上位机
- 行业分析网站-网站分析软件-免费网站详细数据分析软件