BP神經網絡人口預測程序(matlab實現)

 

本身測試人口預測的matlab實現:網絡

x=[54167    
55196    
56300    
57482    
58796    
60266    
61465    
62828    
64653    
65994    
67207    
66207    
65859    
67295    
69172    
70499    
72538    
74542    
76368    
78534    
80671    
82992    
85229    
87177    
89211    
 90859    
 92420    
 93717    
 94974    
 96259    
 97542    
 98705    
100072    
101654    
103008    
104357    
105851    
107507    
109300    
111026    
112704    
114333    
115823    
117171    
118517    
119850    
121121    
122389    
123626    
124761    
125786    
126743    
127627    
128453    
129227    
129988    
130756    
131448    
132129    
132802    
134480    
135030    
135770    
136460    
137510]';
% 該腳本用來作NAR神經網絡預測
lag=3;    % 自迴歸階數
iinput=x;    % x爲原始序列(行向量)
n=length(iinput);

%準備輸入和輸出數據
inputs=zeros(lag,n-lag);
for i=1:n-lag
    inputs(:,i)=iinput(i:i+lag-1)';
end
targets=x(lag+1:end);

%建立網絡
hiddenLayerSize = 10; %隱藏層神經元個數
net = fitnet(hiddenLayerSize);

% 避免過擬合,劃分訓練,測試和驗證數據的比例
net.divideParam.trainRatio = 70/100;
net.divideParam.valRatio = 15/100;
net.divideParam.testRatio = 15/100;

%訓練網絡
[net,tr] = train(net,inputs,targets);
%% 根據圖表判斷擬合好壞
yn=net(inputs);
errors=targets-yn;
figure, ploterrcorr(errors)                      %繪製偏差的自相關狀況(20lags)
figure, parcorr(errors)                          %繪製偏相關狀況
%[h,pValue,stat,cValue]= lbqtest(errors)         %Ljung-Box Q檢驗(20lags)
figure,plotresponse(con2seq(targets),con2seq(yn))   %看預測的趨勢與原趨勢
figure, ploterrhist(errors)                      %偏差直方圖
figure, plotperform(tr)                          %偏差降低線


%% 下面預測日後預測幾個時間段
fn=7;  %預測步數爲fnide

 

f_in=iinput(n-lag+1:end)';
f_out=zeros(1,fn);  %預測輸出
% 多步預測時,用下面的循環將網絡輸出從新輸入
for i=1:fn
    f_out(i)=net(f_in);
    f_in=[f_in(2:end);f_out(i)];
end
% 畫出預測圖
figure,plot(1949:2013,iinput,'b',2013:2020,[iinput(end),f_out],'r')測試

用2014a版matlab運行後結果以下:3d

     網絡結構和各參數顯示以下:orm

                  

                    

                 

                     

                                                                       偏差直方圖blog

                  

 

                    

                

 

                

圖1  自相關    圖2 偏差get

                          

 圖3 預測input

 

      注意在對結果好壞的判斷中,僅僅看偏差圖是不夠的,若是是一個好的預測,那麼自相關性圖中除了0階自相關外,其餘的自相關係數係數都不該該超過上下置信區間。還有其餘的統計量和圖表都都寫在」%「後面了,若是須要,去掉就可用。最後的預測值爲f_out,個人預測值爲qt

138701.065269972    139467.632609654    140207.209707364    141210.109373609    141981.285378849    142461.332139592    143056.073139776it

相關文章
相關標籤/搜索