APP下载

手写体数字的K-最近邻法识别研究

2018-12-27黄金海

无线互联科技 2018年20期
关键词:手写体正确率准确率

黄金海

(桂林电子科技大学 信息科技学院,广西 桂林 541004)

在模式识别领域,对手写体数字的识别,是许多从事图像处理、机器学习研究人员的入门练习。其实现方法已经有许多成功的案例,王一木等[1]提出自组织映射简化算法在硬件电路上以并行运算实现的手写数字识别。邵虹等[2]提出基于投影定位及数字结构特征的方法识别发票印刷体数字。幸坚炬等[3]提出概率神经网络实现mnist数据集数字的识别,并有较高的准确率。李琼等[4]提出在特征空间中确定SVM最优核方法实现手写数字的识别。以上实现方法都采用不同的算法实现,本文以成功识别手写数字为出发点,提出在pyqt5环境中以K-最近邻(K-Nearest Neighbor,KNN)分类器算法实现手写体数字的识别。

1 KNN算法原理

在机器学习分类方法中,KNN是无监督学习中最简单、易理解的分类算法。该思想是Cover和Hart在1968年的研究工作中提出的,它根据距离函数计算待分类样本X和每个训练样本间的距离(作为相似度),选择与待分类样本距离最小的K个样本作为X的K个最近邻,最后以X的K个最近邻中的大多数样本所属的类别作为X的类别[5]。

KNN算法大致包括如下3个步骤。

(1)算距离:给定测试对象,计算它与训练集中的每个对象的距离。

(2)找邻居:圈定距离最近的K个训练对象,作为测试对象的近邻。

(3)做分类:根据这K个近邻归属的主要类别,来对测试对象分类。

因此,最为关键的就是距离的计算。一般而言,定义一个距离函数d(x,y),需要满足以下几个准则。

d(x,y)=0

d(x,y)≥0

d(x,y)=d(y,x)

d(x,k)+d(k,y)≥d(x,y)

距离计算有很多方法,本文以欧几里得距离(Euclidean distance)实现手写体数字的识别。其计算公式如下:

2 手写体数字图像识别流程

手写数字的原始图像,可以有多种获取方法,本文以画图面板写出任意0~9的数字,并按顺序以jpg格式命名数字图像作为手写体数字的初始样本图像。图1中列举了每个数字的两种手写体样本。

当读入数字样本图片时,首先对数字样本进行图像预处理,预处理过程包括将图片灰度化、缩放为与训练集同等尺寸大小32×32格式、将32×32图片二值化并保存为txt文件。接着K值取3对新保存的txt样本训练;训练完成后根据KNN多数分类法则识别显示。流程如图2所示。

图2 识别流程

3 数据处理

样本的数据处理包含数字的训练和识别两部分。数字的训练集和测试集分别是常用的trainingDigits和testDigits。由于数据集是已经二值化的txt文本格式,需要将32×32的测试集与训练集分别转换为1×1 024的一维向量,把测试集中每一个样本分别与训练中每个样本进行欧几里得距离计算,计算结果按KNN原理分类提取各个样本标签,分别完成预测数字和真实数字的比较。当K值分别取3,5,7,9时,其运算的正确率如表1所示。

表1 不同K值正确率

从表1中可知,当K取3时,正确率最高,达到98.99%。K取取值越大,正确率均略有下降。

4 测试分析

经过上述数据处理分析,测试集与训练集的比较结果有高达97%以上的正确率,那么输入前文所述的20个测试样本,以pyqt5作为显示界面,与训练集中的所有样本进行KNN运算,其测试结果如图3所示。

图3 KNN手写体数字测试图

由图3可知,手写体数字的KNN算法识别准确率与测试集的准确率有较大差距,20个样本中15个正确,错误率高达25%。这表明,KNN算法在手写体数字识别中的应用研究仍有待提高。

5 结语

手写体数字的KNN算法执行效率并不高,识别准确率的提高需要更多训练样本集,如mnist数据集。但是,数据样本集越多,运算的时间就会越长,其效率也会越低。工程应用中人们都希望识别能力既高效准确率又高,技术人员可以尝试其他算法模型来完善识别效果。

猜你喜欢

手写体正确率准确率
哐当(外一首)
哐当(外一首)
不同序列磁共振成像诊断脊柱损伤的临床准确率比较探讨
门诊分诊服务态度与正确率对护患关系的影响
基于大数据下的手写体识别的设计与研发
披着书法外衣的手写体
高速公路车牌识别标识站准确率验证法
生意
品管圈活动在提高介入手术安全核查正确率中的应用