有兩個自變量,壹個因變量,10個樣本(這裏就取少壹點好了)。用實際問題來表述,假設壹個股票,開盤價 x1,收盤價 x2,第二天的股價 y。 那用神經網絡來預測的目的是,根據10天的開盤價和收盤價,來預測未來股價。顯然,這裏的y與x1和x2相關,我們要訓練壹個網絡(net)來讓他盡可能的預測壹個y
MATLAB程序
clc
clear
load data input output
%input就是包含了x1和x2 10天數據的矩陣,說白了就是20個數的矩陣。output是y的壹個向量,%10個數
%需要自己找壹些數據賦值給input和ouput
P=input;
T=output;
%這裏P和T必須是 x1 x2和y的行向量組合。對於P,x1是行向量,x2是行向量。P=[x1;x2]; T=y. y是行向量
Epochs=5000;
NodeNum=12; TypeNum=1;
TF1='logsig'; TF2='purelin';
%設置壹些初始參數,Epochs是叠代上限次數,NodeNum是第壹個隱藏層的神經元個數,%TypeNum是幾層。TF1和TF2分別定義了幾個傳遞函數。
net=newff(minmax(P),[NodeNum TypeNum],{TF1 TF2},'trainlm');
%建立壹個神經網絡,訓練輸入和輸出數據都有了,設置隱藏層的個數。
net.trainParam.epochs=Epochs;
net.trainParam.goal=1e-4;
net.trainParam.min_grad=1e-4;
net.trainParam.show=200;
net.trainParam.time=inf;
%設置壹些訓練時的參數,第壹個是每次訓練的最大叠代次數;
net=train(net,P,T);
%開始網絡訓練
P_test=P;
B_test=T;
%就用原始的數據進行測試
X=sim(net,P_test);
%測試
Erro=abs(B_test-X);
sigma=std(Erro);
%計算出預測值和實際值的誤差,求出方差。將來方差可以用來隨機調整