【时序模型】讲解全连接神经网络时间序列未来多步预测模型
以下是使用MATLAB实现DNN全连接神经网络时间序列未来多步预测的示例代码,仅供参考。
·
目录
MATLAB实现DNN全连接神经网络时间序列未来多步预测代码
MATLAB实现DNN全连接神经网络时间序列未来多步预测代码
以下是使用MATLAB实现DNN全连接神经网络时间序列未来多步预测的示例代码,仅供参考。
% 加载数据
load sunspot.dat
% 归一化处理数据
data = normalize(sunspot);
% 划分训练集和测试集
train_data = data(1:200,:);
test_data = data(201:end,:);
% 定义模型参数
num_features = size(train_data,2);
num_hidden_nodes = 32;
num_output_nodes = 1;
% 创建神经网络模型
net = feedforwardnet(num_hidden_nodes);
net.layers{1}.transferFcn = 'tansig';
net.layers{2}.transferFcn = 'purelin';
% 设置模型训练参数
net.trainFcn = 'trainlm';
net.trainParam.epochs = 100;
net.trainParam.max_fail = 5;
net.trainParam.min_grad = 1e-10;
net.trainParam.goal = 0.001;
% 训练模型
[net,tr] = train(net,train_data(:,1:end-1)',train_data(:,end)');
% 测试模型
y_pred = net(test_data(:,1:end-1)')';
rmse = sqrt(mean((test_data(:,end)-y_pred).^2));
mae = mean(abs(test_data(:,end)-y_pred));
% 多步预测
future_steps = 12; % 预测未来12个时间步
input_data = test_data(end-num_features+1:end,1:end-1);
y_future = zeros(future_steps,1);
for i = 1:future_steps
y_pred = net(input_data')';
y_future(i) = y_pred;
input_data = [input_data(2:end,:) y_pred];
end
% 绘制图像
figure;
t = (1:size(sunspot,1))';
plot(t,sunspot,'b',t,[NaN(200,1);y_pred],'r',t,[NaN(200,1);test_data(:,end)],'g',t,[NaN(200+size(test_data,1),1);y_future],'m');
legend('原始数据','测试集预测值','测试集真实值','未来多步预测值');
xlabel('时间');
ylabel('sunspot数量');
更多推荐
所有评论(0)