程序相关说明:

input:预处理后的训练集数据 (60 by 14731)

output:预处理后的训练集标签(1 by 14731)

input_test:预处理后的测试集数据(60 by 100)

output_test:测试集数据经模型拟合后的结果(1 by 100)

BPoutput:反归一化,得到数据本身数量级的值(1 by 100)

net:训练后的网络

注:与newff相比,多出一个output_test量!

feedforwarnet将样本自动分为training、validation、test。

output_net:将input做输入,经过训练后的网络,得到输出结果。(1 by 14731)

它与output作比较,可以对训练得到的模型进行初步评估。

%% 模型训练
% Author:Huberry
% Date:2017.11.23
tic
clear;
clc;
format compact;
%% 加载数据集 输入输出均归一化处理
load('train_FD001_trainData.mat','trainData','trainLabel')
load('train_FD001_regressPara.mat','HI_regress');    %线性回归参数
[input,setting1] = mapminmax(trainData');
[output,setting2] = mapminmax(trainLabel');
% 测试单元样本集
load('train_FD001_testData','testData','RUL_FD001');
input_test = mapminmax('apply',testData',setting1);
% newff版本
% %创建BP网络
% net = newff(input,output,15,{'tansig','purelin'},'traingdm');
% net.divideFcn = '';
% net.trainparam.show = 50;
% net.trainparam.epochs = 20000 ;
% net.trainparam.goal = 0.01 ;
% net.trainParam.lr = 0.01 ;
% %训练网络模型
% [net,tr] = train(net,input,output);
% %记录模型权值和阈值
% weigh1=net.iw{1,1};
% bias1=net.b{1,1};
% weigh2=net.lw{2,1};
% bias2=net.b{2,1};
% save('BpPara','net','weigh1','bias1','weigh2','bias2');
% feedforwardnet版本
net = feedforwardnet(12,'traingdm');
% Setup Division of Data for Training, Validation, Testing
net.divideParam.trainRatio = 0.9;
net.divideParam.valRatio = 0.1;
net.divideParam.testRatio = 0;
net.trainParam.max_fail=100;
net.performFcn = 'mse';
net.plotFcns = {'plotperform','plottrainstate','ploterrhist', ...'plotregression', 'plotfit'};
[net,tr] = train(net,input,output);
output_net = net(input);
performance = perform(net,output,output_net);  % 根据设定的net.performFcn
% Recalculate Training, Validation and Test Performance获得训练验证和测试的结果
trainTargets = output.* tr.trainMask{1};
valTargets = output.* tr.valMask{1};
testTargets = output.* tr.testMask{1};
trainPerformance = perform(net,trainTargets,output_net)
valPerformance = perform(net,valTargets,output_net)
testPerformance = perform(net,testTargets,output_net)
%% 测试
output_test = sim(net,input_test);
BPoutput = mapminmax('reverse',output_test,setting2);
disp('网络模型与实际RUL之间的MSE:')
mse(RUL_FD001'-BPoutput)
% 绘图
view(net)
figure(1)
plot(BPoutput,':or')
hold on
plot(RUL_FD001,'-*')
legend('预测RUL值','实际RUL值');
title('模型输出','fontsize',12);
toc

注释:

1、关于training、validation、test

参考:http://www.ilovematlab.cn/thread-68797-1-1.html

training set是训练样本数据;validation set是验证样本数据;test set是测试样本数据。在训练时,用training训练,每训练一次,系统自动会将validation set中的样本数据输入神经网络进行验证,在validation set输入后会得出一个误差(不是网络的训练误差,而是验证样本数据输入后得到的输出误差,可能是均方误差),而此前对validation set会设置一个步数,比如默认是6echo,则系统判断这个误差是否在连续6次检验后不下降,如果不下降或者甚至上升,说明training set训练的误差已经不再减小,没有更好的效果了,这时再训练就没必要了,就停止训练,不然可能陷入过学习。所以validation set有个设置步数,作用就在这里。

实际使用中,经常出现Validation checks很快达到6此变停止的情况!

解决方法:

(1)net.divideFcn=' ';  样本只做为训练集使用

(2)net.trainParam.max_fail=100;  改变默认值6

本程序因为有单独的测试集,故将net.divideParam.testRatio设置为0。

2、关于mse

mse大小的判断是相对于输出数据的数量级来共同决定的。

比如数据所在范围是0-1之间,而mse值为0.2,此时mse值可能并不理想。

但是,如果数据均为大于100的数据,mse为0.2时,效果应该是不错的。

3、几个小说明

net.plotFcns 表示程序运行结束后,显示的nntraintool工具箱中Plots部分显示哪些内容;

view(net) 显示你的网络结构;

BP神经网络:feedforwardnet版回归预测相关推荐

  1. 【回归预测-BP预测】基于灰狼算法优化BP神经网络实现数据回归预测附matlab代码

    1 内容介绍 Mirjalili 等在 2014 年 提 出 了 灰 狼 优 化 ( Grey Wolf Optimizer,GWO) 算法,是一种新型群智能优化算法,通过模拟自然界中灰狼寻找.包围和 ...

  2. 鲸鱼算法(WOA)优化的BP神经网络预测,WOA-BP回归预测,多输入单输出模型。

    %%  清空环境变量 warning off             % 关闭报警信息 close all               % 关闭开启的图窗 clear                 ...

  3. 北方苍鹰算法(NGO)优化的BP神经网络预测,NGO-BP回归预测

    %%  清空环境变量 warning off             % 关闭报警信息 close all               % 关闭开启的图窗 clear                 ...

  4. MATLAB实现基于BP神经网络的图像压缩

    神经网络建模 BP神经网络用于压缩的原理如下: BP网络至少包含一个隐含层,这里只采用一个隐含层,因此整体构成了一个三层的网络.把一组输入模式通过少量的隐含层单元映射到一组输出模式,并使输出模式尽可能 ...

  5. matlab feedforward,Matlab BP神经网络工具箱之feedforwardnet使用小结

    function C_net_BP01 u_hebing=textread('u_hebing.txt'); f_hebing=textread('f_hebing.txt'); %数据验证===== ...

  6. ACO蚁群算法优化BP神经网络(ACO-BPNN)回归预测MATLAB代码(有优化前后的对比)

    ACO蚁群算法优化BP神经网络(ACO-BPNN)回归预测MATLAB代码(有优化前后的对比) 代码注释清楚. main为运行主程序,可以读取本地EXCEL数据. 很方便,容易上手. (以电厂运行数据 ...

  7. PSO粒子群算法优化BP神经网络(PSO-BPNN)回归预测MATLAB代码

    PSO粒子群算法优化BP神经网络(PSO-BPNN)回归预测MATLAB代码(有优化前后的对比) 代码注释清楚. main为运行主程序,可以读取本地EXCEL数据,也可以加载本地数据.mat,使用换自 ...

  8. 基于PCA主成分分析的BP神经网络回归预测MATLAB代码

    基于PCA主成分分析的BP神经网络回归预测MATLAB代码 代码注释清楚. 先对数据集进行主成分分析,自主根据贡献率选择主成分:同时计算KMO验证值:用PCA以后数据进行BP神经网络回归预测. 可以读 ...

  9. 【BP回归预测】基于matlab文化算法优化BP神经网络数据回归预测【含Matlab源码 2124期】

    一.文化算法及BP神经网络简介 1 文化粒子群算法原理 本文提出的文化粒子群算法采用文化算法的双层演化结构.[4]算法包含两个进化空间, 一个是由具体个体组成的群体空间;另一个是由在进化过程中获取的经 ...

最新文章

  1. deeplearning模型库
  2. yjv是电缆还是电线_BVV属于电线还是电缆?
  3. 前端学习(2559):双向数据和单向数据不冲突
  4. javascript Array
  5. 程序员相亲图鉴,太真实了!
  6. java 485通讯_JAVA开发工程师 | 广州市三地信息技术有限公司
  7. 【考研】2021年哈尔滨工业大学计算机考研「复试」经验贴
  8. 测试一拳多少公斤的软件,李小龙一拳能打出400公斤,手里双节棍有多少力量,测试后难以置信...
  9. Android NDK交叉编译sysstat工具
  10. (数据科学学习手札37)ggplot2基本绘图语法介绍
  11. requests使用代理IP
  12. github官网无法进入的问题
  13. 威刚xpg 龙耀 lancer ddr5 6000 32G超频记录
  14. STM32HAL库定时器中断关闭的方法
  15. 计算机等级二级 领慧,计算机二级考试真题-Word-领慧讲堂大学生人生规划海报...
  16. 一键换肤 自定义css样式实现
  17. c语言找出最大的偶数,查找最大值和最小值为偶数和奇数
  18. Windows下快速创建指定大小的空文件
  19. webstorm实现手机预览页面
  20. 《设计模式》2.创建型模式

热门文章

  1. mysql企业版功能列表_大型企业数据库服务首选,AliSQL这几大企业级功能你了解几个?...
  2. nginx proxy_pass 使用变量报错_nginx自定义变量与内置预定义变量
  3. 在html显示数据库的信息,从数据库中提取信息并将其显示在HTML div
  4. java小新人 带着萌新看springboot源码
  5. 2017.7.8 MS SQL Server and BI workshop
  6. Puppet安装与配置简介(附视频教程)
  7. Microsoft Bot Builder Overview
  8. 联合光伏回应“天价收购”质疑:并非每瓦10.24元
  9. CSS3新特性(阴影、动画、渐变、变形、伪元素等) CSS3与页面布局学习总结——CSS3新特性(阴影、动画、渐变、变形、伪元素等)...
  10. AsynTask用法