机器学习训练营——机器学习爱好者的自由交流空间(入群联系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讲】识别手写数字相关推荐

  1. opencv(python)使用knn最近邻算法识别手写数字

    knn最近邻算法是一种分类以及回归算法,算法原理是一个样本与样本集中k个样本最相似,如果这k个样本的大多数也属于同一个类别,则该样本也属于这一类.关于knn算法的详细原理读者可以在网上找一些资料了解下 ...

  2. 简单python代码实现三层神经网络识别手写数字

    准备 这个过程非常简单,就是用到了很多的矩阵运算. 训练数据集下载地址, 测试数据集下载地址, 数据格式 .csv格式数据的每一行都是一个28*28像素的手写数字图片,每一行的第一个像素是数字的值,从 ...

  3. BP神经网络理解原理——用Python编程实现识别手写数字(翻译英文文献)

    BP神经网络理解原理--用Python编程实现识别手写数字   备注,这里可以用这个方法在csdn中编辑公式: https://www.zybuluo.com/codeep/note/163962 一 ...

  4. 利用python实现简单的人工神经网络识别手写数字

    利用 Python 搭建起了一个简单的神经网络模型,并完成识别手写数字. 1.前置工作 1.1 环境配置 这里使用scikit-learn库内建的手写数字字符集作为本文的数据集.scikit-lear ...

  5. python识别数字程序_python实现识别手写数字 python图像识别算法

    写在前面 这一段的内容可以说是最难的一部分之一了,因为是识别图像,所以涉及到的算法会相比之前的来说比较困难,所以我尽量会讲得清楚一点. 而且因为在编写的过程中,把前面的一些逻辑也修改了一些,将其变得更 ...

  6. Python徒手实现识别手写数字—图像识别算法(K最近邻)

    Python徒手实现识别手写数字-图像识别算法(K最近邻) 写在前面 这一段的内容可以说是最难的一部分之一了,因为是识别图像,所以涉及到的算法会相比之前的来说比较困难,所以我尽量会讲得清楚一点. 而且 ...

  7. python手写数字识别实验报告_python实现识别手写数字 python图像识别算法

    写在前面 这一段的内容可以说是最难的一部分之一了,因为是识别图像,所以涉及到的算法会相比之前的来说比较困难,所以我尽量会讲得清楚一点. 而且因为在编写的过程中,把前面的一些逻辑也修改了一些,将其变得更 ...

  8. Python神经网络识别手写数字-MNIST数据集

    Python神经网络识别手写数字-MNIST数据集 一.手写数字集-MNIST 二.数据预处理 输入数据处理 输出数据处理 三.神经网络的结构选择 四.训练网络 测试网络 测试正确率的函数 五.完整的 ...

  9. CNN识别手写数字-莫烦python

    搭建一个 CNN识别手写数字 前面跟着莫烦python/tensorflow教程完成了神经网络识别手写数字的代码,这一part是cnn识别手写数字的 import tensorflow as tf f ...

  10. python手机代码识别数字_利用python构建神经网络识别手写数字(附源代码)

    一.运行环境配置 本次实验的运行环境win10(bit64),采用python环境为3.7.6,安装Python环境推荐使用Anaconda.Anaconda是一个免费开源的Python和R语言的发行 ...

最新文章

  1. BZOJ 1923: [Sdoi2010]外星千足虫
  2. HDU 2836 (离散化DP+区间优化)
  3. ML:MLOps系列讲解之《基于ML的软件的三个层次之03 Code: Deployment Pipelines》解读
  4. 北斗导航 | GPS原理与接收机设计——琉璃剑之剑气回肠
  5. java如果属性为空返回其他_后台返回前台数据(实体类)如果存在为空或‘’的属性,如何过滤掉...
  6. matlab 作图 虚线太长,matlab 极坐标绘图 在matlab中,用polar画的图形,如何使虚线圆多显示几个?...
  7. java判断对象无数据_java 对象属性不能为空判断
  8. 开源 非开源_开源周中的女性
  9. c语言实验题水仙花数5359,《C语言程序设计》实验报告(实验1-12).doc
  10. MacOs中Docker与宿主机网络互通问题解决
  11. paip.提升性能------服务器环境及编程语言架构选择
  12. RDKit入门教程(1)——RDKit 安装 (Win10)
  13. 微服务架构之监控预警
  14. 学生上课睡觉班主任怎么处理_学生上课睡觉,老师该怎么处理?
  15. docker设置系统开机自动启动,docker容器随着docker服务启动自动运行
  16. html页面整体变灰,整个页面html变灰
  17. rpx单位的换算的过程
  18. java jsp小例题_JSP 相关试题(一)
  19. //我一次黑别人的电脑时的技术经过!
  20. openwrt重启后,修复dns

热门文章

  1. Django笔记 —— 模型高级进阶
  2. 《青春》—塞缪尔·厄尔曼
  3. web安全day9:5个实验实实在在学习windows域部署
  4. IS-IS拓展功能补充(华为设备)
  5. 习惯性的对自己没信心,其实没想到自己已经变强大了。
  6. IDEA 中git使用非默认ssh客户端进行登录
  7. Flask构建微电影(一)
  8. 列表生成式、生成器表达式、模块导入
  9. 音视频开发(Anychat如何改善音视频通话过程中的用户体验)
  10. 创建Maven web工程不能解析EL表达式的解决办法