机器学习(三)使用神经网络识别手写体数字

机器学习(三)使用神经网络识别手写体数字

实验内容:
使用sklearn.neural_network.MLPClassifier类实现手写数字图片识别
MPLClassifier是一个有监督学习算法,MPL又称多层感知机,除了输入和输出层,
中间可以有多个隐含层。
sklearn.externals.joblib.dump方法用于保存模型参数
sklearn.externals.joblib.load 方 法 用 于 从 文 件 种 装 载 模 型 参 数 构 造 一 个MLPClassifier对象
score方法用于估算正确率
训练数据:digits_training.csv
测试数据:digits_testing.csv
第1列是类别,其他列是特征属性

题目一:载入训练数据、分出特征属性和类别,对特征属性标准化,显示读入数据的行数;

import pandas as pd
import numpy as np
from sklearn.neural_network import MLPClassifier
import joblib
# 读入训练数据
print("1.载入训练数据")
trainData = np.loadtxt(open('digits_training.csv', 'r'), delimiter=",",skiprows=1)#装载数据
print("2.标准化训练数据")
MTrain, NTrain = np.shape(trainData)  #行列数
xTrain = trainData[:,1:NTrain]
xTrain_col_avg = np.mean(xTrain, axis=0) #对各列求均值
xTrain =(xTrain- xTrain_col_avg)/255  #归一化
yTrain = trainData[:,0]
print("装载训练数据",len(xTrain),"条")

题目二:构建多层感知机,训练模型,保存训练模型名字为“mlp_classifier_model1.m

参数为:psolver=‘lbfgs’, alpha=1e-5, hidden_layer_sizes=(48, 24)

print("3.构建神经网络")
print("4.训练模型")
model = MLPClassifier(solver='lbfgs',alpha=1e-5,hidden_layer_sizes=(48, 24))
model.fit(xTrain,yTrain)
print("5.训练完毕,保存模型")
#保存模型
joblib.dump(model,"mlp_classifier_model1.dat")

题目四:载入测试数据,分出特征属性和类别,对特征属性标准化,显示读入数据的行数;

print("6.模型保存完毕,执行测试...")
print("7.载入测试数据....")
testData = np.loadtxt(open('digits_testing.csv', 'r'), delimiter=",",skiprows=1)
MTest,NTest = np.shape(testData)
print("测试集:",MTest,NTest)
print("8.标准化测试数据")
xTest = testData[:,1:NTest]
xTest = (xTest-xTrain_col_avg) /255   # 使用训练数据的列均值进行处理
yTest = testData[:,0]
print("装载测试数据:",len(xTest),"条")
print("9.使用模型进行预测....")
yPredict = model.predict(xTest)
errors = np.count_nonzero(yTest - yPredict) #返回非零项个数
print("预测完毕。错误:", errors, "条")

题目五:使用模型对测试集进行预测,显示预测错误数据的数目和预测准确率;

print("10.评价模型")
print("测试数据正确率:", (MTest - errors) / MTest)

你可能感兴趣的:(机器学习,机器学习,神经网络,sklearn)