jerryxjr1220 发表于 2017-4-7 11:47:27

python小练习(088):【番外篇】不用机器学习的方法进行数字校验码的自动识别

本帖最后由 jerryxjr1220 于 2017-4-7 14:33 编辑

前面几章都是介绍利用keras搭建的神经网络进行机器的自动学习。

有鱼油反应,机器学习太复杂了,那么有没有办法不用神经网络进行这样的数字图片的自动识别呢?

答案是有的,我们可以利用kNN(k邻近算法)直接比较数字图片的像素点来进行判别。

先讲原理,比如,我有一张数字图片“2”,那么无论这张图片左偏一点或者右转一点,凡是“2”的图片上的像素点与所有其他“2”的图片的像素点的平方差应该是最小的。当然,这个假设是分类的图片足够简单,太复杂的分类kNN算不了。

我们以python小练习(087)的图片为例,我用kNN算法进行了100组数据的测试,结果如下:
Test0 : Predict X: 0 , Actural is: 0 , Result is: True
--------------------------------------------------
Test1 : Predict X: 1 , Actural is: 1 , Result is: True
--------------------------------------------------
Test2 : Predict X: 2 , Actural is: 2 , Result is: True
--------------------------------------------------
Test3 : Predict X: 3 , Actural is: 3 , Result is: True
--------------------------------------------------
Test4 : Predict X: 4 , Actural is: 4 , Result is: True
--------------------------------------------------
Test5 : Predict X: 5 , Actural is: 5 , Result is: True
--------------------------------------------------
Test6 : Predict X: 6 , Actural is: 6 , Result is: True
--------------------------------------------------
Test7 : Predict X: 7 , Actural is: 7 , Result is: True
--------------------------------------------------
Test8 : Predict X: 8 , Actural is: 8 , Result is: True
--------------------------------------------------
Test9 : Predict X: 9 , Actural is: 9 , Result is: True
--------------------------------------------------
Test10 : Predict X: 9 , Actural is: 0 , Result is: False
--------------------------------------------------
Test11 : Predict X: 1 , Actural is: 1 , Result is: True
--------------------------------------------------
Test12 : Predict X: 2 , Actural is: 2 , Result is: True
--------------------------------------------------
Test13 : Predict X: 3 , Actural is: 3 , Result is: True
--------------------------------------------------
Test14 : Predict X: 4 , Actural is: 4 , Result is: True
--------------------------------------------------
Test15 : Predict X: 5 , Actural is: 5 , Result is: True
--------------------------------------------------
Test16 : Predict X: 6 , Actural is: 6 , Result is: True
--------------------------------------------------
Test17 : Predict X: 7 , Actural is: 7 , Result is: True
--------------------------------------------------
Test18 : Predict X: 8 , Actural is: 8 , Result is: True
--------------------------------------------------
Test19 : Predict X: 9 , Actural is: 9 , Result is: True
--------------------------------------------------
Test20 : Predict X: 0 , Actural is: 0 , Result is: True
--------------------------------------------------
Test21 : Predict X: 1 , Actural is: 1 , Result is: True
--------------------------------------------------
Test22 : Predict X: 2 , Actural is: 2 , Result is: True
--------------------------------------------------
Test23 : Predict X: 3 , Actural is: 3 , Result is: True
--------------------------------------------------
Test24 : Predict X: 4 , Actural is: 4 , Result is: True
--------------------------------------------------
Test25 : Predict X: 5 , Actural is: 5 , Result is: True
--------------------------------------------------
Test26 : Predict X: 6 , Actural is: 6 , Result is: True
--------------------------------------------------
Test27 : Predict X: 7 , Actural is: 7 , Result is: True
--------------------------------------------------
Test28 : Predict X: 8 , Actural is: 8 , Result is: True
--------------------------------------------------
Test29 : Predict X: 9 , Actural is: 9 , Result is: True
--------------------------------------------------
Test30 : Predict X: 9 , Actural is: 0 , Result is: False
--------------------------------------------------
Test31 : Predict X: 1 , Actural is: 1 , Result is: True
--------------------------------------------------
Test32 : Predict X: 2 , Actural is: 2 , Result is: True
--------------------------------------------------
Test33 : Predict X: 3 , Actural is: 3 , Result is: True
--------------------------------------------------
Test34 : Predict X: 4 , Actural is: 4 , Result is: True
--------------------------------------------------
Test35 : Predict X: 5 , Actural is: 5 , Result is: True
--------------------------------------------------
Test36 : Predict X: 6 , Actural is: 6 , Result is: True
--------------------------------------------------
Test37 : Predict X: 7 , Actural is: 7 , Result is: True
--------------------------------------------------
Test38 : Predict X: 8 , Actural is: 8 , Result is: True
--------------------------------------------------
Test39 : Predict X: 9 , Actural is: 9 , Result is: True
--------------------------------------------------
Test40 : Predict X: 0 , Actural is: 0 , Result is: True
--------------------------------------------------
Test41 : Predict X: 1 , Actural is: 1 , Result is: True
--------------------------------------------------
Test42 : Predict X: 2 , Actural is: 2 , Result is: True
--------------------------------------------------
Test43 : Predict X: 3 , Actural is: 3 , Result is: True
--------------------------------------------------
Test44 : Predict X: 4 , Actural is: 4 , Result is: True
--------------------------------------------------
Test45 : Predict X: 5 , Actural is: 5 , Result is: True
--------------------------------------------------
Test46 : Predict X: 6 , Actural is: 6 , Result is: True
--------------------------------------------------
Test47 : Predict X: 7 , Actural is: 7 , Result is: True
--------------------------------------------------
Test48 : Predict X: 8 , Actural is: 8 , Result is: True
--------------------------------------------------
Test49 : Predict X: 9 , Actural is: 9 , Result is: True
--------------------------------------------------
Test50 : Predict X: 9 , Actural is: 0 , Result is: False
--------------------------------------------------
Test51 : Predict X: 1 , Actural is: 1 , Result is: True
--------------------------------------------------
Test52 : Predict X: 2 , Actural is: 2 , Result is: True
--------------------------------------------------
Test53 : Predict X: 3 , Actural is: 3 , Result is: True
--------------------------------------------------
Test54 : Predict X: 4 , Actural is: 4 , Result is: True
--------------------------------------------------
Test55 : Predict X: 5 , Actural is: 5 , Result is: True
--------------------------------------------------
Test56 : Predict X: 6 , Actural is: 6 , Result is: True
--------------------------------------------------
Test57 : Predict X: 7 , Actural is: 7 , Result is: True
--------------------------------------------------
Test58 : Predict X: 8 , Actural is: 8 , Result is: True
--------------------------------------------------
Test59 : Predict X: 9 , Actural is: 9 , Result is: True
--------------------------------------------------
Test60 : Predict X: 0 , Actural is: 0 , Result is: True
--------------------------------------------------
Test61 : Predict X: 1 , Actural is: 1 , Result is: True
--------------------------------------------------
Test62 : Predict X: 2 , Actural is: 2 , Result is: True
--------------------------------------------------
Test63 : Predict X: 3 , Actural is: 3 , Result is: True
--------------------------------------------------
Test64 : Predict X: 4 , Actural is: 4 , Result is: True
--------------------------------------------------
Test65 : Predict X: 5 , Actural is: 5 , Result is: True
--------------------------------------------------
Test66 : Predict X: 6 , Actural is: 6 , Result is: True
--------------------------------------------------
Test67 : Predict X: 7 , Actural is: 7 , Result is: True
--------------------------------------------------
Test68 : Predict X: 8 , Actural is: 8 , Result is: True
--------------------------------------------------
Test69 : Predict X: 9 , Actural is: 9 , Result is: True
--------------------------------------------------
Test70 : Predict X: 0 , Actural is: 0 , Result is: True
--------------------------------------------------
Test71 : Predict X: 1 , Actural is: 1 , Result is: True
--------------------------------------------------
Test72 : Predict X: 2 , Actural is: 2 , Result is: True
--------------------------------------------------
Test73 : Predict X: 3 , Actural is: 3 , Result is: True
--------------------------------------------------
Test74 : Predict X: 4 , Actural is: 4 , Result is: True
--------------------------------------------------
Test75 : Predict X: 5 , Actural is: 5 , Result is: True
--------------------------------------------------
Test76 : Predict X: 6 , Actural is: 6 , Result is: True
--------------------------------------------------
Test77 : Predict X: 7 , Actural is: 7 , Result is: True
--------------------------------------------------
Test78 : Predict X: 8 , Actural is: 8 , Result is: True
--------------------------------------------------
Test79 : Predict X: 9 , Actural is: 9 , Result is: True
--------------------------------------------------
Test80 : Predict X: 9 , Actural is: 0 , Result is: False
--------------------------------------------------
Test81 : Predict X: 1 , Actural is: 1 , Result is: True
--------------------------------------------------
Test82 : Predict X: 2 , Actural is: 2 , Result is: True
--------------------------------------------------
Test83 : Predict X: 3 , Actural is: 3 , Result is: True
--------------------------------------------------
Test84 : Predict X: 4 , Actural is: 4 , Result is: True
--------------------------------------------------
Test85 : Predict X: 5 , Actural is: 5 , Result is: True
--------------------------------------------------
Test86 : Predict X: 6 , Actural is: 6 , Result is: True
--------------------------------------------------
Test87 : Predict X: 7 , Actural is: 7 , Result is: True
--------------------------------------------------
Test88 : Predict X: 8 , Actural is: 8 , Result is: True
--------------------------------------------------
Test89 : Predict X: 9 , Actural is: 9 , Result is: True
--------------------------------------------------
Test90 : Predict X: 0 , Actural is: 0 , Result is: True
--------------------------------------------------
Test91 : Predict X: 1 , Actural is: 1 , Result is: True
--------------------------------------------------
Test92 : Predict X: 2 , Actural is: 2 , Result is: True
--------------------------------------------------
Test93 : Predict X: 3 , Actural is: 3 , Result is: True
--------------------------------------------------
Test94 : Predict X: 4 , Actural is: 4 , Result is: True
--------------------------------------------------
Test95 : Predict X: 5 , Actural is: 5 , Result is: True
--------------------------------------------------
Test96 : Predict X: 6 , Actural is: 6 , Result is: True
--------------------------------------------------
Test97 : Predict X: 7 , Actural is: 7 , Result is: True
--------------------------------------------------
Test98 : Predict X: 8 , Actural is: 8 , Result is: True
--------------------------------------------------
Test99 : Predict X: 9 , Actural is: 9 , Result is: True
--------------------------------------------------
可以看到,100组数据中有4组错误,其他96组都正确,正确率达到96%。
而且错误的都是把“9”和“0”搞错了(确实“9”和“0”如果加上旋转的话,是会比较像的)。

