第7关:神经网络回归模型及其应用
任务描述
基于5.6的数据集,构建神经网络回归模型,输出其模型准确率,并针对测试数据AT=28.4、V=50.6、AP=1011.9、RH=80.54
,预测其PE值。
相关知识
Python神经网络分类应用举例、Python神经网络回归应用举例
Python神经网络分类应用举例
(1)导入神经网络分类模块MLPClassifier。
from sklearn.neural_network import MLPClassifier
(2)利用MLPClassifier
创建神经网络分类对象clf
。
clf = MLPClassifier(solver='lbfgs', alpha=1e-5,hidden_layer_sizes=(5,2), random_ state=1)
参数说明: solver
:神经网络优化求解算法,包括lbfgs
、sgd
、adam
3种,默认值为adam
。 alpha
:模型训练误差,默认值为0.0001。 hidden_layer_sizes
:隐含层神经元个数,如果是单层神经元,设置具体数值即可,本例中隐含层有两层,即5×2。 random_state
:默认设置为1即可。 (3)调用clf
对象中的fit()方法进行网络训练。
clf.fit(x, y)
(4)调用clf
对象中的score ()
方法,获得神经网络的预测准确率(针对训练数据)。
rv=clf.score(x,y)
(5)调用clf
对象中的predict()
方法可以对测试样本进行预测,获得预测结果。
R=clf.predict(x1)
示例代码如下:
import pandas as pd
data = pd.read_excel('credit.xlsx')
x = data.iloc[:600,:14].as_matrix()
y = data.iloc[:600,14].as_matrix()
x1= data.iloc[600:,:14].as_matrix()
y1= data.iloc[600:,14].as_matrix()
from sklearn.neural_network import MLPClassifier
clf = MLPClassifier(solver='lbfgs', alpha=1e-5,hidden_layer_sizes=(5,2), random_ state=1)
clf.fit(x, y);
rv=clf.score(x,y)
R=clf.predict(x1)
Z=R-y1
Rs=len(Z[Z==0])/len(Z)
print('预测结果为:',R)
print('预测准确率为:',Rs)
执行结果如下: 预测结果为:[0 1 1 1 1 0 0 1 0 1 1 0 0 0 1 1 0 0 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 1 0 1 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 0 1 0]
预测准确率为:0.8222222222222222
Python神经网络回归应用举例
1.数据获取及训练样本构建 训练样本的特征输入变量用x表示,输出变量用y表示。
import pandas as pd
data = pd.read_excel('发电场数据.xlsx')
x = data.iloc[:,0:4]
y = data.iloc[:,4]
2.预测样本的构建 预测样本的输入特征变量用x1表示。
import numpy as np
x1=np.array([28.4,50.6,1011.9,80.54])
x1=x1.reshape(1,4)
3.神经网络回归模型构建 (1)导入神经网络回归模块MLPRegressor。
from sklearn.neural_network import MLPRegressor
(2)利用MLPRegressor创建神经网络回归对象clf。
clf = MLPRegressor(solver='lbfgs', alpha=1e-5,hidden_layer_sizes=8, random_ state=1)
参数说明: solver:神经网络优化求解算法,包括lbfgs
、sgd
、adam
3种,默认为adam
。 alpha
:模型训练误差,默认为0.0001。 hidden_layer_sizes
:隐含层神经元个数,如果是单层神经元,设置具体数值即可,如果是多层,如隐含层有两层5×2,则hidden_layer_sizes=(5,2)
。 random_state
:默认设置为1即可。 (3)调用clf
对象中的fit()
方法进行网络训练。
clf.fit(x, y)
(4)调用clf
对象中的score ()
方法,获得神经网络回归的拟合优度(判决系数)。
rv=clf.score(x,y)
(5)调用clf
对象中的predict()
可以对测试样本进行预测,获得预测结果。
R=clf.predict(x1)
示例代码如下:
import pandas as pd
data = pd.read_excel('发电场数据.xlsx')
x = data.iloc[:,0:4]
y = data.iloc[:,4]
from sklearn.neural_network import MLPRegressor
clf = MLPRegressor(solver='lbfgs', alpha=1e-5,hidden_layer_sizes=8, random_state=1)
clf.fit(x, y);
rv=clf.score(x,y)
import numpy as np
x1=np.array([28.4,50.6,1011.9,80.54])
x1=x1.reshape(1,4)
R=clf.predict(x1)
print('样本预测值为:',R)
输出结果为: 样本预测值为:[ 439.27258187]
编程要求
根据提示,在右侧编辑器补充代码,根据相关的神经网络模型知识计算并输出发电厂数据的预测值和预测准确率
测试说明
平台会对你编写的代码进行测试:
测试输入:AT=28.4,V=50.6,AP=1011.9,RH=80.54
预期输出:439.27258187
开始你的任务吧,祝你成功!
任务代码
# -*- coding: utf-8 -*-
#基于上一关的数据集,构建神经网络回归模型,返回计算结果模型准确率r,
#并针对测试数据AT=28.4、V=50.6、AP=1011.9、RH=80.54,预测其PE值。
def return_values():
from sklearn.neural_network import MLPRegressor
import numpy as np
import pandas as pd
data=pd.read_excel('发电场数据.xlsx')
x=data.iloc[:,0:4].values
y=data.iloc[:,4].values
clf = MLPRegressor(solver='lbfgs', alpha=1e-5,hidden_layer_sizes=8, random_state=1)
clf.fit(x, y)
r=clf.score(x,y)
x1=np.array([28.4,50.6,1011.9,80.54]).reshape(1,4)
PE=clf.predict(x1)
return(r,PE)