在手写数字识别的例子中_手写识别

在手写数字识别的例子中_手写识别1.概念介绍:图像识别(ImageRecognition)是指利用计算机对图像进行处理、分析和理解,以识别各种不同模式的目标和对像的技术。 图像识别的发展经历了三个阶段:文字识别、数字图像处理与识别、物体识别。机器学习领域一般将此类识别问题转化为分类问题。手写识别是常见的图像识别任务。计算机通过手写体图片来识别出图片中的字,与印刷字体不同的是,不同人的手写体风…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

1.概念介绍:

图像识别(Image Recognition)是指利用计算机对图像进行处理、分析和理解,以识别各种不同模式的目标和对像的技术。 

图像识别的发展经历了三个阶段:文字识别、数字图像处理与识别、物体识别。机器学习领域一般将此类识别问题转化为分类问题。

手写识别是常见的图像识别任务。计算机通过手写体图片来识别出图片中的字,与印刷字体不同的是,不同人的手写体风格迥异,大小不一, 造成了计算机对手写识别任务的一些困难。 

数字手写体识别由于其有限的类别(0~9共10个数字)成为了相对简单 的手写识别任务。DBRHD和MNIST是常用的两个数字手写识别数据集

2.数据介绍:

MNIST的下载链接:http://yann.lecun.com/exdb/mnist/。

MNIST是一个包含数字0~9的手写体图片数据集,图片已归一化为以手写数 字为中心的28*28规格的图片。

MNIST由训练集与测试集两个部分组成,各部分 规模如下: 

                                         训练集:60,000个手写体图片及对应标签 

                                         测试集:10,000个手写体图片及对应标签

在手写数字识别的例子中_手写识别

DBRHD(Pen-Based Recognition of Handwritten Digits Data Set)是UCI的机器学习中心提供的数字手写体数据库: https://archive.ics.uci.edu/ml/datasets/PenBased+Recognition+of+Handwritten+Digits。 

DBRHD数据集包含大量的数字0~9的手写体图片,这些图片来源于44位不同的人的手写数字,图片已归一化为以手写数字为中心的32*32规格的图片。

DBRHD的训练集与测试 集组成如下:

                                                  训练集:7,494个手写体图片及对应标签,来源于40位手写者 

                                                  测试集:3,498个手写体图片及对应标签,来源于14位手写者

在手写数字识别的例子中_手写识别

在手写数字识别的例子中_手写识别

3.任务过程:

在手写数字识别的例子中_手写识别

①输入

在手写数字识别的例子中_手写识别

②输出

在手写数字识别的例子中_手写识别

③MPL的结构

在手写数字识别的例子中_手写识别

④步骤

在手写数字识别的例子中_手写识别

import numpy as np
#使用listdir模块,用于访问本地文件
from os import listdir
from sklearn.neural_network import MLPClassifier

Jetbrains全家桶1年46,售后保障稳定

#定义img2vector函数,将加载的3232 的图片矩阵展开成一列向量
def img2vector(fileName):
retMat =np.zeros([1024],int)
fr = open(fileName) #打开包含3232大小的数字文件
lines =fr.readlines() #读取文件的所有行
for i in range(32):
for j in range(32): #将01数字存放在retMat
retMat[i*32+j]=lines[i][j];
return retMat
#并将样本标签转化为one-hot向量
def readDataSet(path):
fileList =listdir(path) #获取文件夹下所有文件
numFiles =len(fileList) #统计需要读取的文件的数目
dataSet =np.zeros([numFiles,1024],int) #用于存放所有的数字文件
hwLabels =np.zeros([numFiles,10]) #用于存放对应的标签one-hot
for i in range(numFiles):
filePath =fileList[i] #获取文件名称/路径
digit =int(filePath.split(’_’)[0])
hwLabels[i][digit]=1.0
dataSet[i]=img2vector(path+’/’+filePath)#读取文件内容
return dataSet,hwLabels
train_dataSet,train_hwLabels =readDataSet(‘trainingDigits’)

#构建神经网络:设置网络的隐藏层数、各隐藏层神经元个数、
# 激活函数、学习率、优化方法、最大迭代次数。
#hidden_layer_sizes 存放的是一个元组,表示第i层隐藏层里神经元的个数
# 使用logistic激活函数和adam优化方法,并令初始学习率为0.0001
clf =MLPClassifier(hidden_layer_sizes=(50,),activation=‘logistic’,
solver=‘adam’,learning_rate_init=0.0001,max_iter=2000)
#fit函数能够根据训练集及对应标签集自动设置多层感知机的输入与输出层的神经元个数。
#例如train_dataSet为n1024的矩阵,train_hwLabels为n10的矩阵,
# 则fit函数将MLP的输入层神经元个数设为1024,输出层神经元个数为 10.
clf.fit(train_dataSet,train_hwLabels)

#测试集评价
dataSet,hwlLabels =readDataSet(‘testDigits’)
res=clf.predict(dataSet) #对测试集进行预测
error_num =0 #统计预测错误的数目
num =len(dataSet) #测试集的数目
for i in range(num):
#比较长度为10的数组,返回包含01的数组,0为不同,1为相同
if np.sum(res[i]==hwlLabels[i])<10:
error_num+=1
print(“Total num:”,num,“Wrong num:”,error_num,” WrongRate:”,error_num/float(num))

实验效果:

以下结果为课程结果,我自己实验的结果与这个结果相差不大。

在手写数字识别的例子中_手写识别

