#调库三部曲 #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))