ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2021-11-13 21:01:12  阅读:307  来源: 互联网

标签:xTrain 训练 模型 测试数据 print 神经网络 np 手写体 识别


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

实验内容:
使用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)

标签:xTrain,训练,模型,测试数据,print,神经网络,np,手写体,识别
来源: https://blog.csdn.net/weixin_49041703/article/details/121308791

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有