首页 >> 技术热点
机器学习系列一:一个手写识别系统

编辑:dick7

时间:2015-08-12

关键词:k-Nearest Neighbors,k个最临近的邻居

问题模型


下面是一幅手写数字的位图

将这幅位图图片转化为数字的函数代码:

def img2vector(filename):

  returnVect = zeros((1,1024))

  fr = open(filename)

  for i in range(32):

    lineStr = fr.readline()

    for j in range(32):

      returnVect[0,32*i+j] = int(lineStr[j])

  return returnVect

接下来就是让机器去判断类似的“图案”到底是什么东西。

要实现这个功能,首先要让机器“学”,然后才能让机器“回答”。这个“学”的过程,就是要给机器“一些例子”,让机器去按照 kNN:k-Nearest Neighbors 算法进行“训练”。当机器根据已经归类好的“一些”例子,“训练”好之后,就可以让“训练”好的系统对新输入的“图案”,进行归类。

从以上,可以看出算法具有概率性。检验算法好坏的指标就是“一些例子”的多少,和机器判断的正确率。

算法描述


 

所用工具


python, numpy, matlibplot


图形结果


目录切换好以后,在命令提示符下,输入指令 python,出现“>>>”提示符后,再输入“import kNN”。然后就能运行算法程序了


结果显示

训练样本个数为:1934

测试样本个数为:946

测试错误个数为:11

测试错误率为:0.011628

供稿∶系统管理员

日期∶2015-09-09 15:42:36