一、简介

      介绍了极限学习机ELM的网络结构以及学习训练算法。

【预测模型】基于Elman神经网络房价预测matlab源码_RBF神经网络

【预测模型】基于Elman神经网络房价预测matlab源码_RBF神经网络_02

二、源代码

% elm_stockpredict.m

%% 清除工作空间中的变量和图形
clear,clc
close all

%% 1.加载337期上证指数开盘价格
load matlab.mat

whos
rng(1)
%% ARMA模型
z=iddata(y1);
m=armax(z(1:19),'na',2,'nc',1);
yp = predict(m,y1,1);
yp=yp';

yp=yp(:,157:end);
%% 2.构造样本集
% 数据个数
price=y1;
n=length(price);

% 确保price为列向量
price=price(:);

% x(n) 由x(n-1),x(n-2),...,x(n-L)共L个数预测得到.
L = 6;

% price_n:每列为一个构造完毕的样本,共n-L个样本
price_n = zeros(L+1, n-L);
for i=1:n-L
price_n(:,i) = price(i:i+L);
end

%% 划分训练、测试样本
% 将前280份数据划分为训练样本
% 后51份数据划分为测试样本

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);

%% 创建Elman神经网络

% 包含15个神经元,训练函数为traingdx
net=elmannet(1:2,15,'traingdx');

% 设置显示级别
net.trainParam.show=1;

% 最大迭代次数为2000次
net.trainParam.epochs=2000;

% 误差容限,达到此误差就可以停止训练
net.trainParam.goal=0.00001;

% 最多验证失败次数
net.trainParam.max_fail=5;

% 对网络进行初始化
net=init(net);

%% 网络训练

%训练数据归一化
[trainx1, st1] = mapminmax(trainx);
[trainy1, st2] = mapminmax(trainy);

% 测试数据做与训练数据相同的归一化操作
testx1 = mapminmax('apply',testx,st1);
testy1 = mapminmax('apply',testy,st2);

% 输入训练样本进行训练
[net,per] = train(net,trainx1,trainy1);

%% 测试。输入归一化后的数据,再对实际输出进行反归一化

% 将训练数据输入网络进行测试
train_ty1 = sim(net, trainx1);
train_ty = mapminmax('reverse', train_ty1, st2);

% 将测试数据输入网络进行测试
test_ty1 = sim(net, testx1);
test_ty = mapminmax('reverse', test_ty1, st2);



% 显示真实值
plot(x,testy,'b-');
hold on
% 显示神经网络的输出值
plot(x,test_ty,'r--')

% 显示ARMA的输出值
plot(x,yp,'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)

三、运行结果

【预测模型】基于Elman神经网络房价预测matlab源码_RBF神经网络_03