机器学习1-神经网络-手写数字识别-调库-2020-12-01

机器学习1-神经网络-手写数字识别-调库

# 某手写数字数据集有10000个样本,每个样本的特征储存在imagesData.txt中,特征数目784,
# 样本的标签文件是labelsData.txt中,label从0-9分成10类。请完成该数据集的分类识别。
# 要求:可以用自己写的神经网络函数代码,也可以调用相关神经网络库函数。库函数导入,数据集的加载,适当缩放特征;
# 将数据集随机分成训练集和测试集;
# 调用神经网路相关库函数,或者自己编写的神经网络函数;
# 建立适当的神经网络模型,包括神经网络结构,各种相关参数等;
# 用训练集完成模型的训练,并计算在训练集上的准确率Accuracy及输出;
# 用以上训练模型计算测试集的Precision,Recall和F1分数及输出
# (二)评分要求
# 1.库函数导入,数据集的加载,适当缩放特征(5分)
# 2.将数据集随机分成训练集和测试集(5分)
# 3.调用神经网络相关库函数,或者自己编写的神经网络函数(5分)
# 4.建立适当的神经网络模型,包括神经网络结构,各种相关参数等(5分)
# 5.用训练集完成模型的训练,并计算在训练集上的准确率Accuracy及输出(5分)
# 6.用以上训练模型计算测试集的Precision,Recall和F1分数及输出(5分)
from sklearn.neural_network import MLPClassifier
import numpy as np
from sklearn.metrics import confusion_matrix,classification_report,f1_score,recall_score,precision_score

x = np.loadtxt("imagesData.txt",delimiter=',')
y = np.loadtxt("labelsData.txt",delimiter=',')

# 特征缩放
x =(x-x.min())/(x.max()-x.min())

# 洗牌
m = len(y)
np.random.seed(0)
order = np.random.permutation(m)
x = x[order]
y = y[order]

# 训练集测试集
xtrain,xtest = np.split(x,[int(0.7*m),])
ytrain,ytest = np.split(y,[int(0.7*m),])

model = MLPClassifier(activation="relu",max_iter=200,hidden_layer_sizes=(10,))
model.fit(xtrain,ytrain)
print("准确度", model.score(xtrain, ytrain))

#用以上训练模型计算测试集的Precision,Recall和F1分数及输出(5分)
print("测试集的Precision", precision_score(ytest, model.predict(xtest),average='micro'))
print("测试集召回率", recall_score(ytest, model.predict(xtest),average="micro"))
print("F1分数", f1_score(ytest, model.predict(xtest),average="micro"))

你可能感兴趣的:(机器学习)