神经网络手写数字识别#调库

#调库三部曲
#1.导包
import numpy as np
from sklearn.neural_network import MLPClassifier
from sklearn.metrics import precision_score,recall_score,f1_score,\
confusion_matrix,classification_report
#10.获取特征x
x=np.loadtxt(r'./imgX.txt',delimiter=',')
#11.获取标签y
y=np.loadtxt(r'./labely.txt')
np.random.seed(5)
order=np.random.permutation(x.shape[0])
x=x[order]
y=y[order]
num=int((x.shape[0])*0.8)
train_x,test_x=np.split(x,[num])
train_y,test_y=np.split(y,[num])
#声明模型,给对象
model=MLPClassifier(hidden_layer_sizes=(256,64),max_iter=100,learning_rate_init=0.01)
#3.训练
model.fit(train_x,train_y)
#训练集精度
print('训练集精度:',model.score(train_x,train_y))
#测试集精度
print('测试集精度:',model.score(test_x,test_y))
#最终的loss值
print('最终的loss值:',model.loss_)
#预测训练集
train_h=model.predict(train_x)
print('预测训练集:\n',train_h)
#预测测试集
test_h=model.predict(test_x)
print('预测测试集:\n',test_h)
# list,权重项
print('list权重项:',model.coefs_)
# list,偏置项
print('list偏置项:',model.intercepts_)
#solver已经运行的迭代次数
print('solver已经运行的迭代次数:',model.n_iter_)
# NN层数
print('NN层数:',model.n_layers_)
# 输出个数
print('输出个数:',model.n_outputs_)
print('输出激活函数的名字:',model.out_activation_)
#输出类别list
print('类别list:',model.classes_)
#6.1作业:神经网络调库实现手写数字图像识别模型之后,计算测试集 精确率,召回率,f1分数,混淆矩阵,分类报告
#没有增加y_label和h_label,这是因为此时的test_y和test_h,已经是对应的下标
print(test_y)
print(test_h)
print('测试集精确率:',precision_score(test_y,test_h,average='macro'))
print('测试集召回率:',recall_score(test_y,test_h,average='macro'))
print('f1分数:',f1_score(test_y,test_h,average='macro'))
print('混淆矩阵:\n',confusion_matrix(test_y,test_h))
print('分类报告:',classification_report(test_y,test_h))

你可能感兴趣的:(神经网络,深度学习,机器学习)