资源简介
Elman神经网络预测,可以直接改数据进行预测,方便实用,自己可以调细节增大预测精度
代码片段和文件信息
clearclc
close all
price =[
66.8000
68.1000
66.9000
67.3000
70.7000
72.7000
72.7000
74.9000
73.8000
75.6000
78.1000
78.6000
79.0000
79.4000
80.2000
81.2000
81.9000
82.5000
83.0000
83.2000
85.6000
86.6000
88.8000
91.0000
93.3000
93.5000
94.9000
97.4000
96.3000
96.5000
96.4000
97.5000
98.0000
99.4000
100.1000];
whos
rng(now)
%% 2.构造样本集
% 数据个数
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
%% 划分训练、测试样本
% 将前17份数据划分为训练样本
% 后24份数据划分为测试样本,输入层
trainx = price_n(1:6 1:17);
trainy = price_n(7 1:17);
testx = price_n(1:6 18:end);
testy = price_n(7 18:end);
%% 创建Elman神经网络
% 包含12个神经元,训练函数为traingdx,隐含层
net=elmannet(1:212‘traingdx‘);
% 设置显示级别
net.trainParam.show=1;
% 最大迭代次数为1000次
net.trainParam.epochs=1000;
% 误差容限,达到此误差就可以停止训练
net.trainParam.goal=0.00001;
% 最多验证失败次数
net.trainParam.max_fail=5;
% 对网络进行初始化
net=init(net);
%% 网络训练
%训练数据归一化
[trainx1 st1] = mapminmax(trainx);
[trainy1 st2] = mapminmax(trainy);
% 测试数据做与训练数据相同的
- 上一篇:MATLAB 模糊PID
- 下一篇:matlab幅频图
评论
共有 条评论