嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 1 元微信扫码支付:1 元
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
使用神经网络识别手写体数字
使用sklearn.neural network.MLPClassifier类实现手写数字图片识别
ü MPLClassifier是一个有监督学习算法,MPL又称多层感知机,除了输入和输出层,中间可以有多个隐含层。
ü sklearn.externals,joblib.dump方法用于保存模型参数
ü sklearn..externals.joblib.load方法用于从文件种装载模型参数构造一个MLPClassifier对象
ü score方法用于估算正确率
训练数据:digits training.csv
测试数据:digits testing.csv
第1列是类别,其他列是特征属性实验步骤
1. 实验题目
1. 载入训练数据、分出特征属性和类别,对特征属性标准化,显示读入数据的行数
xTrain trainData:,1:NTrain]
yTrain trainData[:,0]
标准化函数
def normalizeData(X):
return (X -X.meanO)/X.max()
2. 构建多层感知机,训练模型
psolver='Ibfgs',alpha=le-5,hidden_layer_sizes=(48,24)
3. 保存训练模型名字为“mlp classifier model1.m"
4. 载入测试数据,分出特征属性和类别,对特征属性标准化,显示读入数据的行数
5. 使用模型对测试集进行预测,显示预测错误数据的数目和预测准确率
# 1. 载入训练数据、分出特征属性和类别,对特征属性标准化,显示读入数据的行数
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),"条")
# 构建多层感知机,训练模型
# psolver='lbfgs',alpha=le-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)
# 3. 保存训练模型名字为“mlp classifier model1.m"
print("5.训练完毕,保存模型")
joblib.dump(model,"mlp_classifier_model1.m")
# 4. 载入测试数据,分出特征属性和类别,对特征属性标准化,显示读入数据的行数
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, "条")
# 5. 使用模型对测试集进行预测,显示预测错误数据的数目和预测准确率
print("10.评价模型")
print("测试数据正确率:", (MTest - errors) / MTest)
.
└── 使用神经网络识别手写体数字.ipynb
0 directories, 1 file