飞道的博客

【BP预测】 基于BP神经网络公路运量预测matlab 源码

253人阅读  评论(0)

摘要
在目前的股票投资市场,不少自然人股民的投资主要方式使根据对当天或者一个较长周期对股票数据的预测,来得到下一天的股票数据,从而进行相应的投资。为了满足股民希望能更为理性合理准确的预测股票走向,需要借助机器的帮助。本文主要是利用优化过的遗传算法,利用遗传算法调整BP三层神经网络的权重与阈值,使BP神经网络的训练效果得到提升,从而对股票市场的行情有比较好的预测效果。

遗传算法

遗传算法的过程:







  
  1. %rood_yunliang.m,公路客运量运量BP网络预测,2007年11月20-21日调试
  2. %问题:用BP网络预测公路客运量
  3. %现有某省1978~2002年的客运量数据,即时间序列有N=25个历史观察值,
  4. %采用长度n=5为一期,n0=2为滚动间隔。即用前5年的数据预测下一年的数据,
  5. %每隔2年开始一期长度为5年的观察数据。要求预测出2003年、2004年的客运量。
  6. %分析:20期数据样本分成两组,每组10个,分别做为训练集(1978年开始)和
  7. %测试集(1979年开始)。设计BP网络有5个输入,1个输出。采用双隐含层,
  8. %隐含层神经元数目采用试差法确定,经试验,第1、2隐含层神经元数目分别为8、5,
  9. %即BP网络设计为5-8-5-1。
  10. %将表1中的输入、输出数据比例化到区间[0.2~0.9]内,并将初始权值随机化,取η=0 6,
  11. %用1978年开始的10个训练集训练网络。经1979年开始的10个测试集测试。
  12. %1978~2002年的客运量数据
  13. %年份 客运量
  14. %1978 12815
  15. %1979 15543
  16. %1980 19326
  17. %1981 22864
  18. %1982 26150
  19. %1983 28468
  20. %1984 30882
  21. %1985 39375
  22. %1986 45759
  23. %1987 49589
  24. %1988 52560
  25. %1989 48726
  26. %1990 51083
  27. %1991 56495
  28. %1992 62767
  29. %1993 83606
  30. %1994 92090
  31. %1995 101370
  32. %1996 107317
  33. %1997 108654
  34. %1998 111847
  35. %1999 112872
  36. %2000 116997
  37. %2001 126007
  38. %2002 128980
  39. close all
  40. clc;
  41. clear;
  42. %按年份排列的原始客运量数据
  43. p0=[ 12815 15543 19326 22864 26150 28468 30882 39375 45759 49589 52560 48726 ...
  44. 51083 56495 62767 83606 92090 101370 107317 108654 111847 112872 ...
  45. 116997 126007 128980];
  46. %绘制客运量随年份的变换曲线
  47. year= 1978: 2002;
  48. plot(year,p0, 'b+')
  49. hold on
  50. plot(year,p0, 'b-.')
  51. pause
  52. %将原始数据归一化到[0.2 0.9]
  53. %规一化公式:规一化后数据=z1+(z2-z1)*(x-xmin)/(xmax-xmin)
  54. %[z1 z2]为规格化后的数据范围,如本例z1=0.2,z2=0.9;x为待规格化数据;
  55. %xmin、xmax分别为数据序列的最小、最大值。
  56. p1= 0.2+( 0.9- 0.2).*(p0-min(p0))./(max(p0)-min(p0));
  57. %绘制规一化后客运量随年份的变换曲线
  58. %plot(year,p1)
  59. %pause
  60. %按每5年为一期组织样本,作为训练集,p为输入,t为目标。从第1978年客运量开始
  61. j= 0;
  62. for i= 1: 10;
  63. p(:,i)=p1(i+j:i+j+ 4); %取第i个训练样本,给p
  64. t(:,i)=p1(i+j+ 5);
  65. j=j+ 1;
  66. end
  67. p
  68. t
  69. pause
  70. %按每5年为一期组织样本,作为测试集,testp为输入,testt为目标。从1979年客运量开始
  71. j= 0;
  72. for i= 1: 10;
  73. testp(:,i)=p1(i+j+ 1:i+j+ 5);
  74. testt(:,i)=p1(i+j+ 6);
  75. j=j+ 1;
  76. end

三、运行结果

四、备注

完整代码添加QQ1575304183


转载:https://blog.csdn.net/weixin_50197058/article/details/116433277
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场