看完一节《机器学习实战》,算是踏入ML的大门了吧!这里就详细讲一下一个demo:使用kNN算法实现手写字体的简单识别
kNN
先简单介绍一下kNN,就是所谓的K-近邻算法:
【作用原理】:存在一个样本数据集合、每个样本数据都存在标签。输入没有标签的新数据后,将新数据的每个特征与样本集数据的对应特征进行比较,然后算法提取样本集中最相似的分类标签。一般说来,我们只选择样本数据集中前k个最相似的数据,最后,选择这k个相似数据中出现次数最多的分类,作为新数据的分类。
通俗的说,举例说明:有一群明确国籍的人(样本集合,比如1000个):中国人、韩国人、日本人、美国人、埃及人,现在有一个不知国籍的人,想要通过比较特征来猜测他的国籍(当然,特征具有可比较性和有效性),通过比较特征,得出特征与该人最相近的样本集中的9个人(k),其中,1个是韩国人、2个是日本人,6个是中国人,那么这个人是中国人的可能性就很大。
这就是kNN的基本思想。
手写体识别数据准备
kNN输入需要特征矩阵,一般是固定大小的二值图像,这里我们使用书上提供的数据集:这个数据集使用32X32文本文件存储数值图像。例如下图的'9'