构造使用k-近邻分类器的手写识别系统
step1.准备数据:将图像转换为测试向量
把32*32的二进制图像矩阵转换成1*1024的向量,这样就可以之前的分类器来处理了
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
#代码解释
fileObject.readline(size)
size -- 从文件中读取的字节数。
zeros(shape, dtype=float, order='C')
返回一个给定形状和类型的用0填充的数组;
shape:形状
dtype:数据类型
order:可选参数,c代表与c语言类似,行优先;F代表列优先
step2.测试算法:使用k-近邻算法识别手写数字
算法作用:
把训练集的每个图片改成一行的数组 m个图片形成m*1024的数组
把图片的文件名拆开 记录该图片代表的数