需求:
利用一个手写数字“先验数据”集,使用knn算法来实现对手写数字的自动识别;
先验数据(训练数据)集:
♦数据维度比较大,样本数比较多。
♦ 数据集包括数字0-9的手写体。
♦每个数字大约有200个样本。
♦每个样本保持在一个txt文件中。
♦手写体图像本身的大小是32x32的二值图,转换到txt文件保存后,内容也是32x32个数字,0或者1,如下:
数据集压缩包解压后有两个目录:(将这两个目录文件夹拷贝的项目路径下E:/KNNCase/digits/)
♦目录trainingDigits存放的是大约2000个训练数据
♦目录testDigits存放大约900个测试数据。
模型分析:
1、手写体因为每个人,甚至每次写的字都不会完全精确一致,所以,识别手写体的关键是“相似度”
2、既然是要求样本之间的相似度,那么,首先需要将样本进行抽象,将每个样本变成一系列特征数据(即特征向量)
3、手写体在直观上就是一个个的图片,而图片是由上述图示中的像素点来描述的,样本的相似度其实就是像素的位置和颜色之间的组合的相似度
4、因此,将图片的像素按照固定顺序读取到一个个的向量中,即可很好地表示手写体样本
5、抽象出了样本向量,及相似度计算模型,即可应用KNN来实现
python实现:
新建一个KNN.py脚本文件,文件里面包含四个函数ÿ