多序列: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');

运行结果:

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

  1. LSTM时间序列预测代码超通俗解释(MATLAB)

    数据在评论区 可以查看这一篇博客有更好的代码和可视化: 多序列:http://t.csdn.cn/a4pM0 单序列:https://blog.csdn.net/m0_62526778/article ...

  2. Tensorflow LSTM时间序列预测的尝试

    一.网上的资源 网上有不少用LSTM来预测时间序列的资源,如下面: 深度学习(08)_RNN-LSTM循环神经网络-03-Tensorflow进阶实现 http://blog.csdn.net/u01 ...

  3. 时序预测 | python实现仿生算法优化LSTM时间序列预测(全网最全仿生算法)

    ** 时序预测 | python实现仿生算法优化LSTM时间序列预测(全网最全仿生算法) ** 多变量/单变量预测程序 多变量/单变量预测程序 多变量/单变量预测程序 A ABC-LSTM--人工蜂群 ...

  4. LSTM 时间序列预测+股票预测案例(Pytorch版)

    文章目录 LSTM 时间序列预测 股票预测案例 数据特征 对收盘价(Close)单特征进行预测 1. 导入数据 2. 将股票数据收盘价(Close)进行可视化展示 3. 特征工程 4. 数据集制作 5 ...

  5. python时间序列分析航空旅人_Python深度学习教程:LSTM时间序列预测小练习—国航乘客数量预测...

    Python深度学习教程:LSTM时间序列预测小练习-国航乘客数量预测 参考数据: 数据一共两列,左边是日期,右边是乘客数量 对数据做可视化:import math import numpy as n ...

  6. [转载] lstm时间序列预测_pytorch入门使用PyTorch进行LSTM时间序列预测

    参考链接: 在Python中使用LSTM和PyTorch进行时间序列预测 想了解更多好玩的人工智能应用,请关注公众号"机器AI学习 数据AI挖掘","智能应用" ...

  7. Kesci:Tensorflow 实现 LSTM——时间序列预测(超详细)

    云脑项目3 -真实业界数据的时间序列预测挑战 https://www.kesci.com/home/project/5a391c670e1fc52691fde623 这篇文章将讲解如何使用lstm进行 ...

  8. 大数据毕业设计 LSTM时间序列预测算法 - 股票预测 天气预测 房价预测

    文章目录 0 简介 1 基于 Keras 用 LSTM 网络做时间序列预测 2 长短记忆网络 3 LSTM 网络结构和原理 3.1 LSTM核心思想 3.2 遗忘门 3.3 输入门 3.4 输出门 4 ...

  9. Kesci:Tensorflow 实现 LSTM——时间序列预测

    LSTM https://www.kesci.com/home/project/5a38a9c00e1fc52691fd9c72 这篇文章将讲解如何使用lstm进行时间序列方面的预测,重点讲lstm的 ...

最新文章

  1. 如何制作自己的CocoaPod库
  2. TIOBE 9 月编程语言排行榜发布,C++ 增速最快,C++20 的功劳?
  3. C#中委托的发展与匿名函数
  4. 软件工程课堂作业——寻找“水王”
  5. DM365视频处理流程/DM368 NAND Flash启动揭秘
  6. dp笔记:关于DP算法和滚动数组优化的思考
  7. PSPad 免费文本编辑器推荐
  8. Swift实现OC中的单例模式
  9. VMware Centos 网络配置
  10. epoll哪些触发模式_epoll的内部实现 百万级别句柄监听 lt和et模式非常好的解释...
  11. 禁止微信调整页面字体大小
  12. careercup-位操作5.1
  13. 大公司笔试面试有哪些经典算法题目?
  14. 第1章 区块链是什么
  15. 应用程序白名单实现_如何在Windows 10上仅允许商店中的应用程序(和白名单桌面应用程序)...
  16. Start Developing iOS Apps (Swift) 中文翻译版
  17. 分享一批学习资料教程视频书籍
  18. ROC曲线和PR曲线,AP,mAP
  19. 改了计算机名oracle,修改计算机名称导致Oracle的em不能用
  20. 万万没想到!我拒绝了一位知名VC大佬的创业合伙人邀请

热门文章

  1. 华擎主板安装linux系统,J3455 篇一:华擎J3455主板安装Ubuntu server
  2. GeneMark-ES:真核生物编码基因预测软件
  3. 物理信息神经网络PINNs : Physics Informed Neural Networks 详解
  4. [实验]无失真信源压缩编码
  5. 星巴克REST案例分析(转载自InfoQ)
  6. 计算机考试照片识别,PS照片JPEGsnoop帮你鉴别
  7. 机器学习算法(决策树)-Lect03
  8. Microsoft Office Word 2010-2016中公式不能自动斜体的解决方法
  9. request.getContextPath详解
  10. 顺序表的定义及基本操作