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 ***** 厉害啊,学习学习 {:10_319:} 厉害厉害 u 2 nb la 学习 学习学习 学习!!! 66666666 观摩 学习学习 特意过来学习python, 同时学习神经网络, 最近要用到 go 回复
看看 看看 谢谢分享,支持 xx 看看
学习
页:
[1]
2