目录

一、辛烷值的预测

1-题目分析与原理介绍

2-神经网络建立过程

3-预测结果分析


BP神经网络模型,包含输入层,隐含层和输出层,正向传播过程是通过输入样本到输入层,通过输入层经过各层隐藏层,最后到达输出层;若输出层输出值与期望值的输出不符,然后误差反向传播,修正各个单元的权值,网络输出的误差达到可接受的程度或进行到预设的学习次数时终止。本次就不介绍理论部分了,直接看例题,需要学习理论部分,可以看我的上一篇神经网络的博客。

一、辛烷值的预测

1-题目分析与原理介绍

我们看一下这个例题1, 对于50组数据,我们把它看成大样本,可以考虑建立神经网络模型进行预测,因为辛烷值作为预测对象,我们将吸光度作为输入,辛烷值作为输出。

使用神经网络进行预测,我们需要知道三个名词:训练集,验证集,测试集,具体如下所示,我们此次选70%作为训练集,剩余30%分别作为验证集和测试集。

关于刚开始使用Matlab写神经网络出现Input data size does not match net.inputs{1}.size问题,是因为训练数据的输入和输出维度不一致,要保证输入的列数等于输出的列数。

2-神经网络建立过程

将吸光度作为输入,辛烷值作为输出,建立神经网络,其中隐藏层神经元的个数为7个,输出层神经元的个数为1个,具体如下:

50组数据,前面40组作为训练集,后面10组作为测试集,训练集训练模型,测试集进行泛化能力评估,我们计算均方根误差和均值误差。最后对10组数据进行预测。

对网络进行训练,然后进行预测,MATLAB代码和未来10年的预测结果如下所示:

clear; clc
load data_Octane.mat%%第一步 读取数据
input=X;  %载入输入数据
output=Y;  %载入输出数据%% 第二步 设置训练数据和预测数据
input_train = input(1:40,:)';
output_train =output(1:40,:)';
input_test = input(41:50,:)';
output_test =output(41:50,:)';
input_10 =  new_X(1:10,:)' ;
output_10 = zeros(10,1)' ;
%节点个数
inputnum=2; % 输入层节点数量
hiddennum=7;% 隐含层节点数量
outputnum=1; % 输出层节点数量
%% 第三本 训练样本数据归一化
[inputn,inputps]=mapminmax(input_train);%归一化到[-1,1]之间,inputps用来作下一次同样的归一化
[outputn,outputps]=mapminmax(output_train);
%% 第四步 构建BP神经网络
net=newff(inputn,outputn,hiddennum,{'tansig','purelin'},'trainlm');% 建立模型,传递函数使用purelin,采用梯度下降法训练W1= net. iw{1, 1};%输入层到中间层的权值
B1 = net.b{1};%中间各层神经元阈值W2 = net.lw{2,1};%中间层到输出层的权值
B2 = net. b{2};%输出层各神经元阈值%% 第五步 网络参数配置( 训练次数,学习速率,训练目标最小误差等)
net.trainParam.epochs=1000;         % 训练次数,这里设置为1000次
net.trainParam.lr=0.01;                   % 学习速率,这里设置为0.01
net.trainParam.goal=0.00001;                    % 训练目标最小误差,这里设置为0.00001%% 第六步 BP神经网络训练
net=train(net,inputn,outputn);%开始训练,其中inputn,outputn分别为输入输出样本%% 第七步 测试样本归一化
inputn_test=mapminmax('apply',input_test,inputps);% 对样本数据进行归一化
inputn_10 = mapminmax('apply',input_10,inputps);%% 第八步 BP神经网络预测
an=sim(net,inputn_test); %用训练好的模型进行仿真
an1 = sim(net,inputn_10) ;%最后10组预测%% 第九步 预测结果反归一化与误差计算
test_simu=mapminmax('reverse',an,outputps); %把仿真得到的数据还原为原始的数量级
output_10 = mapminmax('reverse',an1,outputps);
error=test_simu-output_test;      %预测值和真实值的误差%%第十步 真实值与预测值误差比较
figure(1);
plot(output_test,'bo-')
hold on
plot(test_simu,'r*-')
hold on
plot(error,'square','MarkerFaceColor','b')
legend('期望值','预测值','误差')
xlabel('数据组数')
ylabel('样本值')
title('BP神经网络测试集的预测值与实际值对比图')[c,l]=size(output_test);
MAE1=sum(abs(error))/l;
MSE1=error*error'/l;
RMSE1=MSE1^(1/2);
disp(['-----------------------误差计算--------------------------']);
disp(['隐含层节点数为',num2str(hiddennum),'时的误差结果如下:']);
disp(['平均绝对误差MAE为:',num2str(MAE1)]);
disp(['均方误差MSE为:       ',num2str(MSE1)]);
disp(['均方根误差RMSE为:  ',num2str(RMSE1)]);
disp('最后10组辛烷的预测结果为:') ;
disp(output_10) ;
figure(2);
plot(51:60,output_10,'o-') ;
xlabel('样本ID');
ylabel('辛烷预测值') ;

3-预测结果分析

我们看一下测试集预测值和真实值的对比分析,可以发现误差很小,几乎接近于0,可以认为模型训练的较好。

然后我们看一下,最后10组辛烷值的预测结果,具体如下:

我们看一下预测均方误差和均值误差,具体如下:

