使用K-近邻分类器构造手写识别系统,手写数字图片已经经过处理成为文本文件,如下所示:
每张图片都是32像素X32像素
首先,我们要把每个输入的文本文件转换KNN算法(前面的KNN算法实践已经有了,这里就不贴了)可以处理的格式,即一维数组的形式,定义以下函数:
def img2vector(filename):
"""
将32x32的图像转化为1x1024的向量
:param filename:
:return:
"""
return_vect = zeros((1, 1024))
fr = open(filename)
for i in range(32): # 用for line in readlines()也可以
line_str = fr.readline() # 一行一行的读
for j in range(32):
return_vect[0, 32*i+j] = int(line_str[j])
fr.close()
return return_vect
有了上面的函数,就可以设计循环,把训练集,测试集,标