LSTM时间序列预测MATLAB代码模板(无需调试)

这篇具有很好参考价值的文章主要介绍了LSTM时间序列预测MATLAB代码模板(无需调试)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

多序列:http://t.csdn.cn/yfjoh

数据在评论区,导入自己的数据即可预测并画图

%% 1.环境清理
clear, clc, close all;
%% 2.导入数据,单序列
D=readmatrix('B.xlsx');
data=D(:,2);%要求行向量
data1=data;
% 原始数据绘图
figure
plot(data,'-s','Color',[0 0 255]./255,'linewidth',1,'Markersize',5,'MarkerFaceColor',[0 0 255]./255)
legend('原始数据','Location','NorthWest','FontName','华文宋体');
xlabel('样本','fontsize',12,'FontName','华文宋体');
ylabel('数值','fontsize',12,'FontName','华文宋体');
%% 3.数据处理
nn=1500;%训练数据集大小
numTimeStepsTrain = floor(nn);%nn数据训练 ,N-nn个用来验证
[XTrain,YTrain,XTest,YTest,mu,sig] = shujuchuli(data,numTimeStepsTrain);
%% 4.定义LSTM结构参数
numFeatures= 1;%输入节点
numResponses = 1;%输出节点
numHiddenUnits = 500;%隐含层神经元节点数 

%构建 LSTM网络 
layers = [sequenceInputLayer(numFeatures) 
 lstmLayer(numHiddenUnits) %lstm函数 
dropoutLayer(0.2)%丢弃层概率 
 reluLayer('name','relu')% 激励函数 RELU 
fullyConnectedLayer(numResponses)
regressionLayer];

XTrain=XTrain';
YTrain=YTrain';

%% 5.定义LSTM函数参数 
def_options();
%% 6.训练LSTM网络 
net = trainNetwork(XTrain,YTrain,layers,options);

%% 7.建立训练模型 
net = predictAndUpdateState(net,XTrain);

%% 8.仿真预测(训练集) 
M = numel(XTrain);
for i = 1:M
    [net,YPred_1(:,i)] = predictAndUpdateState(net,XTrain(:,i),'ExecutionEnvironment','cpu');%
end
T_sim1 = sig*YPred_1 + mu;%预测结果去标准化 ,恢复原来的数量级 
%% 9.仿真预测(验证集) 
N = numel(XTest);
for i = 1:N
    [net,YPred_2(:,i)] = predictAndUpdateState(net,XTest(:,i),'ExecutionEnvironment','cpu');%