源代码及注解如下:(源代码中,除了numpy和PIL,没有用掉任何第三方库,也不需要使用神经网络)
**** Hidden Message *****

WylLy 发表于 2017-4-7 14:58:28

厉害啊,学习学习

新手·ing 发表于 2017-4-10 19:48:14

{:10_319:}

z215229525 发表于 2017-5-21 23:28:40

厉害厉害

Py小学生 发表于 2017-6-26 10:49:08

u 2 nb la

小锟 发表于 2017-7-31 21:54:42

学习

kuanglu 发表于 2018-1-17 10:35:31

学习学习

supersuper 发表于 2018-3-18 12:43:44

学习!!!

Luos 发表于 2018-4-3 20:43:49

66666666

fdk少东家 发表于 2018-4-19 00:57:05

观摩

daoyuantech 发表于 2018-5-29 15:51:02

学习学习

wandyking 发表于 2018-7-18 22:31:59

特意过来学习python, 同时学习神经网络, 最近要用到

littlebozi 发表于 2019-7-10 11:16:48

go

15563391379 发表于 2019-7-11 16:37:58

回复

苟或dd 发表于 2019-7-11 16:54:44

看看

qaz123765 发表于 2019-7-11 19:47:21

看看

luodua 发表于 2019-7-19 09:33:38

谢谢分享,支持

老甲鱼与小甲鱼 发表于 2019-11-13 10:22:20

xx

卡了吧 发表于 2020-7-8 17:20:02

看看

青出于蓝 发表于 2021-7-14 19:08:02

学习
页: [1] 2
查看完整版本: python小练习(088):【番外篇】不用机器学习的方法进行数字校验码的自动识别