题目要求
(一)题目要求
已知某发动机工厂生产数据集,样本数量超过1万,共有10个系列不同品种的发动机。每个样本的特征数据储存engineX.txt中,样本的标签文件存储在enginey.txt中。请实现下列要求。
1.数据集加载,进行0-1缩放特征, 将数据集分成训练集(75%)和测试集(25%)(4分)
2.调用神经网络MLPClassifier库函数实现分类(共10分):
-设置模型参数:隐藏层共2层,单元数分别为400,100;正则化参数0.1;最大迭代次数为200 (4分)
-使用训练集完成模型的训练,并计算和输出训练集和测试集的准确率(2分)
-分别计算并输出训练集和测试集的混淆矩阵和分类报告(4分)
3.编写神经网络实现(共26分):
-完成数据初始化和对y值的onehotEncoder编码(4分)
-建立适当的神经网络模型,包括神经网络结构,相关参数初始化(要求隐藏层共2层,单元数分别为400,100)(4分)
-实现正(前)向传播算法(4分)
-实现反向传播算法(8分)
-分别计算和输出训练集和测试集的准确率(2分)
-分别计算并输出训练集和测试集的混淆矩阵和分类报告(4分)
神经网络调库代码实现
import numpy as np
# from matplotlib import pyplot as plt
from sklearn.neural_network import MLPClassifier
from sklearn.metrics import confusion_matrix,classification_report
# 读取数据
X = np.loadtxt(r'engineX.txt',delimiter=',')
y = np.loadtxt(r'enginey.txt',delimiter=',')
# 数据预处理函数
def preprocess(X,y):
# 特征缩放
X_min = np.min(X)
X_max = np.max(X)
X = (X - X_min) / (X_max - X_min)
# 数据切分
d = int(0.75 * len(X))
X_train,X_test = np.split(X,[d])
y_train,y_test = np.split(y,[d])
return X_train,X_te