BP神经网络——基于近红外光谱的汽油辛烷值预测

  • 问题描述
    • 获取数据
    • 解题思路及步骤
    • 1.产生训练集/测试集
    • 2.创建/训练BP神经网络及仿真测试
    • 3.性能评价
    • 4.绘图
    • Matalab代码

问题描述

辛烷值是汽油最重要的品质指标,传统的实验室检测方法存在样品用量大、测试周期长和费用高等问题,不适用与生产控制,特别是在线测试,近红外光谱分析方法(NIR),作为一种快速分析方法,已经广泛应用于农业、制药、生物化工、石油产品等领域。其优越性是无损检测、低成本、无污染、能在线分析,更适合于生产和控制的需要。
针对采集得到的60组汽油样品,利用傅立叶近红外变换光谱仪对其扫描,扫描范围为900~1700nm,扫描间隔为2nm,每个样品的光谱曲线共含有401个波长点。同时,利用传统实验室检测方法测定其辛烷值含量。现要求利用BP神经网络建立汽油样品近红外光谱与其辛烷值之间的关系的数学模型,并对模型的性能进行评价。

获取数据

公共号“不研而喻”中回复“汽油辛烷值预测”,获取本文所需数据。
公共号“不研而喻”中回复“书籍”,获取50本数据分析、python、统计学经典书籍。

扫描二维码,在“不研而喻”中回复“汽油辛烷值预测

解题思路及步骤

1.产生训练集/测试集

为了保证建立的模型具有良好的泛化能力,要求训练集样本足够多,且具有良好的代表性。一般认为,训练集样本数量占总体样本数量的2/3-3/4为宜,剩余的1/4-1/3作为测试集样本。同事,尽量使得训练集与测试集样本的分布规律近似相同。
60个样品的光谱及辛烷值数据保存在spectra_data.mat文件中,该文件包含两个变量矩阵:NIR为60行401列的样品光谱数据,octane为60行1列的辛烷值数据。这里采用随机法产生训练集和测试集,随机产生50个样品作为训练集,剩余的10个样品作为测试集。

2.创建/训练BP神经网络及仿真测试

创建BP神经网络需要确定网络的结构,即需要确定以下几个参数:输入变量个数、隐函数层数及个层神经元个数、输出变量个数。从问题描述中可知,输入变量个数为401,输出变量个数为1。隐含层一个(可逼近任意非线性函数),隐含层神经元的个数对BP神经网络的性能影响较大。若隐含层神经元的个数较少,则网络不能充分描述输出和输入变量之间的关系;相反,若隐含层神经元的个数较多,则会导致网络的学习时间变长,甚至会出现过拟合的问题。一般地, 确定隐含层神经元个数的方法实在经验公式的基础上,对比隐含层不同神经元个数对模型性能的影响,从而进行选择。
网络结构确定后,设置相关训练参数(如训练次数、学习率等),便可以对网络进行训练。模型建立后,将测试集的输入变量送入模型,模型的输出就是对应的预测结果。
利用MATLAB神经网络自带工具箱的函数,可以方便的进行BP神经网络创建、训练及仿真测试。在训练之前,可以对相关的训练参数进行设置,也可以采取默认设置。

3.性能评价

通过计算测试集预测值与真实值间的误差,可以对模型的泛化能力进行评价。在此基础上,可以进行进一步的研究和改善。
相对误差越小,表明模型的性能越好。决定系数范围在[0,1]内,越接近于1,表明模型的拟合性能越好,反之,越趋近于0,表明模型的拟合性能越差。

4.绘图

为了更为直观地对结果进行观察和分析,以图片的形式将结果呈现出来。

Matalab代码

公共号“数据统计分析与挖掘”中回复“汽油辛烷值预测”,获取本文所需数据。
或,扫描上方二维码,回复“汽油辛烷值预测”,获取本文所需数据。

