【BP預測】 基于BP神經網絡公路運量預測matlab 源碼
摘要
在目前的股票投資市場,不少自然人股民的投資主要方式使根據對當天或者一個較長周期對股票數據的預測,來得到下一天的股票數據,從而進行相應的投資。為了滿足股民希望能更為理性合理準確的預測股票走向,需要借助機器的幫助。本文主要是利用優(yōu)化過的遺傳算法,利用遺傳算法調整BP三層神經網絡的權重與閾值,使BP神經網絡的訓練效果得到提升,從而對股票市場的行情有比較好的預測效果。

遺傳算法

遺傳算法的過程:







%rood_yunliang.m,公路客運量運量BP網絡預測,2007年11月20-21日調試
%問題:用BP網絡預測公路客運量
%現有某省1978~2002年的客運量數據,即時間序列有N=25個歷史觀察值,
%采用長度n=5為一期,n0=2為滾動間隔。即用前5年的數據預測下一年的數據,
%每隔2年開始一期長度為5年的觀察數據。要求預測出2003年、2004年的客運量。
%分析:20期數據樣本分成兩組,每組10個,分別做為訓練集(1978年開始)和
%測試集(1979年開始)。設計BP網絡有5個輸入,1個輸出。采用雙隱含層,
%隱含層神經元數目采用試差法確定,經試驗,第1、2隱含層神經元數目分別為8、5,
%即BP網絡設計為5-8-5-1。
%將表1中的輸入、輸出數據比例化到區(qū)間[0.2~0.9]內,并將初始權值隨機化,取η=0 6,
%用1978年開始的10個訓練集訓練網絡。經1979年開始的10個測試集測試。
%1978~2002年的客運量數據
%年份 客運量
%1978 12815
%1979 15543
%1980 19326
%1981 22864
%1982 26150
%1983 28468
%1984 30882
%1985 39375
%1986 45759
%1987 49589
%1988 52560
%1989 48726
%1990 51083
%1991 56495
%1992 62767
%1993 83606
%1994 92090
%1995 101370
%1996 107317
%1997 108654
%1998 111847
%1999 112872
%2000 116997
%2001 126007
%2002 128980
close all
clc;
clear;
%按年份排列的原始客運量數據
p0=[12815 15543 19326 ?22864 ?26150 28468 30882 39375 ?45759 ?49589 ?52560 ?48726 ...
? ? ?51083 ?56495 ?62767 ?83606 ?92090 ?101370 ?107317 ?108654 ?111847 ?112872 ...
? ? 116997 ?126007 ?128980];
%繪制客運量隨年份的變換曲線
year=1978:2002;
plot(year,p0,'b+')
hold on
plot(year,p0,'b-.')
pause
%將原始數據歸一化到[0.2 ?0.9]
%規(guī)一化公式:規(guī)一化后數據=z1+(z2-z1)*(x-xmin)/(xmax-xmin)
%[z1 z2]為規(guī)格化后的數據范圍,如本例z1=0.2,z2=0.9;x為待規(guī)格化數據;
%xmin、xmax分別為數據序列的最小、最大值。
?p1=0.2+(0.9-0.2).*(p0-min(p0))./(max(p0)-min(p0));
%繪制規(guī)一化后客運量隨年份的變換曲線
%plot(year,p1)
%pause
%按每5年為一期組織樣本,作為訓練集,p為輸入,t為目標。從第1978年客運量開始
j=0;
for i=1:10;
? ? ? p(:,i)=p1(i+j:i+j+4); ?%取第i個訓練樣本,給p
? ? ? t(:,i)=p1(i+j+5);
? ? ? j=j+1;
end
p
t
pause
%按每5年為一期組織樣本,作為測試集,testp為輸入,testt為目標。從1979年客運量開始
j=0;
for i=1:10;
? ? ? testp(:,i)=p1(i+j+1:i+j+5);
? ? ? testt(:,i)=p1(i+j+6);
? ? ? j=j+1;
end
三、運行結果

四、備注
完整代碼添加QQ1575304183