【ML-SVM案例学习】svm实现手写数字识别
文章目录
- 前言
- 一、源码分步解析
- 1.引入库
- 2. 设置属性防止中文乱码
- 3.加载数字图片数据
- 4.获取样本数量,并将图片数据格式化
- 5.模型构建
- 6.测试数据部分实际值和预测值获取
- 7.进行图片展示
- 8.把预测错的值的 x值 y值 和y的预测值取出
- 9.通过enumerate,分别拿出x值 y值 和y的预测值的前五个,并画图
- 10.画出5个预测成功的
- 11.结果展示
- 总结
前言
【ML-SVM案例学习】会有十种SVM案例,供大家用来学习。本章实现svm实现手写数字识别。
提示:以下是本篇文章正文内容,下面案例可供参考
一、源码分步解析
1.引入库
代码如下(示例):
import matplotlib as mpl
import matplotlib.pyplot as plt
from sklearn import datasets, svm, metrics
2. 设置属性防止中文乱码
代码如下(示例):
mpl.rcParams['font.sans-serif'] = [u'SimHei']
mpl.rcParams['axes.unicode_minus'] = False
3.加载数字图片数据
digits = datasets.load_digits()
4.获取样本数量,并将图片数据格式化
n_samples = len(digits.images)
data = digits.images.reshape((n_samples, -1))
data.shape
5.模型构建
classifier = svm.SVC(gamma=0.001) # 默认是rbf
# from sklearn.neighbors import KNeighborsClassifier
# classifier = KNeighborsClassifier(n_neighbors=9, weights='distance')
## 使用二分之一的数据进行模型训练
##取前一半数据训练,后一半数据测试
classifier.fit(data[:int(n_samples / 2)], digits.target[:int(n_samples / 2)])
6.测试数据部分实际值和预测值获取
## 后一半数据作为测试集
expected = digits.target[int(n_samples/2):] # y_test
predicted = classifier.predict(data[int(n_samples / 2):])##y_predicted
## 计算准确率
print("分类器%s的分类效果:\n%s\n"% (classifier, metrics.classification_report(expected, predicted)))
## 生成一个分类报告classification_report
print("混淆矩阵为:\n%s" % metrics.confusion_matrix(expected, predicted))
## 生成混淆矩阵
print("score_svm:\n%f" % classifier.score(data[int(n_samples / 2):], digits.target[int(n_samples / 2):]))
7.进行图片展示
plt.figure(facecolor='gray', figsize=(12,5))
8.把预测错的值的 x值 y值 和y的预测值取出
images_and_predictions = list(zip(digits.images[int(n_samples / 2):][expected != predicted], expected[expected != predicted], predicted[expected != predicted]))
9.通过enumerate,分别拿出x值 y值 和y的预测值的前五个,并画图
for index,(image,expection, prediction) in enumerate(images_and_predictions[:5]):plt.subplot(2, 5, index + 1)plt.axis('off') plt.imshow(image, cmap=plt.cm.gray_r, interpolation='nearest') # 把cmap中的灰度值与image矩阵对应,并填充plt.title(u'预测值/实际值:%i/%i' % (prediction, expection))
10.画出5个预测成功的
images_and_predictions = list(zip(digits.images[int(n_samples / 2):][expected == predicted], expected[expected == predicted], predicted[expected == predicted]))
for index, (image,expection, prediction) in enumerate(images_and_predictions[:5]):plt.subplot(2, 5, index + 6)plt.axis('off')plt.imshow(image, cmap=plt.cm.gray_r, interpolation='nearest')plt.title(u'预测值/实际值:%i/%i' % (prediction, expection))plt.subplots_adjust(.04, .02, .97, .94, .09, .2)
plt.show()
11.结果展示
总结
以上就是今天要讲的内容,本文仅仅简单介绍了svm实现手写数字识别,仅供参考学习。
【ML-SVM案例学习】svm实现手写数字识别相关推荐
- 【学习日记】手写数字识别及神经网络基本模型
2021.10.7 [学习日记]手写数字识别及神经网络基本模型 1 概述 张量(tensor)是数字的容器,是矩阵向任意维度的推广,其维度称为轴(axis).深度学习的本质是对张量做各种运算处理,其分 ...
- 深度学习入门实践学习——手写数字识别(百度飞桨平台)——上篇
一.项目平台 百度飞桨 二.项目框架 1.数据处理: 2.模型设计:网络结构,损失函数: 3.训练配置:优化器,资源配置: 4.训练过程: 5.保存加载. 三.手写数字识别任务 1.构建神经网络流程: ...
- 深度学习数字仪表盘识别_【深度学习系列】手写数字识别实战
上周在搜索关于深度学习分布式运行方式的资料时,无意间搜到了paddlepaddle,发现这个框架的分布式训练方案做的还挺不错的,想跟大家分享一下.不过呢,这块内容太复杂了,所以就简单的介绍一下padd ...
- 深度学习项目实战——手写数字识别项目
摘要 本文将介绍的有关于的paddle的实战的相关的问题,并分析相关的代码的阅读和解释.并扩展有关于的python的有关的语言.介绍了深度学习步骤: 1. 数据处理:读取数据 和 预处理操作 2. 模 ...
- 【第一个深度学习模型应用-手写数字识别】
基于BP神经网络的手写数字识别报告 基于BP神经网络的手写数字识别报告 一.任务描述 二.数据集来源 三.方法 3.1 数据集处理方法 3.2.模型结构设计 3.3.模型算法 四.实验 4.1.实验环 ...
- CNN学习MNIST实现手写数字识别
CNN的实现 我们之前已经实现了卷积层和池化层,现在来组合这些层,搭建进行手写数字识别的CNN. # 初始化权重 self.params = {'W1': weight_init_std * np.r ...
- Pytorch 学习 (一)Minst手写数字识别(含特定函数解析)
目录 本人目前在跟随csdn博主 "K同学啊"进行365天深度学习训练营进行学习,这是打卡内容 也作为本人学习的记录. 一.准备部分 三.训练模型 四.正式训练 五.输出 MNIS ...
- [深度学习-1]神经网络-手写数字识别
Date:2018年9月29记 数据及彭亮给出的数据集和源码在下面网址: https://github.com/mnielsen/neural-networks-and-deep-learning 在 ...
- [附代码] 如何用HOG+SVM实现手写数字识别
本文首发于微信公众号[DeepDriving],公众号后台回复关键字[手写数字识别]可获取本文代码链接. 前言 手写数字识别是机器学习和深度学习中一个非常著名的入门级图像识别项目,很多人都是从这个项目 ...
- Paddle实践:手写数字识别
文章目录 前言 1. Paddle手写数字识别过程 2. Paddle手写数字识别训练与推理过程实现 总结 参考 前言 趁着国庆尾巴,复习了Paddle框架进行深度学习实践:手写数字识别,这里分享下模 ...
最新文章
- UITableView 关键操作
- python绘制坐标图_Python绘制主次坐标图
- LSTM:《Understanding LSTM Networks》的翻译并解读
- 汇编语言 用加法计算123*236,结果存在ax中
- 如何在Kubernetes里创建一个Nginx应用
- Elasticsearch增删改查 之 —— Delete删除
- 华为路由交换常见配置
- @Autowired与@Resource用法
- c语言坐标轮换法_优化设计-鲍威尔法程序(c语言)
- 祝福新年快乐的c语言代码,“春节十二响”C语言代码开源了,命名是亮点
- java 代码块 构造函数_Java学习笔记之------构造函数,静态关键字,静态代码块,构造代...
- day03 python基础
- BZOJ 2429: [HAOI2006]聪明的猴子|最小生成树kruskal
- AUTOCAD——创建可编辑属性块
- Android混淆技术综述
- MATLAB三点确定圆
- pc豌豆荚怎么root,豌豆荚使用教程
- BWAPP靶场-HTML injection-Reflected(GET)
- android 双屏壁纸,怎么让双屏显示壁纸不一样
- 我们都只是一朵浮萍罢了