?? question_a_bp.asv
字號:
%建立BP神經網絡
%P為輸入矢量,即是股市點數的日期,
%T為目標矢量,即是當日的收盤點數
[pn,minp,maxp,tn,mint,maxt]=premnmx(P,T);
% 創建一個新的前向神經網絡
net_1=newff([-1,1],[50,35,42,1],{'purelin','logsig','logsig','tansig'},'traingdm')
%設置訓練參數
netbp.trainParam.lr=1; %設置學習率
net_1.trainParam.show=200;%每100步顯示一次
net_1.trainParam.goal=1e-7;%訓練目標,精度
net_1.trainParam.epochs=3000;%訓練次數
net_1.trainParam.min_grad=1e-7;%最小性能梯度
net_1.trainParam.lr_inc=1.1; %將學習率增量因子設置為1.1
net_1.trainParam.lr_dec=1; %將學習率減量因子設置為0.8
%調用train算法訓練
[net_1,tr]=train(net_1,pn,tn);
%對BP網絡進行仿真
anewn=sim(net_1,pn);
%數據還原
anew=postmnmx(anewn,mint,maxt);
%anew與tn做圖對比
subplot(1,2,1),plot(T),legend('真實數據',1)
hold,subplot(1,2,1),plot(anew,'r')
title('真實數據與模擬數據對比')
legend('真實數據','模擬數據',1)
%繪制誤差
subplot(1,2,2)
plot(T-anew)
title('誤差分析')
% 對新數據進行分析,記為pnew
pnewn=tramnmx(pnew,minp,1429);
anewn=sim(net_1,pnew); %對BP網絡進行仿真
anew=postmnmx(anewn,mint,maxt);
plot(anew)
hold
plot(tar)
% %日期數據轉換
year=double(uint16(P/10000));
month=double(uint16((P-10000*year)/100));
day=P-10000*year-100*month;
P=(year-2005)*365+month*30+day-180;
%Change the order of P and T
[m,n]=size(P);
for i=1:n
Q(1,i)=P(1,n-i+1);
end
P=Q;
[m,n]=size(T);
for i=1:n
Q(1,i)=T(1,n-i+1);
end
T=Q;
%polyfit多項式擬合
A=polyfit(P,T,6);
Z=polyval(A,P);
plot(P,T,'k',P,Z,'r')
pp = polyder(A); % 對擬合得到的多項式求導,得到導函數pp
dy2 = polyval(pp,P) % 計算導函數pp在x的導數值
plot(P,dy2,'r')
% 三次樣條插值方法
cs = csapi(P,T); % 生成三次樣條插值函數cs
pp = fnder(cs); % 計算三次樣條插值函數cs的導函數pp
dy3 = fnval(pp,P) % 計算導函數pp在x的導數值
plot(P,dy3,'k')
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -