基于K近邻的手写数字识别.docx

上传人:b****6 文档编号:8745067 上传时间:2023-02-01 格式:DOCX 页数:14 大小:306.61KB
下载 相关 举报
基于K近邻的手写数字识别.docx_第1页
第1页 / 共14页
基于K近邻的手写数字识别.docx_第2页
第2页 / 共14页
基于K近邻的手写数字识别.docx_第3页
第3页 / 共14页
基于K近邻的手写数字识别.docx_第4页
第4页 / 共14页
基于K近邻的手写数字识别.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

基于K近邻的手写数字识别.docx

《基于K近邻的手写数字识别.docx》由会员分享,可在线阅读,更多相关《基于K近邻的手写数字识别.docx(14页珍藏版)》请在冰豆网上搜索。

基于K近邻的手写数字识别.docx

基于K近邻的手写数字识别

暑期生产实习报告

 

题目基于K-近邻算法的手写数字识别

学院电子工程学院

专业智能科学与技术

学生姓名

学号

指导老师

提交日期

摘要

基于k-近邻算法对经典的手写数字集mnist中的测试数据进行分类。

用MATLAB语言编写代码,将原始数据读入,形成三维矩阵,再通过k近邻算法计算出待测数据周围最近的k个数据,将待测数据分为k个数据中最多的类。

本次实验只是用mnist数据中训练图像前6000张,测试图像前1000张。

关键词:

k-近邻算法,数据分类,手写数字集,mnist数据集

 

 

1、绪论

1.1手写数字识别的基本概念

手写数字识别是图像识别的一个分支,它研究的对象是:

如何利用电子计算机自动辨认人手写的阿拉伯数字。

在整个OCR领域中,最为困难的就是脱机手写字符的识别。

到目前为止,尽管人们在脱机手写英文、汉字识别的研究中已取得很多可喜成就,但距实用还有一定距离。

而在手写数字识别这个方向上,经过多年研究,研究工作者已经开始把它向各种实际应用推广,为手写数据的高速自动输入提供了一种解决方案。

1.2手写数字识别的实际背景

字符识别处理的信息可分为两大类:

一类是文字信息,处理的主要是用各国家、各民族的文字(如:

汉字、英文等)书写或印刷的文本信息,目前在印刷体和联机手写方面技术已趋向成熟,并推出了很多应用系统;另一类是数据信息,主要是由阿拉伯数字及少量特殊符号组成的各种编号和统计数据,如:

邮政编码、统计报表、财务报表、银行票据等等,处理这类信息的核心技术是手写数字识别。

这几年来我国开始大力推广的“三金”工程在很大程度上要依赖数据信息的输入,如果能通过手写数字识别技术实现信息的自动录入,无疑会促进这一事业的进展。

因此,手写数字的识别研究有着重大的现实意义,一旦研究成功并投入应用,将产生巨大的社会和经济效益。

1.3手写数字识别的理论意义

手写数字识别作为模式识别领域的一个重要问题,也有着重要的理论价值:

(1)阿拉伯数字是唯一的被世界各国通用的符号,对手写数字识别的研究基本上与文化背景无关,这样就为各国、各地区的研究工作者提供了一个施展才智的大舞台。

在这一领域大家可以探讨,比较各种研究方法。

(2)由于数字识别的类别数较小,有助于做深入分析及验证一些新的理论。

这方面最明显的例子就是人工神经网络,相当一部分的人工神经网络模型都以手写数字识别作为具体的实验平台,验证理论的有效性,评价各种方法的优缺点。

(3)尽管人们对手写数字的识别已从事了很长时间的研究,并已取得了很多成果,但到目前为止机器的识别本领还无法与人的认知能力相比,这仍是一个有难度的开放问题。

(4)手写数字的识别方法很容易推广到其它一些相关问题,一个直接的应用是对英文这样的拼音文字的识别。

事实上,很多学者就是把数字和英文字母的识别放在一块儿研究的。

1.4基于手写数字识别的典型应用

手写数字识别有着极为广泛的应用前景,这也正是它受到世界各国的研究工作者重视的一个主要原因。

下面我们将介绍基于手写数字识别的应用系统的特殊要求,以及一些以手写数字识别技术为基础的典型应用。

(1)手写数字识别在大规模数据统计中的应用

在大规模的数据统计(如:

行业年鉴、人口普查等)中,需要输入大量的数据,以前完全要手工输入,则需要耗费大量的人力和物力。

近年来在这类工作中采用OCR技术已成为一种趋势。

因为在这种应用中,数据的录入是集中组织的,所以往往可以通过专门设计表格和对书写施加限制以便于机器的自动识别。

目前国内的大多数实用系统都要求用户按指定规范在方格内填写。

另外,这些系统往往采用合适的用户界面对识别结果做全面的检查,最终保证结果正确无误。

可以看出,这是一类相对容易的应用,对识别核心算法的要求比较低,是目前国内很多单位应用开发的热点。

