第5关:神经网络分类模型及其应用
为了完成本关任务,你需要掌握:1.数据获取及训练样本构建,2.预测样本的构建,3神经网络回归模型构建,4.利用MLPClassifier创建神经网络分类对象clf
数据获取及训练样本构建
读取data.xlsx表数据,在 5.2 基础上,取数据集前 600 条记录作为训练数据
#取数据集前 600 条记录作为训练数据
x=df.iloc[:600,:15].values
y=df.iloc[:600,15].values
输出:
预测样本的构建
在 5.2 基础上,取数据集后 90 条记录作为测试
#后 90 条记录作为测试
x1=df.iloc[600:,:15].values
y1=df.iloc[600:,15].values
输出:
神经网络分类模型构建
构建神经网络模型,输出其模型准确率和预测准确率。 先导入神经网络分类模块MLPClassifier,再调用clf
对象中三个方法,其中分别为fit()
方法进行网络训练;score
()方法,获得神经网络的预测准确率,这是针对训练数据;调用clf
对象中的predict()
方法可以对测试样本进行预测,获得预测结果。
#导入神经网络回归模块MLPRegressor。
from sklearn.neural_network import MLPClassifier
#调用clf对象中的fit()方法进行网络训练。
clf.fit(x, y)
#调用clf对象中的score ()方法,获得神经网络回归的拟合优度(判决系数)。
rv=clf.score(x,y)
#调用clf对象中的predict()可以对测试样本进行预测,获得预测结果。
R=clf.predict(x1)
#计算准确率
Z=R-y1
Rs=len(Z[Z==0])/len(Z)
print('模型准确率为:',rv)
print('预测结果准确率为:',Rs)
输出:模型准确率为: 0.895
预测结果准确率为: 0.8444444444444444
利用MLPClassifier创建神经网络分类对象clf
MLPClassifier
创建神经网络分类对象clf
,其中需要用到的参数有很多 参数说明: solver
:神经网络优化求解算法,包括lbfgs
、sgd
、adam
3种,默认值为adam。 alpha
:模型训练误差,默认值为0.0001。 hidden_layer_sizes
:隐含层神经元个数,如果是单层神经元,设置具体数值即可,本例中隐含层有两层,即5×2。 random_state
:默认设置为0即可。 max_iter
:设置最大迭代次数。
clf = MLPClassifier(solver='lbfgs', alpha=1e-5,hidden_layer_sizes=(5,2), random_state=0, max_iter=1000)
编程要求
根据提示,在右侧编辑器补充代码,实现神经网络分类模型构建。
测试说明
平台会对你编写的代码进行测试。
开始你的任务吧,祝你成功!
任务代码
#********** Begin **********#
#在上一关基础,对经过缺失值填充、数值变量标准化后的数据集,取前600条记录作为训练数据,后90条记录作为测试数据
#构建神经网络分类模型,返回计算结果模型准确率rv和预测准确率r
def return_values():
import numpy as np
import warnings
# 忽略收敛警告
warnings.filterwarnings("ignore")
#导入神经网络回归模块MLPRegressor。
from sklearn.neural_network import MLPClassifier
X1=np.load('X1.npy') #经过缺失值填充、数值变量标准化后的数据集,numpy数组690*15
Y=np.load('Y.npy') #因变量,numpy数组,690个元素
x = X1[:600,:]
y = Y[:600]
x1 = X1[600:,:]
y1 = Y[600:]
clf = MLPClassifier(solver='lbfgs', alpha=1e-5,hidden_layer_sizes=(5,2), random_state=0, max_iter=1000)
clf.fit(x,y)
rv=clf.score(x,y)
R=clf.predict(x1)
Z=R-y1
r=len(Z[Z==0])/len(Z)
#print('模型准确率为:',r)
#print('预测准确率为:',r)
return(rv,r)
#********** End **********#