clear all;clc
%% 训练集/测试集产生
load spectra_data.mat;
temp = randperm(size(NIR, 1));
P_train = NIR(temp(1:50), :)';
T_train = octane(temp(1:50), :)';
P_test = NIR(temp(51:end), :)';
T_test = octane(temp(51:end), :)';
N = size(P_test, 2);
%% BP神经网络创建、训练及仿真测试
net = newff(P_train, T_train, 9);
net.trainParam.epochs = 1000;
net.trainParam.goal = 1e-3;
net.trainParam.lr = 0.01;
net = train(net, P_train, T_train);
T_sim_bp = sim(net, P_test);
% 相对误差error
error_bp = abs(T_sim_bp - T_test)./T_test;
% 决定系数R^2
R2_bp = (N*sum(T_sim_bp.*T_test)-sum(T_sim_bp)*sum(T_test))^2 .../ ((N*sum((T_sim_bp).^2)-(sum(T_sim_bp))^2) ...*(N*sum((T_test).^2)-(sum(T_test))^2));
% 结果
result_bp = [T_test' T_sim_bp' error_bp'];
disp(result_bp);
%% 绘图
figure();
plot(1:N, T_test, 'b:*', 1:N, T_sim_bp, 'r-o');
legend('真实值', ' BP预测值');
xlabel('预测样本');
ylabel('辛烷值');
string = {'测试集辛烷值含量预测结果(BP)'; ...['R^2=' num2str(R2_bp) '(BP)']};
title(string);

BP神经网络——基于近红外光谱的汽油辛烷值预测相关推荐

  1. RBF神经网络——基于近红外光谱的汽油辛烷值预测

    RBF神经网络--基于近红外光谱的汽油辛烷值预测 问题描述 辛烷值是汽油最重要的品质指标,传统的实验室检测方法存在样品用量大.测试周期长和费用高等问题,不适用与生产控制,特别是在线测试,近红外光谱分析 ...

  2. 《MATLAB智能算法30个案例》:第25章 有导师学习神经网络的回归拟合——基于近红外光谱的汽油辛烷值预测

    <MATLAB智能算法30个案例>:第25章 有导师学习神经网络的回归拟合--基于近红外光谱的汽油辛烷值预测 1. 前言 2. MATLAB 仿真示例 3. 小结 1. 前言 <MA ...

  3. matlab里BP神经网络实现实例2汽油辛烷值预测

    一.引入 1.首先得到数据,比如数据是从exce导入,也可以是现成的.mat文件.60组汽油样品,利用傅里叶近红外变换光谱仪对其进行扫描,扫描范围900~1700nm,扫描间隔2nm,每个样品的光谱曲 ...

  4. 有导师学习神经网络的回归拟合——基于近红外光谱的汽油辛烷值预测

    文章目录 一.理论基础 1.BP神经网络概述 2.RBF神经网络概述 二.案例背景 1.问题描述 2.解题思路与步骤 三.MATLAB程序实现 1.产生训练集/测试集 2.创建/训练BP神经网络及仿真 ...

  5. MAT之NN:实现BP神经网络的回归拟合,基于近红外光谱的汽油辛烷值含量预测结果对比

    MAT之NN:实现BP神经网络的回归拟合,基于近红外光谱的汽油辛烷值含量预测结果对比 目录 输出结果 实现代码 输出结果 实现代码 load spectra_data.mat plot(NIR') t ...

  6. RBF:RBF基于近红外光谱的汽油辛烷值含量预测结果对比

    RBF:RBF基于近红外光谱的汽油辛烷值含量预测结果对比 目录 输出结果 代码设计 输出结果 代码设计 ​ load spectra_data.mat temp = randperm(size(NIR ...

  7. matlab光谱实验,实验四Matlab神经网络及应用于近红外光谱的汽油辛烷值预测

    . 实验四Matlab神经网络以及应用于汽油辛烷值预测 一.实验目的 1. 掌握MATLAB创建BP神经网络并应用于拟合非线性函数 2. 掌握MATLAB创建REF神经网络并应用于拟合非线性函数 3. ...

  8. 有监督学习神经网络的回归拟合——基于红外光谱的汽油辛烷值预测(Matlab代码实现)

    目录 1 概述 2 部分运行结果 3 Matlab代码实现 4 参考文献 1 概述 红外光谱法(IR)属于分子振动光谱技术,波数范围在4000cm-1-400cm-1之间,它的原理是基于分子中各类官能 ...

  9. BP神经网络实现汽油辛烷值预测,《MATLAB源码+数据集》

    发展背景 在人工神经网络的发展历史上,感知机(Multilayer Perceptron,MLP)网络曾对人工神经网络的发展发挥了极大的作用,也被认为是一种真正能够使用的人工神经网络模型,它的出现曾掀 ...

最新文章

  1. 独家 | 25道SVM题目,测一测你的基础如何?(附资源)
  2. python打印星星居中_python中怎么打印星星
  3. SSL 3.0曝出Poodle漏洞的解决方案-----开发者篇(转自:http://blog.csdn.net/lyq8479/article/details/40709175)...
  4. pythonwindow程序窗体操作_python操作Windows窗口程序
  5. Python]网络爬虫
  6. 随机效应与混合效应模型 SAS实践
  7. 英尺英寸和厘米的换算_英寸、英尺与厘米如何换算
  8. win7 开WiFi共享
  9. 辽宁等保测评机构项目测评收费价格标准参考
  10. php随机生成微信昵称(二)
  11. 玩转WIN7的MKLINK
  12. [BZOJ1779][Usaco2010 Hol]Cowwar 奶牛战争(最大流)
  13. Android service后台执行定时任务
  14. 基于libyuv库的NV12格式图片的缩放
  15. 49天精通Java,第12天,Java接口的作用和意义
  16. 关于那封刷屏的论文致谢,这碗鸡汤我干了
  17. Python笔记相关
  18. dep和rpm的安装
  19. 网络编程 正则表达式
  20. 湖南大学计算机考试题,湖南大学计算机组成原理期中考试题库

热门文章

  1. 《华尔街》观后笔记8——明暗创新
  2. weblogic与oracle断开,菜鸟经验:oracle与weblogic自动启动与停止
  3. centos7 安装/卸载wps 无法启动 字体缺失(亲测有效)
  4. python正则爬取微信阅读总榜单写入csv
  5. markdown渲染器--ACwing网站yxc老师题解
  6. shell字符串截取掐头去尾操作
  7. php批量改名工具,批量更名大师下载_批量改名大师(Win-Tool之文件批量更名工具) 1.8.7 演示版_极速下载站_软件下载...
  8. linux驱动开发:PWM驱动编写
  9. 某游戏客户流失情况数据分析
  10. 开源魔兽世界私服搭建