(2)手写数字识别在财务、税务、金融领域中的应用

财务、税务、金融是手写数字识别大有可为的又一领域。

随着我国经济的迅速发展,每天等待处理的财务、税务报表、支票、付款单等越来越多。

如果能把它们用计算机自动处理,无疑可以节约大量的时间、金钱和劳力。

与上面提到的统计报表处理相比,在这个领域的应用难度更大,原因有:

1、对识别的精度要求更高;2、处理的表格往往不止一种,一个系统应能智能地同时处理若干种表格;3、由于处理贯穿于整个日常工作之中,书写应尽量按一般习惯(如:

不对书写者的写法做限定,书写时允许写连续的字串,而不是在固定的方格内书写),这样对识别及预处理的核心算法要求也提高了。

(3)手写数字识别在邮件分拣中的应用

随着人们生活水平的提高,经济活动的发展,通信联系的需求使信函的互换量大幅度增加,我国函件业务量也在不断增长,预计到2000年,一些大城市的中心邮局每天处理量将高达几百万件,业务量的急剧上升使得邮件的分拣自动化成为大势所趋。

在邮件的自动分拣中,手写数字识别(OCR)往往与光学条码识别、人工辅助识别等手段相结合,完成邮政编码的阅读。

目前使用量最大的OVCS分拣机的性能指标:

OCR拒分率30%,OCR分拣差错率1.1%。

1.5手写数字识别技术展望

随着国家信息化进程的加快,手写数字识别的应用需求将越来越广泛,因此应当加强这方面的研究工作。

作者认为,应用系统的性能的关键与瓶颈仍然在于手写数字识别核心算法性能上,最终目标是研究零误识率和低拒识率的高速识别算法。

此外,尽早建立反映中国人书写习惯的、具有国家标准性质的手写数字样本库也是当务之急。

2、k近邻算法

2.1k-近邻算法的基本概念

k-近邻算法,即是给定一个训练数据集,对新的输入实例,在训练数据集中找到与该实例最邻近的k个数据,这k个数据的多数属于某个类,就把该输入实例分类到这个类中。

k-近邻算法中,所选择的邻居都是已经正确分类的对象。

该方法在定类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。

k-近邻方法虽然从原理上也依赖于极限定理,但在类别决策时,只与极少量的相邻样本有关。

由于k-近邻方法主要靠周围有限的邻近的样本,而不是靠判别类域的方法来确定所属类别的,因此对于类域的交叉或重叠较多的待分样本集来说,k-近邻方法较其他方法更为适合。

  k-近邻算法不仅可以用于分类,还可以用于回归。

通过找出一个样本的k个最近邻居,将这些邻居的属性的平均值赋给该样本,就可以得到该样本的属性。

更有用的方法是将不同距离的邻居对该样本产生的影响给予不同的权值(weight),如权值与距离成正比(组合函数)。

  该算法在分类时有个主要的不足是,当样本不平衡时,如一个类的样本容量很大,而其他类样本容量很小时,有可能导致当输入一个新样本时,该样本的K个邻居中大容量类的样本占多数。

该算法只计算“最近的”邻居样本,某一类的样本数量很大,那么或者这类样本并不接近目标样本,或者这类样本很靠近目标样本。

无论怎样,数量并不能影响运行结果。

可以采用权值的方法(和该样本距离小的邻居权值大)来改进。

该方法的另一个不足之处是计算量较大,因为对每一个待分类的文本都要计算它到全体已知样本的距离,才能求得它的K个最近邻点。

目前常用的解决方法是事先对已知样本点进行剪辑,事先去除对分类作用不大的样本。

该算法比较适用于样本容量比较大的类域的自动分类,而那些样本容量较小的类域采用这种算法比较容易产生误分。

2.2k近邻算法的工作原理

存在一个样本数据集合(即训练样本集),并且样本集中每个数据都存在标签(即每个数据与所属分类的对应关系)。

输入没有标签的新数据之后,将新数据的每个特征与样本集中数据对应的特征进行比较,算法将提取出样本集中特征最相似数据(最近邻)的分类标签。

一般选择样本数据集中前K个最相似的数据,k一般不大于20的整数。

2.3k近邻算法的算法步骤

Step.1计算已知类别数据集中的点与当前点之间的距离;

Step.2按照距离递增次序排序;

Step.3选取与当前点距离最小的k个点;

Step.4确定前k个点所在类别的出现频率;

Step.5返回前k个点出现频率最高的类别作为当前点的预测分类。

2.4k-近邻算法的优缺点

k-近邻算法拥有以下优点:

精度高、对异常值不敏感、无输入数据假定

k-近邻算法拥有以下缺点:

时间复杂度和空间复杂度都很高

三k近邻算法分类mnist的具体方法

数据先预处理,将下载的初始图像数据读入MATLAB,并储存为三维的矩阵,再读入标签文件,储存为二维矩阵,以便后面的使用。

