任务2:使用sklearn中的MLPClassifier实现手写数字识别。
参考如下代码,完成神经网络模型的建立。
| from sklearn.neural_network import MLPClassifier print('开始训练....') print(time.strftime('%Y-%m-%d %H:%M:%S')) # 神经网络分类预测 mlp = MLPClassifier(solver='sgd', activation='relu',alpha=1e-4,hidden_layer_sizes=(10,10), random_state=1,max_iter=500,verbose=10,learning_rate_init=.001) # 训练模型 mlp.fit(x_train, y_train) print('结束训练....') print(time.strftime('%Y-%m-%d %H:%M:%S')) # 评估模型 y_pred = mlp.predict(x_test) print("预测准确度:{:.2f}".format(mlp.score(x_test,y_test))) print(pd.crosstab(y_test, y_pred, rownames=['Actual Values'], colnames=['Prediction'])) # 输出测试集的预测结果与真实值的评估报告 print(classification_report(y_test, y_pred)) |
示例代码中的神经网络使用了分别都有10个节点的两个隐藏层,训练过程数据如下所示:

其中精确率为94%。训练得到的结果如图所示,对预测的具体结果进行了统计。通过对结果的分析,优化参数以得到更精确的结果。

(a)判别详情

(b)评估报告
预测结果与真实图片的对比如图所示。相比于上一节使用的SVM模型,神经网络的训练时间更快,约为2分多钟,并且具有更高的识别准确率。
