python识别手写文字_Python机器学习之手写数字辨识

手写体辨识

手写体文本辨识问题可以追溯到第一代从手写体文档中识别单个字符的自动化机器。例如,你可以想象这样一个场景:邮局里信件堆积如山,因此需要借助自动化手段识别五位邮政编码,而只有正确识别,才能实现自动化和高效地分拣邮件。面对该应用场景,你可能想到多种应用,其中也许会有OCR(Optical Character Recognition,光学字符识别)软件,它读入手写体或印刷体文本,识别其中的文字后,生成常用的电子文档。

手写体识别问题还可以继续向前追溯,更准确地说可以追溯到20世纪20年代,即Emanuel Goldberg开始着手研究这个问题的时候。它当时提出了统计方法可能是最佳的选择。

scikit-learn库提供了一个很棒的例子,便于我们更好地理解手写体识别技术、相关问题以及用机器学习方法识别文本的可能性。

用scikit-learn库识别手写体数字

用scikit-learn库分析这类数据所用的方法,跟我们前面使用的数据集其实是有所不同的。带分析数据不仅涉及数值或字符串类型的处理,还涉及图像和声音文件的处理。

因此,我们可以将我们要面对的问题看作是读取和解释手写体数字图像,预测图像之中的数值。

这类数据分析问题,需要用到估计器(estimator)。它借助fit( )函数进行学习,待自己的预测能力(模型足够有效)达到一定水准后,再用predict( )函数给出预测结果。拿到结果之后,我们还会讨论训练集和验证集。与之前不同,这两个数据集是由一系列图像组成的。

这个例子可以用sklearn.svm.SVC估计器,它使用的是SVC技术。

因此,我们需要导入scikit-learn库的svm模块。接着,创建SVC类型的估计器,并初始化设置。无需为C和gamma选项设置特殊值,使用一般值即可,分析过程中可再做调整。

2fdda3cc7cd98d108573f2c953d0010a79ec9093.png?token=2491abb3d0450731ad256f449eb7f4a6&s=21C213665EE09F6C0CD9F5060300E0C3

Digits数据集

我们之前就提过,scikit-learn库提供了大量的数据集,可用于测试数据分析相关的问题和结果预测问题。其中,对于这里要说的手写体数字识别问题,我们可以使用它的Digits图像数据集。

该数据集包含了1797张8x8像素大小的灰度图,图像的内容为一个手写体数字。首先我们先导入Digits数据集,加载数据集后,对它里面的内容略作分析。首先,我们访问DESCR属性,读取数据集自带的大量说明:

9358d109b3de9c8283dbe67b1e6e390e1bd843ff.png?token=cab3d1ce34f0dd9f2e989ae634756764&s=61F2836442F49E6D5E6D74010300E0C3

2e2eb9389b504fc2548c528a91325e1592ef6d66.png?token=e88570b8813db38faf1e9b7951123792&s=E8E2336783ADB94B4C7DB00F0300E081

手写体数字图像的数据,则存储在digits.image数组中。数组中的每个元素表示一张图像,每个元素为8x8形状的矩阵,矩阵各项为数值类型,每个数值对应一种灰度等级,其中0对应白色,15对应黑色。

43a7d933c895d143afc06fa4011f3b0658af07f2.png?token=7e92dd1c14f46c1e83abf4bdfa61b5da&s=61D2036602F48E6F5C6130010300E0C3

b3fb43166d224f4a99b1121b7a1829569922d186.png?token=1ab374ac9c71378c008c790aec5714ff&s=6BC2136676E5BD5B5ED5950F0300A081

可以借助于matplotlib库为数组元素生成图像,这样我们看起来会更加直观。

f703738da97739123334ec498bf63f1c377ae2f8.png?token=257cda3b612b49c244e1eb0c47ff8352&s=61D2836652F48E6F5C71AC030300B0C3

d4628535e5dde7111b5ba4d6d400771f9c16617d.png?token=a9a0da4c8d928b542b02f513e574cf2b&s=FBA83862A2D7E59A0C39F1CF030030E0

图像所表示的数字,也就是目标值,则存储在digits.targets数组之中。

2e2eb9389b504fc2d781d24c96325e1592ef6d94.png?token=7cbca9a51946aebcc8e5edb29e8cfd28&s=E9C2A34212F48C6F4CF1AD0B0300E0C3

b21c8701a18b87d6d2c36a2974e7913c1e30fd7c.png?token=64cf5b6c79b975136566666c390ef9ea&s=2BC213664EE48F6C0ED19D060300E0C1

这样我们就可以得到我们的目标识别值啦。下面一节中,我们将更为具体地讲解如何将其用于学习以及预测中。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值