基本信息
源码名称:使用神经网络识别手写体数字
源码大小:9.92KB
文件格式:.ipynb
开发语言:Python
更新时间:2022-11-17
   友情提示:(无需注册或充值,赞助后即可获取资源下载链接)

     嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300

本次赞助数额为: 1 元 
   源码介绍

使用神经网络识别手写体数字


使用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