日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

股票預(yù)測之BP神經(jīng)網(wǎng)絡(luò)

 1_teng 2014-05-13

                                     股票預(yù)測之BP神經(jīng)網(wǎng)絡(luò)

      股票預(yù)測的算法有很多,可以用數(shù)學的卡爾曼濾波,粒子濾波、馬爾科夫、神經(jīng)網(wǎng)絡(luò)......
這其中涉及到很多因素,比如說,你用的特征,你選擇的范圍(針對個股還是多股、歷史時間范圍、分析周期等等)。小編自身對股票了解不深,僅僅是從數(shù)據(jù)的角度分析。(有點想的太簡單了O(∩_∩)O)
先從簡單的入手:簡單的算法:BP神經(jīng)網(wǎng)絡(luò); 簡單的范圍:個股、每日線、5個特征:開盤、最高、最低、收盤、漲幅。個股數(shù)據(jù)量大概有2000個。
      當然,這個過程和普通的BP沒什么兩樣,也是輸入數(shù)據(jù),訓練、測試這么一個過程,主要是看BP是否真的適合用來做預(yù)測。雖然有點簡單,不過還是簡單的描述一下吧。
      數(shù)據(jù)從哪里來?這里我是用了同花順這個軟件,然后選一個股,按照 分析——>k線圖——>按F1——>進入歷史行情數(shù)據(jù)。點擊右鍵——>導出數(shù)據(jù)——>下一步......這樣就可以得到連續(xù)的歷史數(shù)據(jù)表。接下來就是讀出數(shù)據(jù),進行訓練和預(yù)測了。
      首先,這里選用其中的5個特征:{開盤、最高、最低、收盤、漲幅}。這里用前一天的這樣一個特征向量來預(yù)測下一個交易日(時刻)的收盤。也就是說,輸入是這5維特征,輸出是下一時刻的收盤。
       有了這些數(shù)據(jù),有確定了輸入和輸出,那就直接創(chuàng)建BP來訓練。參數(shù)大多是默認的,隱層的轉(zhuǎn)移函數(shù)選擇sigmoid函數(shù),其他參數(shù)可依據(jù)需要一步一步調(diào)整。這里選擇前面1500個作為訓練,后面的200個作為測試樣本,訓練過程并不快,主要是梯度的閾值設(shè)的太低,迭代次數(shù)有點高、機器的性能也一般(⊙o⊙)…好了,是不是很期待測試結(jié)果(*^__^*) ……
      

      總體的預(yù)測和跟隨效果還行,但是局部分析起來還是有很多不足,容易劇烈跳動,總體普遍偏小,在這邊很關(guān)鍵的一點要指出,訓練的數(shù)據(jù)的覆蓋范圍要盡可能大,如果你的測試數(shù)據(jù)不再訓練的RANGE里面,很可能跑偏,甚至是一條直線。哪怕是你用頭尾兩端數(shù)據(jù)來訓練,效果都比用一大段數(shù)據(jù)而沒有覆蓋后面或前面的數(shù)據(jù)來的好。在初次訓練時候,由于有些參數(shù)是隨機初始化的,又因為BP容易陷入局部極小值,所以有可能會一下子就收斂,結(jié)果是一條直線%>_<%。好了,股票預(yù)測比較簡單的方法之BP就介紹到這里了。對了,不放代碼是不是有點不厚道?_?。盡管代碼很簡單.....

 data=xlsread('路徑.xls');
PP=data';
PQ=[0; 0; 0; 0 ;0];
P=zeros(5,1500);    %輸入矩陣
T=zeros(1,1500);    %輸出
for i=1:1500            %輸入輸出賦值
    PQ=PP(:,i);
    P(:,i)=PQ;
    T(i)=PP(4,i+1);
end
%  創(chuàng)建一個新的前向神經(jīng)網(wǎng)絡(luò) 
net_1=newff(minmax(P),[30,1],{'tansig','purelin'},'traingdm')

%  當前輸入層權(quán)值和閾值
inputWeights=net_1.IW{1,1};
inputbias=net_1.b{1};
%  當前網(wǎng)絡(luò)層權(quán)值和閾值
layerWeights=net_1.LW{1,1};
layerbias=net_1.b{1};

%  設(shè)置訓練參數(shù)
net_1.trainParam.show = 50;
net_1.trainParam.lr = 0.005;
net_1.trainParam.mc = 0.9;
net_1.trainParam.epochs = 10000;
net_1.trainParam.goal = 1e-3;

%  調(diào)用 TRAINGDM 算法訓練 BP 網(wǎng)絡(luò)
[net_1,tr]=train(net_1,P,T);

%  對 BP 網(wǎng)絡(luò)進行仿真
A = sim(net_1,P);
%  計算仿真誤差 
E = T - A;
MSE=mse(E)
%--------------------------測試數(shù)據(jù)-----------------------------%
x=InputA(1501:1700);  %測試數(shù)據(jù)
x=zeros(5,200);
for j=201:400
    x(:,(j-200))=PP(:,j);
end
YY=sim(net_1,x)         %用神經(jīng)網(wǎng)絡(luò)測試
XX=[1:length(x)];
plot(XX,YY,'-O');          %畫出結(jié)果
hold on;
plot(XX,PP(4,1502:1701),'r-O'); %真實結(jié)果


    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多