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

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

实验内容:
使用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)
  • 6
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Did然

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值