Halcom 发表于 2017-5-16 21:46:37

BP神经网络数据滚动预测

百度网盘链接:
链接:http://pan.baidu.com/s/1qXZfg0c
具体链接在halcom.cn论坛,联系人QQ:3283892722
该论坛是一个学习交流平台,我会逐一的和大家分享学习。
欢迎大家录制视频,并提交给我,我来设置视频,你可在论坛进行打赏分享。
视频专用播放器:http://halcom.cn/forum.php?mod=viewthread&tid=258&extra=page%3D1

BP神经网络数据滚动预测 思路:上一时刻数据预测下一时刻数据(只是构造训练样本而已,例如在双色球、股票预测等中常用到):
(1)归一化处理:mapminmax
(2)返回当前路径的上一路径:addpah('..\')
(3)元胞体数据的mat化:cell2mat
%% BP网络的预测
%% 清空环境变量
clc,clear,close all
warning off
format shortG
addpath('..\')
% 导入数据
% data = importfile('数据.xlsx','Sheet1','A1:K16');
% save data.mat data
load data.mat

% 训练数据和预测数据
input_train = cell2mat(data(2:11,:))';
input_test = cell2mat(data(12:end-1,:))';
% 输出数据
output_train = cell2mat(data(3:12,:))';
output_test = cell2mat(data(13:end,:))';
% 选连样本输入输出数据归一化
=mapminmax(input_train);
=mapminmax(output_train);
inputn_test=mapminmax('apply',input_test,inputps);
outputn_test=mapminmax('apply',output_test,outputps);

%% 网络结构初始化
% 节点个数
inputnum=11;
hiddennum=15;
outputnum=11;
% 初始化网络结构
nntwarn off
% 多隐藏层
% net=newff(input_train,output_train,,{'logsig','tansig'},'trainlm');
% net=newff(input_train,output_train,,{'logsig','logsig'},'trainlm');
% 单隐藏层
% net=newff(inputn,outputn,hiddennum,{'logsig','logsig'},'trainlm');
net=newff(inputn,outputn,hiddennum,{'logsig','tansig'},'trainlm');

net.trainParam.epochs=300;
net.trainParam.lr=0.01;
net.trainParam.goal=1e-16;
net.trainParam.min_grad = 1e-16;
net.trainParam.show=100;
net.trainParam.showWindow=1;
net.trainParam.max_fail=200;
% 网络训练
=train(net,inputn,outputn);

% BP网络预测
% 训练样本--预测输出
yc_train = sim(net,inputn);
error_train = abs(yc_train-outputn);
disp(['训练样本均方根误差 = ',num2str(mse(error_train))])
train_simu=mapminmax('reverse',yc_train,outputps);

% 测试样本--预测输出
yc_test = sim(net,inputn_test);
error_test = abs(yc_test-outputn_test);
disp(['测试样本均方根误差 = ',num2str(mse(error_test))])
test_simu=mapminmax('reverse',yc_test,outputps);

rmpath('..\')
数据如下:
'C1'      '010'      '011'      '012'      '013'      '014'      '015'      '016'      '017'      '018'      '019'
38806      3214      66547      12779      22178      9659      1125      43904      7002      6283      1328
39732      3452      69457      13215      20445      9538      1162      42904      7297      5728      1374
42539      3521      70618      14175      21788      10452      1042      46816      7445      5953      1487
59921      8206      97935      20231      40629      18206      1876      79519      12440      9572      5902
62207      9000      98546      21341      41224      18450      1708      83525      12684      9034      6406
61841      9316      95524      21814      40516      18744      2366      83737      12074      9518      6676
59000      9106      95169      20895      39648      17274      1850      79603      10300      8853      6715
60519      7771      93502      20594      39313      17683      2212      83599      11095      9540      7782
45880      4891      69845      15066      25910      11646      981      58383      7538      6784      2426
45152      4180      65242      14471      22955      10843      825      53894      7256      5381      1973
63105      8374      95871      21532      39586      18103      1581      88389      11799      9512      6935
63204      9215      96761      21063      40563      17112      1458      86927      9471      9395      6627
63601      8765      92875      21946      39049      16255      1751      83535      11152      8830      6748
62061      8283      97337      21589      36235      16408      1430      78525      9929      8621      5981
64300      8337      91785      21375      34440      18013      1486      80286      9819      9328      7077




albert 发表于 2019-8-31 11:42:20

很棒的分享,希望博主坚持下去

夏天的风 发表于 2019-11-25 22:48:51

你好楼主,输入数据的测试集怎么是(12:end-1),此处为什么要减一呢

Halcom 发表于 2019-11-27 21:30:43

夏天的风 发表于 2019-11-25 22:48
你好楼主,输入数据的测试集怎么是(12:end-1),此处为什么要减一呢

参考例子而已,不用太在意,根据自己的问题来

LJN 发表于 2020-8-21 22:37:22

很棒的分享,希望我可以继续学习相关知识
页: [1]
查看完整版本: BP神经网络数据滚动预测