資源簡介
先加載excel文件中的數據,再訓練,最后預測出未來幾步的數據走勢。預測步數可以自己設定。文本和程序注釋有詳細說明。

代碼片段和文件信息
%%?清空環境變量
clc;
clear?all
close?all
nntwarn?off;
%%?數據載入
aa=xlsread(‘test.xls‘‘sheet3‘‘a1:a41‘);
lag=4;????%?自回歸階數
iinput=aa;?%?x為原始序列(行向量)
n=length(iinput);
%準備輸入和輸出數據
inputs=zeros(lagn-lag);%產生log行n-log列的元素為0的矩陣因為是兩階的。所以是兩個數據預測第三個數據。
for?i=1:n-lag
????inputs(:i)=iinput(i:i+lag-1)‘;
end
targets=aa(lag+1:end);
targets=targets‘;%將目標矩陣轉置,與inputs矩陣對應使兩個矩陣列數相等(與原始數據是橫還是列數據有關)
%創建網絡
hiddenlayerSize?=?10;?%隱藏層神經元個數
net?=?fitnet(hiddenlayerSize);%以隱藏層神經元的個數來建立網絡
%?避免過擬合,劃分訓練,測試和驗證數據的比例
net.divideParam.trainRatio?=?70/100;
net.divideParam.valRatio?=?15/100;
net.divideParam.testRatio?=?15/100;
%訓練網絡
[nettr]?=?train(netinputstargets);%trian訓練函數,trian(網絡結構,輸入數據,對應的目標數據)
%%?根據圖表判斷擬合好壞
yn=net(inputs);
errors=targets-yn;
figure?ploterrcorr(errors)??????????????????????%繪制誤差的自相關情況(20lags)
figure?parcorr(errors)??????????????????????????%繪制偏相關情況
%[hpValuestatcValue]=?lbqtest(errors)?????????%Ljung-Box?Q檢驗(20lags)
figureplotresponse(con2seq(targets)con2seq(yn))?%看預測的趨勢與原趨勢
%figure?ploterrhist(errors)??????????????????????%誤差直方圖
%figure?plotperform(tr)??????????????????????????%誤差下降線
%%?下面預測往后預測幾個時間段
fn=10;??%比如預測步數為fn。
f_in=iinput(n-lag+1:end);%原來給出的數據末尾幾個數據作為預測的開始輸入,具體是幾個數據與自回歸階數log有關,log是幾就以多少個末尾數據作為預測的輸入。f_in=iinput(n-lag+1:end)‘;加不加轉置與所給的數據是橫還是列有關
f_out=zeros(1fn);??%預測輸出
%?多步預測時,用下面的循環將網絡輸出重新輸入
for?i=1:fn
????f_out(i)=net(f_in);
????f_in=[f_in(2:end);f_out(i)];
end
%?畫出預測圖
figureplot(1:niinput‘b-s‘n:n+fn[iinput(end)f_out]‘r-d‘)
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????1872??2016-08-23?09:54??神經網絡訓練預測\Neizupre.m
?????文件??????19968??2016-08-23?09:49??神經網絡訓練預測\test.xls
?????文件?????????52??2016-08-23?10:34??神經網絡訓練預測\使用說明.txt
?????目錄??????????0??2016-08-23?10:34??神經網絡訓練預測
-----------?---------??----------?-----??----
????????????????21892????????????????????4
- 上一篇:OpenGl 飛機在藍天飛行 紋理貼圖 地形
- 下一篇:一類矩形切割的優化模型
評論
共有 條評論