手写识别系统
在:./digits/trainingDigits/ 目录中包含了约2000个训练数据,目标变量为每个文件的开头的第一个数字(每个文件名为类似"0_0.txt"的形式,每个文件为32*32的二进制图像,每个数字大约有200个左右的样本)
在:./digits/testDigits/ 目录中包含了约900个的测试数据,格式同上。
先定义一个函数,将文件中的32 * 32转换成1 * 1024的数组:
def img2vector(filename):
returnVect = np.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
注意,这里用到了一个readline方法,是一行一行的读取,再次调用这个函数会自动读取下一行。
之后要把所有数据读取出来并且转换成可以使用的数据类型:
from os import listdir
def handwritingClassTest():
tfl = listdir('./digits/trainingDigits/')
m = len(tfl)
X_train = []
y_train = []
for i in range(m):
fns = tfl[i]
fs = fns.split('.')[0]