1 项目介绍
基于k-近邻分类器(KNN)的手写识别系统, 这里构造的系统只能识别数字0到9。
- 难点: 图形信息如何处理?
图像转换为文本格式
2 准备数据
将图像转换为测试向量
-
训练集:
- 目录trainingDigits
- 大约2000个例子
- 每个数字大约有200个样本;
-
测试集
- 目录testDigits
- 大约900个测试数据。
将图像格式化处理为一个向量。我们将把一个32×32的二进制图像矩阵转换为1×1024的向量, 如下图所示,
import numpy as np
def img2vector(filename):
"""
# 将图像数据转换为(1,1024)向量
:param filename:
:return: (1,1024)向量
"""
# 生成一个1*1024且值全为0的向量;
returnVect = np.zeros((1, 1024))
# 读取要转换的信息;
file = open(filename)
# 依次填充
# 读取每一行数据;
for i in range(32):
lineStr = file.readline()
# 读取每一列数据;
for j in range(32):
returnVect[0, 32 * i + j] = int(lineStr[j])
return returnVect
3 实施 KNN 算法
对