end
T_sim2 = sig*YPred_2 + mu;%预测结果去标准化 ,恢复原来的数量级 
%% 10.评价指标
%  均方根误差
T_train=data1(1:M)';
T_test=data1(M+1:end)';
error1 = sqrt(sum((T_sim1 - T_train).^2) ./ M);
error2 = sqrt(sum((T_sim2 - T_test ).^2) ./ N);
%  MAE
mae1 = sum(abs(T_sim1 - T_train)) ./ M ;
mae2 = sum(abs(T_sim2 - T_test )) ./ N ;
disp(['训练集数据的MAE为:', num2str(mae1)])
disp(['验证集数据的MAE为:', num2str(mae2)])
%  MAPE
maep1 = sum(abs(T_sim1 - T_train)./T_train) ./ M ;
maep2 = sum(abs(T_sim2 - T_test )./T_test) ./ N ;
disp(['训练集数据的MAPE为:', num2str(maep1)])
disp(['验证集数据的MAPE为:', num2str(maep2)])
%  RMSE
RMSE1 = sqrt(sumsqr(T_sim1 - T_train)/M);
RMSE2 = sqrt(sumsqr(T_sim2 - T_test)/N);
disp(['训练集数据的RMSE为:', num2str(RMSE1)])
disp(['验证集数据的RMSE为:', num2str(RMSE2)])
%% 11. 绘图
figure
subplot(2,1,1)
plot(T_sim1,'-s','Color',[255 0 0]./255,'linewidth',1,'Markersize',5,'MarkerFaceColor',[250 0 0]./255)
hold on 
plot(T_train,'-o','Color',[150 150 150]./255,'linewidth',0.8,'Markersize',4,'MarkerFaceColor',[150 150 150]./255)
legend( 'LSTM拟合训练数据','实际分析数据','Location','best');
title('LSTM模型预测结果及真实值','fontsize',12)
xlabel('样本','fontsize',12);
ylabel('数值','fontsize',12);
xlim([1 M])
%-------------------------------------------------------------------------------------
subplot(2,1,2)
bar((T_sim1 - T_train)./T_train)   
legend('LSTM模型训练集相对误差','Location','best')
title('LSTM模型训练集相对误差','fontsize',12)
ylabel('误差','fontsize',12)
xlabel('样本','fontsize',12)
xlim([1 M]);
%-------------------------------------------------------------------------------------
figure
subplot(2,1,1)
plot(T_sim2,'-s','Color',[0 0 255]./255,'linewidth',1,'Markersize',5,'MarkerFaceColor',[0 0 255]./255)
hold on 
plot(T_test,'-o','Color',[0 0 0]./255,'linewidth',0.8,'Markersize',4,'MarkerFaceColor',[0 0 0]./255)
legend('LSTM预测测试数据','实际分析数据','Location','best');
title('LSTM模型预测结果及真实值','fontsize',12)
xlabel('样本','fontsize',12);
ylabel('数值','fontsize',12);
xlim([1 N])
%-------------------------------------------------------------------------------------
subplot(2,1,2)
bar((T_sim2 - T_test )./T_test)   
legend('LSTM模型测试集相对误差','Location','NorthEast')
title('LSTM模型测试集相对误差','fontsize',12)
ylabel('误差','fontsize',12)
xlabel('样本','fontsize',12)
xlim([1 N]);

%% 12.预测未来
P = N-nn;% 预测未来数量
YPred_3 = [];%预测结果清零 
[T_sim3] = yuceweilai(net,XTrain,data,P,YPred_3,sig,mu)

%%  13.绘图
figure
plot(1:size(data,1),data,'-s','Color',[255 0 0]./255,'linewidth',1,'Markersize',5,'MarkerFaceColor',[250 0 0]./255)
hold on 
%plot(size(data,1)+1:size(data,1)+P,T_sim3,'-o','Color',[150 150 150]./255,'linewidth',0.8,'Markersize',4,'MarkerFaceColor',[150 150 150]./255)
legend( 'LSTM预测结果','Location','NorthWest');
title('LSTM模型预测结果','fontsize',12)
xlabel('样本','fontsize',12);
ylabel('数值','fontsize',12);

上面代码中对应的function函数:

shujuchuli.m

function [XTrain,YTrain,XTest,YTest,mu,sig] = shujuchuli(data,numTimeStepsTrain)
dataTrain = data(1:numTimeStepsTrain+1,:);% 训练样本
dataTest = data(numTimeStepsTrain:end,:); %验证样本 
%训练数据标准化处理 
mu = mean(dataTrain,'ALL');
sig = std(dataTrain,0,'ALL');
dataTrainStandardized = (dataTrain - mu) / sig;
XTrain = dataTrainStandardized(1:end-1,:);% 训练输入 
YTrain = dataTrainStandardized(2:end,:);% 训练输出
%测试样本标准化处理 
dataTestStandardized = (dataTest - mu) / sig;
XTest = dataTestStandardized(1:end-1,:)%测试输入 
YTest = dataTest(2:end,:);%测试输出 

XTest=XTest';
YTest=YTest';
end

yuceweilai.m

function [T_sim3] = yuceweilai(net,XTrain,data,P,YPred_3,sig,mu)
net1 = resetState(net);
net1 = predictAndUpdateState(net1,XTrain);
[net1,YPred_3] = predictAndUpdateState(net1,data(end));
for i = 2:P
    [net1,YPred_3(:,i)] = predictAndUpdateState(net1,YPred_3(:,i-1),'ExecutionEnvironment','cpu');
