上一章提过,MNIST是一个入门级的计算机视觉数据集,包含各种手写数字图片,也包含每一张图片对应的标签,告诉我们这个是数字几。我们使用逻辑回归来识别由MNIST组成的验证码。完整演示代码请见本书GitHub上的8-3.py。
1.数据搜集和数据清洗
使用MNIST离线版的数据,具体下载地址以及数据集的介绍请参考第3章相关内容:
def load_data(): with gzip.open('../data/MNIST/mnist.pkl.gz') as fp: training_data, valid_data, test_data = pickle.load(fp) return training_data, valid_data, test_data
2.特征化
MNIST已经将24×24的图片特征化成长度为784的一维向量。
3.训练模型
使用逻辑回归训练:
training_data, valid_data, test_data=load_data() x1,y1=training_data x2,y2=test_data logreg = linear_model.LogisticRegression(C=1e5) logreg.fit(x1, y1)
4.效果验证
验证效果:
print cross_validation.cross_val_score(logreg, x2, y2, scoring="accuracy")
准确率80%左右,效果还不错,但是离可以实际使用还是有距离:
[ 0.76423008 0.85238524 0.86272154]