我们看一下训练集、验证集、测试集和总体的均方误差随训练次数的变化图像,基本上验证集和测试集5次就收敛了,训练集要6次以上。

将拟合值对真实值回归,拟合优度越高,说明拟合的的效果越好,我们可以看出来集合的拟合优度都是接近于1的。

备战数学建模34-BP神经网络预测2相关推荐

  1. 【13】 数学建模 | 预测模型 | 灰色预测、BP神经网络预测 | 预测题型的思路 | 内附代码(清风课程,有版权问题,私聊删除)

    一.灰色预测使用的场景 数据是以年份度量的非负数据(如果是月份或者季度数据一定要用我们上一讲学过的时间序列模型): 数据能经过准指数规律的检验(除了前两期外,后面至少90%的期数的光滑比要低于0.5) ...

  2. 备战数学建模45-粒子群算法优化BP神经网络(攻坚站10)

    BP神经网络主要用于预测和分类,对于大样本的数据,BP神经网络的预测效果较佳,BP神经网络包括输入层.输出层和隐含层三层,通过划分训练集和测试集可以完成模型的训练和预测,由于其简单的结构,可调整的参数 ...

  3. bp神经网络预测未来数据,bp神经网络数据预处理

    如何建立bp神经网络预测 模型 建立BP神经网络预测 模型,可按下列步骤进行:1.提供原始数据2.训练数据预测数据提取及归一化3.BP网络训练4.BP网络预测5.结果分析现用一个实际的例子,来预测20 ...

  4. 优化算法 | 基于粒子群优化算法的Bp神经网络预测21~22赛季NBA总冠军(附MATLAB代码)

    文章目录 前言 一.数据准备 二.基于PSO的Bp神经网络预测 1.粒子表达方式 2.目标函数 3.粒子速度和位置的更新 三.MATLAB代码 四.预测结果 五.代码获取方式 总结 近期你可能错过了的 ...

  5. bp神经网络预测模型python,r语言bp神经网络预测

    如何建立bp神经网络预测 模型 . 建立BP神经网络预测模型,可按下列步骤进行:1.提供原始数据2.训练数据预测数据提取及归一化3.BP网络训练4.BP网络预测5.结果分析现用一个实际的例子,来预测2 ...

  6. 提高bp神经网络预测精度,bp神经网络数据预处理

    bp神经网络对输入数据和输出数据有什么要求 p神经网络的输入数据越多越好,输出数据需要反映网络的联想记忆和预测能力.BP网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数 ...

  7. python实现bp神经网络预测,神经网络算法预测彩票

    神经网络预测双色球有多靠谱 你好,这东西没人会预测.如果真会预测,早就成为百万富翁了.预测这东西我早就不信了,上一回在网站上,看别人预测,结果买了,连一个号码都没对上.楼主真要买,就权当是献爱心吧. ...

  8. MATLAB实现BP神经网络预测汽油辛烷值

    MATLAB实现BP神经网络预测汽油辛烷值 今天学习的新内容,在这里记录一下便于日后复习 1.清空变量,做好准备工作 %% I. 清空环境变量 clear all clc 2.导入数据,划分前50个为 ...

  9. BP神经网络预测实现

    基本概念 误差反向传播神经网络简称为BP(Back Propagation)网络,它是一种具有三层或三层以上的多层神经网络,每一层都由若干个神经元组成.如图所示为一个BP神经网络的结构图,它的左.右各 ...

  10. 用BP神经网络预测虫害

    用BP神经网络预测虫害 首先构造3年中,5月到12月,平均气温,最低气温,日照时间和降雨量的数据集,作为输入 %构建训练样本中的输入向量P p1=[-0.0909 0.4825 0.9580 0.66 ...

最新文章

  1. 触类旁通,经典面试题最长公共子序列应该这么答
  2. 编译器错误信息: CS1595: 已在多处定义“ ”;一种可能出现的情况
  3. pytorch:一维线性回归(一)
  4. es6之数据结构 set,WeakSet,mapWeakMap
  5. hadoop和kerberos的整合总结
  6. c#中的long类型示例_C#中带示例的无符号字节数组
  7. 基于Linux和MiniGUI的嵌入式系统软件开发指南(二)
  8. 多份word合并 保留不同页眉_如何给Word设置不同页眉和页脚?
  9. python中按照文件夹中文件的排列顺序读取文件内容
  10. 软件质量与测试的新纪元
  11. matlab 量化与过采样,[转载]降采样,过采样,欠采样,子采样,下采样
  12. 以太坊为什么又要进行“缪尔冰川”硬分叉?
  13. 二级域名指向同一ip的不同端口
  14. 计算机系高考激励的句子,高考激励人心的句子
  15. android 如何定位anr,ANR产生的原因及其定位分析
  16. 计算机系统实验六:程序的链接
  17. 我今天登陆竟然被 CSDN 管理员给封杀了。
  18. APIDOC使用教程
  19. 级联和非级联_级联和其他基本必需品
  20. 算法设计与分析(第4版)

热门文章

  1. 飞客蠕虫(Conficker)
  2. VFP+6.0中文版教程--初级教程
  3. 家用智能门锁常见的开锁方式,主要有哪些?
  4. Windows 上如何制作简谱
  5. jsp九大内置对象的使用详解
  6. Python编程实践—打印 九九乘法表的几种方法
  7. git学习笔记——廖雪峰git教程
  8. jep 使用方法与简介
  9. PR软件怎么去视频噪声
  10. jQuery页面加载事件