在手写数字识别的例子中_手写识别

在手写数字识别的例子中_手写识别

2.使用KNN分类器识别数据集DBRHD的手写数字(内容与上面差不多,只是使用算法有些差别)

在手写数字识别的例子中_手写识别

在手写数字识别的例子中_手写识别

import numpy as np
#使用listdir模块,用于访问本地文件
from os import listdir
from sklearn import neighbors

#定义img2vector函数,将加载的3232 的图片矩阵展开成一列向量
def img2vector(fileName):
retMat =np.zeros([1024],int)
fr = open(fileName) #打开包含3232大小的数字文件
lines =fr.readlines() #读取文件的所有行
for i in range(32):
for j in range(32): #将01数字存放在retMat
retMat[i*32+j]=lines[i][j];
return retMat
#并将样本标签转化为one-hot向量
def readDataSet(path):
fileList =listdir(path) #获取文件夹下所有文件
numFiles =len(fileList) #统计需要读取的文件的数目
dataSet =np.zeros([numFiles,1024],int) #用于存放所有的数字文件
hwLabels =np.zeros([numFiles,10]) #用于存放对应的标签one-hot
for i in range(numFiles):
filePath =fileList[i] #获取文件名称/路径
digit =int(filePath.split(’_’)[0])
hwLabels[i][digit]=1.0
dataSet[i]=img2vector(path+’/’+filePath)#读取文件内容
return dataSet,hwLabels
train_dataSet,train_hwLabels =readDataSet(‘trainingDigits’)
#构建KNN分类器:设置查找算法以及邻居点 数量(k)值。
#KNN是一种懒惰学习法,没有学习过程,只在预测时去查找最近邻的点,
#数据集的输入就是构建KNN分类器的过程
knn =neighbors.KNeighborsClassifier(algorithm=‘kd_tree’,n_neighbors=3)
knn.fit(train_dataSet,train_hwLabels)

#测试集评价
dataSet,hwlLabels =readDataSet(‘testDigits’)
res=knn.predict(dataSet) #对测试集进行预测
error_num =np.sum(res!=hwlLabels) #统计预测错误的数目
num =len(dataSet) #测试集的数目

print(“Total num:”,num,“Wrong num:”,error_num,” WrongRate:”,error_num/float(num))

实验结果(同上)

在手写数字识别的例子中_手写识别

在手写数字识别的例子中_手写识别

在手写数字识别的例子中_手写识别

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/234904.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 安装配置 | 用同济邮箱账户下载matlab

    安装配置 | 用同济邮箱账户下载matlabrefer:http://software.tongji.edu.cn/Home#9&1544step1/注册同济邮箱同济大学邮件系统登陆:https://mail.tongji.edu.cn/coremail/index.jspstep2/用同济邮箱注册mathwork账户并关联许可证出现提示时,以1830206@tongji.edu.cn登录…

    2022年7月25日
    17
  • Jenkins(3)拉取git仓库代码,执行python自动化脚本「建议收藏」

    Jenkins(3)拉取git仓库代码,执行python自动化脚本「建议收藏」前言python自动化的脚本开发完成后需提交到git代码仓库,接下来就是用Jenkins拉取代码去构建自动化代码了新建项目打开Jenkins新建一个自由风格的项目源码管理Repository

    2022年7月31日
    5
  • SpringCloud之Eureka使用篇

    1.单例EurekaServer1.1环境准备1.首先我这里有spring-cloud-parentpom工程2.spring-cloud-eureka-serverEurekaServer子工程这里端口我们使用90开头3.spring-cloud-order-service-consumer订单调用服务(也就是咱们的服务消费者)这里端口我们使用80开头4.spring-cloud-order-service-provider订单提供服务(服务提供者)这里端口我们使

    2022年4月6日
    56
  • C语言贪吃蛇代码_c语言贪吃蛇游戏

    C语言贪吃蛇代码_c语言贪吃蛇游戏一、C语言贪吃蛇代码实现前言设计贪吃蛇游戏的主要目的是让大家夯实C语言基础,训练编程思维,培养解决问题的思路,领略多姿多彩的C语言。贪吃蛇是非常经典的一款游戏,本次我们模拟在控制台实现贪吃蛇游戏,也就是实现贪吃蛇的基本功能,比如在地图中,用“↑↓←→”控制移动蛇的方向,吃掉食物之后,蛇身体会变长等等。。。。首先我们得分析,游戏中我们会碰见的一些情况。①蛇的部分,蛇的身子是一节一节的,此时最容易联想到的数据结构就是顺序表,链表,如果把蛇比做顺序表或者链表,在之后吃到食物的时候,身子肯定会变长,

    2025年9月6日
    5
  • GT注册大全-终结动态修订版「建议收藏」

    GT注册大全-终结动态修订版「建议收藏」本次‘GT注册大全-终结动态修订版’的特点:1.仅中文名称共享软件范围来说为国内乃至世界范围最新最全,通用注册信息有效率最高;2.较之前版本删除了N多已完全失效的注册信息,增加了N多新旧有效注册信息;3.保持了GT注册大全原有的按软件发布时间排列,软件按同系列或同一制作公司及个人软件作者来合并,提供软件相关下载页面或直接下载链接,非通用注册信息一律标明,必要时附带说明等特点;4.进一步完善了‘GT

    2022年5月20日
    32
  • 数据库设计中的14个技巧

    数据库设计中的14个技巧

    2021年12月10日
    48

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号