1 简介
为了更好地把握股票价格的波动,应用了在处理序列数据输入输出具有优越性的E lman递归神经网络建立股市预测模型,并用两支股票进行了检测,检测结果说明人工神经网络应用于中国股票市场的预测是可行和有效的,有着良好的前景。?
Elman 型回归神经元网络一般分为四层 :输入 层、 中间层(隐含层)、 承接层和输出层, 如图 3 所 示。其输入层、 隐含层和输出层的连接类似于前馈 网络 , 输入层的单元仅起信号传输作用, 输出层单 元起线性加权作用。隐含层单元的传递函数可采用 线性或非线性函数, 承接层又称为上下文层或状态 层, 它用来记忆隐含层单元前一时刻的输出值, 可 以认为是一个一步延时算子。 Elman 回归神经元网络的特点是隐含层的输出 通过承接层的延迟与存储, 自联到隐含层的输入, 这种自联方式使其对历史状态的数据具有敏感性, 内部反馈网络的加入增加了网络本身处理动态信息 的能力 , 从而达 到了 动态建 模的 目的 。此 外, Elman回归神经网络能够以任意精度逼近任意非线 性映射, 可以不考虑外部噪声对系统影响的具体形 式, 如果给出系统的输入输出数据对 , 就可以对系统进行建模 。
2 部分代码
%% 清空环境变量
clc;
clear all
close all
nntwarn off;
%% 数据载入
load data;
a=data;
%% 选取训练数据和测试数据
for i=1:6
? p(i,:)=[a(i,:),a(i+1,:),a(i+2,:)];
end
% 训练数据输入
p_train=p(1:5,:);
% 训练数据输出
t_train=a(4:8,:);
% 测试数据输入
p_test=p(6,:);
% 测试数据输出
t_test=a(9,:);
% 为适应网络结构 做转置
p_train=p_train';
t_train=t_train';
p_test=p_test';
%% 网络的建立和训练
% 利用循环,设置不同的隐藏层神经元个数
nn=[7 11 14 18];
for i=1:4
? threshold=[0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1];
? % 建立Elman神经网络 隐藏层为nn(i)个神经元
? net=newelm(threshold,[nn(i),3],{'tansig','purelin'});
? % 设置网络训练参数
? net.trainparam.epochs=1000;
? net.trainparam.show=20;
? % 初始化网络
? net=init(net);
? % Elman网络训练
? net=train(net,p_train,t_train);
? % 预测数据
? y=sim(net,p_test);
? % 计算误差
? error(i,:)=y'-t_test;
end
%% 通过作图 观察不同隐藏层神经元个数时,网络的预测效果
plot(1:1:3,error(1,:),'-ro','linewidth',2);
hold on;
plot(1:1:3,error(2,:),'b:x','linewidth',2);
hold on;
plot(1:1:3,error(3,:),'k-.s','linewidth',2);
hold on;
plot(1:1:3,error(4,:),'c--d','linewidth',2);
title('Elman预测误差图')
set(gca,'Xtick',[1:3])
legend('7','11','14','18','location','best')
xlabel('时间点')
ylabel('误差')
hold off;
3 仿真结果
4 参考文献
[1]吴丁杰, 温立书. 基于鲸鱼算法优化Elman神经网络的房价预测[J]. 长江信息通信, 2021, 34(10):3.
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。
|