【Python实例第13讲】识别手写数字
机器学习训练营——机器学习爱好者的自由交流空间(入群联系qq:2279055353)
这个例子显示怎样使用scikit-learn识别手写数字图像。关于手写数字数据集的详细介绍,请看《Python实例第3讲》。
实例详解
首先,加载matplotlib.pyplot绘图库和导入数据集、svm(支持向量机)分类器和分类测度模块。
import matplotlib.pyplot as plt
from sklearn import datasets, svm, metrics
导入数据集
digits
数据集由 8×8\small{8\times 8}8×8 的手写数字图像组成,这些图像存储在数据集的images
属性里。让我们看一看前4幅图像,每幅图像有相同的大小,它代表的实际数字在targets
属性里。
digits = datasets.load_digits()images_and_labels = list(zip(digits.images, digits.target))
for index, (image, label) in enumerate(images_and_labels[:4]):plt.subplot(2, 4, index + 1)plt.axis('off')plt.imshow(image, cmap=plt.cm.gray_r, interpolation='nearest')plt.title('Training: %i' % label)plt.show()
为了在数据集上应用一个分类器,我们需要将图像“变平”,也就是,把一幅图像等价地转换成一个(样本,特征)矩阵。
n_samples = len(digits.images)
data = digits.images.reshape((n_samples, -1))
分类学习
现在,产生一个svm分类器,并且在前一半的数据上训练该分类器。
classifier = svm.SVC(gamma=0.001)
classifier.fit(data[:n_samples // 2], digits.target[:n_samples // 2])
然后,用训练好的分类器预测后一半数字,并计算预测精度矩阵。
expected = digits.target[n_samples // 2:]
predicted = classifier.predict(data[n_samples // 2:])print("Classification report for classifier %s:\n%s\n"% (classifier, metrics.classification_report(expected, predicted)))
print("Confusion matrix:\n%s" % metrics.confusion_matrix(expected, predicted))
最后,可视化预测结果。
images_and_predictions = list(zip(digits.images[n_samples // 2:], predicted))
for index, (image, prediction) in enumerate(images_and_predictions[:4]):plt.subplot(2, 4, index + 5)plt.axis('off')plt.imshow(image, cmap=plt.cm.gray_r, interpolation='nearest')plt.title('Prediction: %i' % prediction)plt.show()
精彩内容,请关注微信公众号:统计学习与大数据
【Python实例第13讲】识别手写数字相关推荐
- opencv(python)使用knn最近邻算法识别手写数字
knn最近邻算法是一种分类以及回归算法,算法原理是一个样本与样本集中k个样本最相似,如果这k个样本的大多数也属于同一个类别,则该样本也属于这一类.关于knn算法的详细原理读者可以在网上找一些资料了解下 ...
- 简单python代码实现三层神经网络识别手写数字
准备 这个过程非常简单,就是用到了很多的矩阵运算. 训练数据集下载地址, 测试数据集下载地址, 数据格式 .csv格式数据的每一行都是一个28*28像素的手写数字图片,每一行的第一个像素是数字的值,从 ...
- BP神经网络理解原理——用Python编程实现识别手写数字(翻译英文文献)
BP神经网络理解原理--用Python编程实现识别手写数字 备注,这里可以用这个方法在csdn中编辑公式: https://www.zybuluo.com/codeep/note/163962 一 ...
- 利用python实现简单的人工神经网络识别手写数字
利用 Python 搭建起了一个简单的神经网络模型,并完成识别手写数字. 1.前置工作 1.1 环境配置 这里使用scikit-learn库内建的手写数字字符集作为本文的数据集.scikit-lear ...
- python识别数字程序_python实现识别手写数字 python图像识别算法
写在前面 这一段的内容可以说是最难的一部分之一了,因为是识别图像,所以涉及到的算法会相比之前的来说比较困难,所以我尽量会讲得清楚一点. 而且因为在编写的过程中,把前面的一些逻辑也修改了一些,将其变得更 ...
- Python徒手实现识别手写数字—图像识别算法(K最近邻)
Python徒手实现识别手写数字-图像识别算法(K最近邻) 写在前面 这一段的内容可以说是最难的一部分之一了,因为是识别图像,所以涉及到的算法会相比之前的来说比较困难,所以我尽量会讲得清楚一点. 而且 ...
- python手写数字识别实验报告_python实现识别手写数字 python图像识别算法
写在前面 这一段的内容可以说是最难的一部分之一了,因为是识别图像,所以涉及到的算法会相比之前的来说比较困难,所以我尽量会讲得清楚一点. 而且因为在编写的过程中,把前面的一些逻辑也修改了一些,将其变得更 ...
- Python神经网络识别手写数字-MNIST数据集
Python神经网络识别手写数字-MNIST数据集 一.手写数字集-MNIST 二.数据预处理 输入数据处理 输出数据处理 三.神经网络的结构选择 四.训练网络 测试网络 测试正确率的函数 五.完整的 ...
- CNN识别手写数字-莫烦python
搭建一个 CNN识别手写数字 前面跟着莫烦python/tensorflow教程完成了神经网络识别手写数字的代码,这一part是cnn识别手写数字的 import tensorflow as tf f ...
- python手机代码识别数字_利用python构建神经网络识别手写数字(附源代码)
一.运行环境配置 本次实验的运行环境win10(bit64),采用python环境为3.7.6,安装Python环境推荐使用Anaconda.Anaconda是一个免费开源的Python和R语言的发行 ...
最新文章
- BZOJ 1923: [Sdoi2010]外星千足虫
- HDU 2836 (离散化DP+区间优化)
- ML:MLOps系列讲解之《基于ML的软件的三个层次之03 Code: Deployment Pipelines》解读
- 北斗导航 | GPS原理与接收机设计——琉璃剑之剑气回肠
- java如果属性为空返回其他_后台返回前台数据(实体类)如果存在为空或‘’的属性,如何过滤掉...
- matlab 作图 虚线太长,matlab 极坐标绘图 在matlab中,用polar画的图形,如何使虚线圆多显示几个?...
- java判断对象无数据_java 对象属性不能为空判断
- 开源 非开源_开源周中的女性
- c语言实验题水仙花数5359,《C语言程序设计》实验报告(实验1-12).doc
- MacOs中Docker与宿主机网络互通问题解决
- paip.提升性能------服务器环境及编程语言架构选择
- RDKit入门教程(1)——RDKit 安装 (Win10)
- 微服务架构之监控预警
- 学生上课睡觉班主任怎么处理_学生上课睡觉,老师该怎么处理?
- docker设置系统开机自动启动,docker容器随着docker服务启动自动运行
- html页面整体变灰,整个页面html变灰
- rpx单位的换算的过程
- java jsp小例题_JSP 相关试题(一)
- //我一次黑别人的电脑时的技术经过!
- openwrt重启后,修复dns