end
T_sim3 = sig*YPred_3 + mu;
end

def_options.m

options = trainingOptions('adam', ... % adam优化算法 自适应学习率 
'MaxEpochs',500,...% 最大迭代次数 
 'MiniBatchSize',10, ...%最小批处理数量 
'GradientThreshold',1, ...%防止梯度爆炸 
'InitialLearnRate',0.005, ...% 初始学习率 
'LearnRateSchedule','piecewise', ...
 'LearnRateDropPeriod',125, ...%125次后 ,学习率下降 
'LearnRateDropFactor',0.2, ...%下降因子 0.2
'ValidationData',{XTrain,YTrain}, ...
 'ValidationFrequency',5, ...%每五步验证一次 
'Verbose',1, ...
 'Plots','training-progress');

 文章来源地址https://www.toymoban.com/news/detail-538812.html

运行结果:lstmmatlab代码,lstm,matlab,神经网络,算法

lstmmatlab代码,lstm,matlab,神经网络,算法

 

 

到了这里,关于LSTM时间序列预测MATLAB代码模板(无需调试)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 时序预测 | MATLAB实现TCN-LSTM时间卷积长短期记忆神经网络时间序列预测

    时序预测 | MATLAB实现TCN-LSTM时间卷积长短期记忆神经网络时间序列预测

    预测效果 基本介绍 1.MATLAB实现TCN-LSTM时间卷积长短期记忆神经网络时间序列预测; 2.运行环境为Matlab2021b; 3.单变量时间序列预测; 4.data为数据集,excel数据,MainTCN_LSTMTS.m为主程序,运行即可,所有文件放在一个文件夹; 5.命令窗口输出RMSE、MAE、MAPE多指标评价。 模型描述 由

    2024年02月09日
    浏览(9)
  • 多维时序 | Matlab实现LSTM-Adaboost和LSTM多变量时间序列预测对比

    多维时序 | Matlab实现LSTM-Adaboost和LSTM多变量时间序列预测对比

    预测效果 基本介绍 多维时序 | Matlab实现LSTM-Adaboost和LSTM多变量时间序列预测对比 模型描述 Matlab实现LSTM-Adaboost和LSTM多变量时间序列预测对比(完整程序和数据) 1.输入多个特征,输出单个变量; 2.考虑历史特征的影响,多变量时间序列预测; 4.csv数据,方便替换; 5.运行环

    2024年02月10日
    浏览(10)
  • 时序预测 | Matlab基于BiTCN-LSTM双向时间卷积长短期记忆神经网络时间序列预测

    时序预测 | Matlab基于BiTCN-LSTM双向时间卷积长短期记忆神经网络时间序列预测

    预测效果 基本介绍 1.Matlab基于BiTCN-LSTM双向时间卷积长短期记忆神经网络时间序列预测(完整源码和数据),单变量时间序列预测,运行环境matlab2023及以上,excel数据,方便替换; 2.评价指标RMSE、MAPE、MAE、MSE、R2等; 3.程序语言为matlab,程序可出预测效果图,误差分析图。

    2024年03月20日
    浏览(9)
  • 基于GRU门控循环网络的时间序列预测matlab仿真,对比LSTM网络

    基于GRU门控循环网络的时间序列预测matlab仿真,对比LSTM网络

    目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 LSTM:     GRU     matlab2022a         门控循环单元(Gated Recurrent Unit,简称GRU)是一种用于序列建模和预测的递归神经网络(RNN)变体。GRU通过引入门控机制,克服了传统RNN在处

    2024年02月11日
    浏览(13)
  • 【MATLAB第2期】源码分享#基于LSTM时间序列单步预测,含验证和预测未来

    【MATLAB第2期】源码分享#基于LSTM时间序列单步预测,含验证和预测未来

    matlab2020a + cpu 单列数据,2018/10~2018/12 共三个月,92个数据。 ​ 样本标准化处理,其中,前85个数据作为训练样本,来验证后7个数据效果。最后预测未来7个数据。 numTimeStepsTrain = floor(85);%85数据训练 ,7个用来验证 dataTrain = data(1:numTimeStepsTrain+1,:);% 训练样本 dataTest = data(numTime

    2024年02月05日
    浏览(12)
  • 时序预测 | MATLAB实现EEMD-SSA-LSTM、EEMD-LSTM、SSA-LSTM、LSTM时间序列预测对比

    时序预测 | MATLAB实现EEMD-SSA-LSTM、EEMD-LSTM、SSA-LSTM、LSTM时间序列预测对比

    预测效果 基本介绍 时序预测 | MATLAB实现EEMD-SSA-LSTM、EEMD-LSTM、SSA-LSTM、LSTM时间序列预测对比 模型描述 麻雀搜索算法(Sparrow Search Algorithm, SSA)是于2020年提出的。SSA 主要是受麻雀的觅食行为和反捕食行为的启发而提出的。该算法比较新颖,具有寻优能力强,收敛速度快的优点。

    2024年02月09日
    浏览(8)
  • 【数值预测案例】(5) LSTM 时间序列气温数据预测,附TensorFlow完整代码

    【数值预测案例】(5) LSTM 时间序列气温数据预测,附TensorFlow完整代码

    大家好,今天和各位分享一下如何使用循环神经网络 LSTM 完成有多个特征的气温预测。上一节中我介绍了 LSTM 的单个特征的预测,感兴趣的可以看一下:https://blog.csdn.net/dgvv4/article/details/124349963 我使用GPU加速计算,没有GPU的朋友可以把调用GPU的代码段去掉。 数据集地址:h

    2024年01月18日
    浏览(10)
  • 时序预测 | MATLAB实现WOA-LSTM鲸鱼算法优化长短期记忆网络时间序列预测

    时序预测 | MATLAB实现WOA-LSTM鲸鱼算法优化长短期记忆网络时间序列预测

    预测效果 基本介绍 MATLAB实现WOA-LSTM鲸鱼算法优化长短期记忆网络时间序列预测 基于鲸鱼算法优化长短期记忆网络(WOA-LSTM)的时间序列预测。 优化参数为学习率,隐藏层节点个数,正则化参数,要求2018b及以上版本,matlab代码。 评价指标包括:MAE、MSE、RMSE等,代码质量极高,方

    2024年02月01日
    浏览(14)
  • 时序预测 | MATLAB实现EEMD-LSTM、LSTM集合经验模态分解结合长短期记忆神经网络时间序列预测对比

    时序预测 | MATLAB实现EEMD-LSTM、LSTM集合经验模态分解结合长短期记忆神经网络时间序列预测对比

    效果一览 基本介绍 时序预测 | MATLAB实现EEMD-LSTM、LSTM集合经验模态分解结合长短期记忆神经网络时间序列预测对比。 1.MATLAB实现EEMD-LSTM、LSTM时间序列预测对比; 2.时间序列预测 就是先eemd把原输入全分解变成很多维作为输入 再输入LSTM预测 ; 3.运行环境Matlab2018b及以上,输出RM

    2024年02月13日
    浏览(10)
  • 时序预测 | MATLAB实现CNN-LSTM卷积长短期记忆神经网络时间序列预测(风电功率预测)

    时序预测 | MATLAB实现CNN-LSTM卷积长短期记忆神经网络时间序列预测(风电功率预测)

    预测效果 基本介绍 1.MATLAB实现CNN-LSTM卷积长短期记忆神经网络时间序列预测(风电功率预测); 2.运行环境为Matlab2021b; 3.单个变量时间序列预测; 4.data为数据集,单个变量excel数据,MainCNN_LSTMTS.m为主程序,运行即可,所有文件放在一个文件夹; 5.命令窗口输出R2、MSE、RMSE、

    2024年02月10日
    浏览(14)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包