国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【MATLAB數(shù)據(jù)處理實用案例詳解(13)】——利用Elman網(wǎng)絡(luò)實現(xiàn)上證股市開盤價預(yù)測

這篇具有很好參考價值的文章主要介紹了【MATLAB數(shù)據(jù)處理實用案例詳解(13)】——利用Elman網(wǎng)絡(luò)實現(xiàn)上證股市開盤價預(yù)測。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、問題描述

選擇2005年6月30日至2006年12月1日的上證開盤價進(jìn)行預(yù)測分析。數(shù)據(jù)保存在elm_stock.mat文件中,共計337條開盤價格,保存為double類型的向量中,開盤價的走勢如下圖所示。
【MATLAB數(shù)據(jù)處理實用案例詳解(13)】——利用Elman網(wǎng)絡(luò)實現(xiàn)上證股市開盤價預(yù)測

【MATLAB數(shù)據(jù)處理實用案例詳解(13)】——利用Elman網(wǎng)絡(luò)實現(xiàn)上證股市開盤價預(yù)測

二、Elman網(wǎng)絡(luò)預(yù)測上證股市開盤價原理

采用過去的股價預(yù)測下一期股價,因此相當(dāng)于一個時間序列問題,可以用Elman神經(jīng)網(wǎng)絡(luò)求解。
x n = f ( x n ? 1 , x n ? 2 , x n ? N ) {x_n} = f\left( {{x_{n - 1}},{x_{n - 2}},{x_{n - N}}} \right) xn?=f(xn?1?,xn?2?,xn?N?)
對于給定的337條開盤價數(shù)據(jù),首先將其劃分為訓(xùn)練樣本和測試樣本。以訓(xùn)練樣本為例,抽取 x 1 ~ x N {x_1} \sim{x_N} x1?xN?組成第一個樣本,其中 ( x 1 , x 2 , ? ? , x N ? 1 ) \left( {{x_1},{x_2}, \cdots ,{x_{N - 1}}} \right) (x1?,x2?,?,xN?1?)為自變量, x N {x_N} xN?為目標(biāo)函數(shù)值;抽取 x 2 ~ x N + 1 {x_2} \sim{x_{N+1}} x2?xN+1?組成第二個樣本,其中 ( x 2 , x 3 , ? ? , x N ) \left( {{x_2},{x_3}, \cdots ,{x_{N}}} \right) (x2?,x3?,?,xN?)為自變量, x N + 1 {x_{N+1}} xN+1?為函數(shù)值,以此類推,最終形成以下訓(xùn)練矩陣:
[ x 1 x 2 x i x 2 x 3 x i + 1 ? ? ? x N ? 1 x N x N x N + 1 ] \left[ \begin{array}{l} {x_1}{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {x_2}{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {x_i}\\ {x_2}{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {x_3}{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {x_{i + 1}}\\ {\kern 1pt} {\kern 1pt} {\kern 1pt} \cdots {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} \cdots {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} \cdots \\ {x_{N - 1}}{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {x_N}\\ {x_N}{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {x_{N + 1}} \end{array} \right] ?x1?x2?xi?x2?x3?xi+1????xN?1?xN?xN?xN+1?? ?

主要流程圖如下:
【MATLAB數(shù)據(jù)處理實用案例詳解(13)】——利用Elman網(wǎng)絡(luò)實現(xiàn)上證股市開盤價預(yù)測

三、算法步驟

主要步驟如下:

3.1 加載數(shù)據(jù)

代碼如下:

%% 清除工作空間中的變量和圖形
clear,clc
close all
% 加載337個上證指數(shù)開盤價格
load elm_stock
whos

列出當(dāng)前工作空間中的變量:
Name Size Bytes Class Attributes

price 337x1 2696 double

3.2 構(gòu)造樣本集

抽取 x 1 ~ x N {x_1} \sim{x_N} x1?xN?組成第一個樣本,其中 ( x 1 , x 2 , ? ? , x N ? 1 ) \left( {{x_1},{x_2}, \cdots ,{x_{N - 1}}} \right) (x1?,x2?,?,xN?1?)為自變量, x N {x_N} xN?為目標(biāo)函數(shù)值,以此類推,代碼如下:

% 數(shù)據(jù)個數(shù)
n=length(price);

% 確保price為列向量
price=price(:);

% x(n) 由x(n-1),x(n-2),...,x(n-L)共L個數(shù)預(yù)測得到.
L = 6;

% price_n:每列為一個構(gòu)造完畢的樣本,共n-L個樣本
price_n = zeros(L+1, n-L);
for i=1:n-L
    price_n(:,i) = price(i:i+L);
end

這里取N=6,即當(dāng)期的開盤價,應(yīng)由當(dāng)期之前6期的開盤價計算得到。這一步將最初長度為337向量轉(zhuǎn)化為7x331矩陣。

3.3 劃分訓(xùn)練集和測試集

將前380份樣本作為訓(xùn)練樣本,最后51分樣本作為測試樣本 :

trainx = price_n(1:6, 1:280);
trainy = price_n(7, 1:280);

testx = price_n(1:6, 290:end);
testy = price_n(7, 290:end);

3.4 創(chuàng)建Elman神經(jīng)網(wǎng)絡(luò)

MATLAB神經(jīng)網(wǎng)絡(luò)工具箱提供了newelm與elmannet函數(shù),都可以建立Elman反饋網(wǎng)絡(luò)。這里采用elmannet函數(shù),它只需要三個參數(shù),分別指定延遲、隱含層神經(jīng)元個數(shù)和訓(xùn)練函數(shù)。

% 包含15個神經(jīng)元,訓(xùn)練函數(shù)為traingdx
net=elmannet(1:2,15,'traingdx');

% 設(shè)置顯示級別
net.trainParam.show=1;

% 最大迭代次數(shù)為2000次
net.trainParam.epochs=2000;

% 誤差容限,達(dá)到此誤差就可以停止訓(xùn)練
net.trainParam.goal=0.00001;

% 最多驗證失敗次數(shù)
net.trainParam.max_fail=5;

% 對網(wǎng)絡(luò)進(jìn)行初始化
net=init(net);

3.5 網(wǎng)絡(luò)訓(xùn)練

先歸一化再訓(xùn)練。

%訓(xùn)練數(shù)據(jù)歸一化
[trainx1, st1] = mapminmax(trainx);
[trainy1, st2] = mapminmax(trainy);

% 測試數(shù)據(jù)做與訓(xùn)練數(shù)據(jù)相同的歸一化操作
testx1 = mapminmax('apply',testx,st1);
testy1 = mapminmax('apply',testy,st2);

% 輸入訓(xùn)練樣本進(jìn)行訓(xùn)練
[net,per] = train(net,trainx1,trainy1);

訓(xùn)練過程如下:
【MATLAB數(shù)據(jù)處理實用案例詳解(13)】——利用Elman網(wǎng)絡(luò)實現(xiàn)上證股市開盤價預(yù)測

3.6 測試

進(jìn)行測試時應(yīng)使用歸一化后的數(shù)據(jù),得出實際輸出后再將輸出結(jié)果反歸一化為正常的數(shù)據(jù)。

% 將訓(xùn)練數(shù)據(jù)輸入網(wǎng)絡(luò)進(jìn)行測試
train_ty1 = sim(net, trainx1);
train_ty = mapminmax('reverse', train_ty1, st2);

% 將測試數(shù)據(jù)輸入網(wǎng)絡(luò)進(jìn)行測試
test_ty1 = sim(net, testx1);
test_ty = mapminmax('reverse', test_ty1, st2);

四、結(jié)果展示

預(yù)測值與真實值比較如下:
【MATLAB數(shù)據(jù)處理實用案例詳解(13)】——利用Elman網(wǎng)絡(luò)實現(xiàn)上證股市開盤價預(yù)測


以上便是完整代碼了,如果還是不懂,可以下載源碼,參考資源:https://download.csdn.net/download/didi_ya/87734622。
制作不易,如果對你有所幫助,記得點個贊喲~文章來源地址http://www.zghlxwxcb.cn/news/detail-435703.html

到了這里,關(guān)于【MATLAB數(shù)據(jù)處理實用案例詳解(13)】——利用Elman網(wǎng)絡(luò)實現(xiàn)上證股市開盤價預(yù)測的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包