请选择 进入手机版 | 继续访问电脑版

Hello Mat

 找回密码
 立即注册
查看: 9715|回复: 4

BP神经网络数据滚动预测

[复制链接]

1278

主题

1504

帖子

90

金钱

管理员

Rank: 9Rank: 9Rank: 9

积分
22549
发表于 2017-5-16 21:46:37 | 显示全部楼层 |阅读模式
百度网盘链接:
链接: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
  1. %% BP网络的预测
  2. %% 清空环境变量
  3. clc,clear,close all
  4. warning off
  5. format shortG
  6. addpath('..\')
  7. % 导入数据
  8. % data = importfile('数据.xlsx','Sheet1','A1:K16');
  9. % save data.mat data
  10. load data.mat

  11. % 训练数据和预测数据
  12. input_train = cell2mat(data(2:11,:))';
  13. input_test = cell2mat(data(12:end-1,:))';
  14. % 输出数据
  15. output_train = cell2mat(data(3:12,:))';
  16. output_test = cell2mat(data(13:end,:))';
  17. % 选连样本输入输出数据归一化
  18. [inputn,inputps]=mapminmax(input_train);
  19. [outputn,outputps]=mapminmax(output_train);
  20. inputn_test=mapminmax('apply',input_test,inputps);
  21. outputn_test=mapminmax('apply',output_test,outputps);

  22. %% 网络结构初始化
  23. % 节点个数
  24. inputnum=11;
  25. hiddennum=15;
  26. outputnum=11;
  27. % 初始化网络结构
  28. nntwarn off
  29. % 多隐藏层
  30. % net=newff(input_train,output_train,[11,15],{'logsig','tansig'},'trainlm');
  31. % net=newff(input_train,output_train,[3,7],{'logsig','logsig'},'trainlm');
  32. % 单隐藏层
  33. % net=newff(inputn,outputn,hiddennum,{'logsig','logsig'},'trainlm');
  34. net=newff(inputn,outputn,hiddennum,{'logsig','tansig'},'trainlm');

  35. net.trainParam.epochs=300;
  36. net.trainParam.lr=0.01;
  37. net.trainParam.goal=1e-16;
  38. net.trainParam.min_grad = 1e-16;
  39. net.trainParam.show=100;
  40. net.trainParam.showWindow=1;
  41. net.trainParam.max_fail=200;
  42. % 网络训练
  43. [net,per]=train(net,inputn,outputn);

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

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

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





算法QQ  3283892722
群智能算法链接http://halcom.cn/forum.php?mod=forumdisplay&fid=73
回复

使用道具 举报

0

主题

22

帖子

1

金钱

新手上路

Rank: 1

积分
23
发表于 2019-8-31 11:42:20 | 显示全部楼层
很棒的分享,希望博主坚持下去
回复 支持 反对

使用道具 举报

0

主题

17

帖子

0

金钱

新手上路

Rank: 1

积分
17
发表于 2019-11-25 22:48:51 | 显示全部楼层
你好楼主,输入数据的测试集怎么是(12:end-1),此处为什么要减一呢
回复 支持 反对

使用道具 举报

1278

主题

1504

帖子

90

金钱

管理员

Rank: 9Rank: 9Rank: 9

积分
22549
 楼主| 发表于 2019-11-27 21:30:43 | 显示全部楼层
夏天的风 发表于 2019-11-25 22:48
你好楼主,输入数据的测试集怎么是(12:end-1),此处为什么要减一呢

参考例子而已,不用太在意,根据自己的问题来
算法QQ  3283892722
群智能算法链接http://halcom.cn/forum.php?mod=forumdisplay&fid=73
回复 支持 反对

使用道具 举报

0

主题

16

帖子

1

金钱

新手上路

Rank: 1

积分
8
发表于 2020-8-21 22:37:22 | 显示全部楼层
很棒的分享,希望我可以继续学习相关知识
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Python|Opencv|MATLAB|Halcom.cn ( 蜀ICP备16027072号 )

GMT+8, 2024-3-28 19:31 , Processed in 0.276731 second(s), 26 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表