-
大小: 85KB文件類(lèi)型: .rar金幣: 2下載: 0 次發(fā)布日期: 2021-05-11
- 語(yǔ)言: Matlab
- 標(biāo)簽: 時(shí)間序列??房?jī)r(jià)預(yù)測(cè)??elman??神經(jīng)網(wǎng)絡(luò)??
資源簡(jiǎn)介
基于Elman神經(jīng)網(wǎng)絡(luò)的房?jī)r(jià)預(yù)測(cè)。

代碼片段和文件信息
%?elm_stockpredict.m
%%?清除工作空間中的變量和圖形
clearclc
close?all
%%?1.加載337期上證指數(shù)開(kāi)盤(pán)價(jià)格
load?matlab.mat
whos
rng(1)
%%?ARMA模型
z=iddata(y1);
m=armax(z(1:19)‘na‘2‘nc‘1);
yp?=?predict(my11);
yp=yp‘;
yp=yp(:157:end);
%%?2.構(gòu)造樣本集
%?數(shù)據(jù)個(gè)數(shù)
price=y1;
n=length(price);
%?確保price為列向量
price=price(:);
%?x(n)?由x(n-1)x(n-2)...x(n-L)共L個(gè)數(shù)預(yù)測(cè)得到.
L?=?6;
%?price_n:每列為一個(gè)構(gòu)造完畢的樣本,共n-L個(gè)樣本
price_n?=?zeros(L+1?n-L);
for?i=1:n-L
????price_n(:i)?=?price(i:i+L);
end
%%?劃分訓(xùn)練、測(cè)試樣本
%?將前280份數(shù)據(jù)劃分為訓(xùn)練樣本
%?后51份數(shù)據(jù)劃分為測(cè)試樣本
trainx?=?price_n(1:6?1:150);
trainy?=?price_n(7?1:150);
testx?=?price_n(1:6?151:end);
testy?=?price_n(7?151:end);
%%?創(chuàng)建Elman神經(jīng)網(wǎng)絡(luò)
%?包含15個(gè)神經(jīng)元,訓(xùn)練函數(shù)為traingdx
net=elmannet(1:215‘traingdx‘);
%?設(shè)置顯示級(jí)別
net.trainParam.show=1;
%?最大迭代次數(shù)為2000次
net.trainParam.epochs=2000;
%?誤差容限,達(dá)到此誤差就可以停止訓(xùn)練
net.trainParam.goal=0.00001;
%?最多驗(yàn)證失敗次數(shù)
net.trainParam.max_fail=5;
%?對(duì)網(wǎng)絡(luò)進(jìn)行初始化
net=init(net);
%%?網(wǎng)絡(luò)訓(xùn)練
%訓(xùn)練數(shù)據(jù)歸一化
[trainx1?st1]?=?mapminmax(trainx);
[trainy1?st2]?=?mapminmax(trainy);
%?測(cè)試數(shù)據(jù)做與訓(xùn)練數(shù)據(jù)相同的歸一化操作
testx1?=?mapminmax(‘a(chǎn)pply‘testxst1);
testy1?=?mapminmax(‘a(chǎn)pply‘testyst2);
%?輸入訓(xùn)練樣本進(jìn)行訓(xùn)練
[netper]?=?train(nettrainx1trainy1);
%%?測(cè)試。輸入歸一化后的數(shù)據(jù),再對(duì)實(shí)際輸出進(jìn)行反歸一化
%?將訓(xùn)練數(shù)據(jù)輸入網(wǎng)絡(luò)進(jìn)行測(cè)試
train_ty1?=?sim(net?trainx1);
train_ty?=?mapminmax(‘reverse‘?train_ty1?st2);
%?將測(cè)試數(shù)據(jù)輸入網(wǎng)絡(luò)進(jìn)行測(cè)試
test_ty1?=?sim(net?testx1);
test_ty?=?mapminmax(‘reverse‘?test_ty1?st2);
%%?顯示結(jié)果
%?2.顯示測(cè)試數(shù)據(jù)的測(cè)試結(jié)果
figure(1)
x=1:length(test_ty);
%?顯示真實(shí)值
plot(xtesty‘b-‘);
hold?on
%?顯示神經(jīng)網(wǎng)絡(luò)的輸出值
plot(xtest_ty‘r--‘)
%?顯示ARMA的輸出值
plot(xyp‘k--‘)
legend(‘real?price‘‘prediction?price?of?Elman‘‘prediction?price?of?ARMA‘)
title(‘Test?Results‘);
%?顯示均方誤差
mse2?=?mse(test_ty?-?testy);
fprintf(‘????Elman_mse?=?\n?????%f\n‘?mse2)
mse3?=?mse(yp?-?testy);
fprintf(‘????ARMA_mse?=?\n?????%f\n‘?mse3)
%?顯示相對(duì)誤差
disp(‘????相對(duì)誤差1:‘)
fprintf(‘%f??‘?(test_ty?-?testy)./testy?);
fprintf(‘\n‘)
disp(‘????相對(duì)誤差2:‘)
fprintf(‘%f??‘?(yp?-?testy)./testy?);
fprintf(‘\n‘)
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件??????86239??2018-03-27?18:15??matlab.mat
?????文件???????2349??2018-04-16?20:44??elm_stockpredict.m
-----------?---------??----------?-----??----
????????????????88588????????????????????2
- 上一篇:矩陣歐式距離矩陣
- 下一篇:Matlab坐標(biāo)提取
評(píng)論
共有 條評(píng)論