手写数字图像都为28像素*28像素,对于每一个数字图像,计算其与每一张训练图像的距离,对于一张待测图像与训练图像,计算每一个像素的差值,如果差值大于参数45,则这两站图的距离加一,直到784个像素点全部计算完毕,得到两张图的距离。

再用排序找到与该张数字图像最近的k张图像,对距离最近的k张图像根据训练数据标签进行分类,找到k张图像中最多的数字,该张测试数字图像即划分为该数字类。

四实验结果与分析

4.1待测图像

图4.1待测第1张图

图4.2待测第2张图

图4.3待测第3张图

图4.4待测第4张图

图4.5待测第5张图

图4.6待测第6张图

4.2实验结果

图4.7训练样本三维矩阵

图4.8测试样本三维矩阵

图4.9距离矩阵

图4.10测试图像分类结果

图4.11正确率

图4.12工作区

4.3结果分析

因为所使用的电脑限制,只选取了部分数据集进行实验,所以准确性会有所下降,训练样本数据的增加在一定程度上可以提升正确率。

其次参数的选择对于实验结果的影响比较巨大,本次实验中用到了两个参数,即计算距离时的参数45,以及参数k,两个参数需要多次实验以选取最佳参数来得到最优分类结果。

4.4mnist数据集

Google实验室的CorinnaCortes和纽约大学柯朗研究所的YannLeCun建有一个手写数字数据库,含有0-9的60000张训练图像和0-9的10000测试图像两种,每张图片灰度级都是8,且每张图片可以使用一个784大小的向量表征。

下载网址

五实验代码

1

主程序

clc

clear

k=100;%k距离

a=1000;%待测数据个数

b=6000;%训练数据个数

load('test_IMAGE.mat');%载入待测图像矩阵

load('mnist_train.mat');%载入训练图像矩阵

distance=zeros(a,b);

number=zeros(1,10);

tested_number=zeros(1,a);

FID=fopen('t10k-labels.idx1-ubyte','r');%载入待测图像标签

magicnumber=fread(FID,2);

size=fread(FID,2);

rows=fread(FID,2);

colums=fread(FID,2);

test_label=fread(FID);

FID2=fopen('train-labels.idx1-ubyte','r');%载入训练图像标签

magicnumber=fread(FID2,2);

size=fread(FID2,2);

rows=fread(FID2,2);

colums=fread(FID2,2);

train_label=fread(FID2);

fori=1:

a

forj=1:

b

forp=1:

28

forq=1:

28

if(test_IMAGE(p,q,i)-train_IMAGE(p,q,j))>45

distance(i,j)=distance(i,j)+1;

end

end

end

end

End

%计算距离矩阵

[sorted_distance,sorted_position]=sort(distance,2);%距离矩阵排序

fori=1:

a

forq=1:

10

number(q)=0;

end

forj=1:

k

forp=1:

10

iftrain_label(sorted_position(i,j))==(p-1)

number(p)=number(p)+1;

end

end

end

%计算k距离内数据个类数目

[sorted_number,biggest]=sort(number,2);

tested_number(1,i)=biggest(10)-1;%给待测图像分类

end

right=0;

fori=1:

a

iftested_number(i)==test_label(i)

right=right+1;

end

end

right_rate=right/a;%计算正确率

2

读取原始数据程序

clc

clear

test_IMAGE=zeros(28,28,10000);

FID=fopen('t10k-images.idx3-ubyte','r');

magicnumber=fread(FID,4);

size=fread(FID,4);

rows=fread(FID,4);

colums=fread(FID,4);

fori=1:

10000

train_image=fread(FID,[28,28]);

imshow(train_image');

forp=1:

28

forq=1:

28

test_IMAGE(p,q,i)=train_image(p,q);%赋值给三维矩阵

end

end

end

六总结与展望

6.1总结

本文开始介绍了k近邻算法与需要处理的数据集mnist,并且讲述了k近邻算法的基本思路及步骤,然后对于这次的实验也给出了具体的方法。

最终是实验代码与结果,并对于结果进行了分析。

通过本次实验,首先对于k近邻算法有了一个更加清晰的理解,看了一些其他用k近邻算法来分类手写数字集mnist的优化方法,也明白了自己的一些不足,学习到了新的思路。

其次也学习了手写数字识别的方法,以及数据预处理的基本步骤,总的来说,还是学到了很多知识。

6.2展望

这次的实验结果正确率只有72.8%,还是比较低的,所以我想继续来学习好的优化方法,新的分类方法,来提高分类的正确率。

并且数据挖掘、大数据处理已经成为网络世界的重点,需要更多的学习相关的算法,来更好地充实自己。

参考文献

[1]PeterHarrington.机器学习实战[M].北京:

人民邮电出版社,2013.6

[2]HanJ.w.,M.Kamber.数据挖掘概念与技术[M].北京:

机械工业出版社,2001.1

[3]王玲.基于LBP的特征提取研究[D].北京:

北京交通大学图书馆,2009

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 农学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1