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

2023-11-19

 数据在评论区

可以查看这一篇博客有更好的代码和可视化:

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

单序列:https://blog.csdn.net/m0_62526778/article/details/128996795

clc;clear
%LSTM时间序列预测
D=readmatrix("1维数据预测.xlsx");
data=D(:,2)';%训练LSTM网络必须是行向量,所以转置
%序列前2000个用于训练,后191个用于验证神经网络。然后往后预测200个数据
data_train=data(1:2000);%定义训练数据集,训练前2000个数据
data_test=data(2001:2191);%该数据用来最后与预测值对比

%数据预处理
[data_train_n,PS]=mapstd(data_train);
%训练集数据标准化,可doc mapstd查看函数细则
%因为经过神经网络的只有训练集,因此无需对测试集标准化

%LSTM神经网络的输入层与输出层
input_train=data_train_n(1:end-1);%神经网络输入层
%这里减1意思是根据已知数据预测后1天,
%如input[1,2,3,4],根据[1,2]来预测[3],再根据[1,2,3]来预测[4],以此类推,反正仅预测后1天;
output_train=data_train_n(2:end);%神经网络输出层真实值
%如输入的是[1,2,3],那输出对应着[4],所以是(2:end)
num_input=1;%输入层是1维向量即一个输入层
num_output=1;%输出层也是1维向量即一个输入层
num_hidden=200;%一个隐藏层的神经元个数

%创建LSTM回归神经网络,定义LSTM网络架构
layers=[sequenceInputLayer(num_input);lstmLayer(num_hidden)
    fullyConnectedLayer(num_output);regressionLayer];
%sequenceInputLayer为序列输入层,lstmLayer长短期记忆 (LSTM) 层
%fullyConnectedLayer全连接层,regressionLayer回归输出层(是回归问题而不是分类问题)

%指定初始学习率为0.01,在400轮训练后通过乘以因子0.15来降低学习率
options=trainingOptions("adam",MaxEpochs=1000,GradientThreshold=1,InitialLearnRate=0.01, ...
    LearnRateSchedule="piecewise",LearnRateDropPeriod=400,LearnRateDropFactor=0.15,Verbose=0,Plots="training-progress");
%trainingOptions训练深度学习神经网络的选项;adam自适应矩估计求解器;MaxEpochs最大训练次数;GradientThreshold梯度阈值
% InitialLearnRate— 初始学习率;LearnRateScheduleSettings— 学习率计划;Verbose— 显示训练进度信息的
% 'training-progress'— 绘制训练进度;这些根据自己数据集的特征去调
net=trainNetwork(input_train,output_train,layers,options);
%若RMSE曲线下降太慢,本代码中,需要LearnRateDropPeriod改大

%初始化网络状态
net=predictAndUpdateState(net ,input_train);
%predictAndUpdateState使用经过训练的递归神经网络预测响应并更新网络状态
[net,output_pred]=predictAndUpdateState(net,output_train(end));
%output的最后一个即预测的第一个,用递归的方法来训练

%进行用于验证神经网络的数据预测,用预测值更新网络状况
for i=2:291 %从第二步开始,191用于验证的预测值,100为往后预测的值,共291个
    [net,output_pred(:,i)]=predictAndUpdateState(net,output_pred(:,i-1),"ExecutionEnvironment","cpu");
    %一次预测一个值并更新神经网络,递归预测,如第291个预测值由第290个预测值经神经网络返回
    %因为训练集后面的我们不会提供真实值了,只能用预测值来预测下一个
end

output_pred = mapstd('reverse',output_pred,PS);
%因为经神经网络输出的值是被标准化后的结果,所以要去标准化与实际数据对比
RMSE=sqrt(mean((output_pred(1:191)-data_test).^2));%计算均方根误
subplot(2,1,1);%将figure划分成2行1列,且这个图放第一行
plot(data_train(1:end));%先画出前2000个,是训练数据
hold on 
idx=2001:(2000+191);%横坐标标注
plot(idx,output_pred(1:191),"-");%画出预测值1:191
hold off %subplot这个第一行图就放这两曲线,下面的在另外一行图里

xlabel("Time")
ylabel("Case")
title("Forecast")
legend(["Observed" "Forecast"])
subplot(2,1,2)
plot(data)
xlabel("Time")
ylabel("Case")
title("Dataset")

%往后预测2023年的数据
figure(2)
idx=2001:(2000+291);
plot(idx,output_pred(1:291),"-");
hold off

net=resetState(net);

运行结果:afdd8c4c11be472fbbc156e50530fdc7.png

be5c977fcc8d4940913098a064ac640b.bmp

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LSTM时间序列预测代码超通俗解释(MATLAB) 的相关文章

  • 如何在matlab中显示图像上的点?

    我有一些像素点 比如 p1 1 1 和 p2 1 10 等等 我想以任何颜色在图像上显示这些点 这个怎么做 MATLAB plot http www mathworks com help techdoc ref plot html文档非常全
  • 在 MATLAB 中绘制圆

    我被要求找到在 MATLAB 中绘制圆的不同方法 看起来很无聊 不过我可以想出一些想法 有些可能效率低下 Method 1 ezpolar x 1 Method 2 t linspace 0 2 pi 100 plot sin t cos
  • 笛卡尔散点图上的极坐标网格线

    我有一个脚本来创建散点图 使用gscatter 基于另一个脚本生成的 x y 数据 离散数据点 不连续 由于这些数据点实际上是圆形空间中某些对象的位置 因此添加极坐标网格线将使绘图更有意义 有谁知道如何在笛卡尔散点图上显示极坐标网格线 或者
  • 我的傅立叶逆变换中的尖峰

    我正在尝试在 MATLAB 中比较两个数据集 为此 我需要通过傅里叶变换数据来过滤数据集 对其进行过滤 然后对其进行逆傅里叶变换 然而 当我对数据进行逆傅里叶变换时 我在红色数据集的两端都出现了一个尖峰 图片显示了第一个尖峰 它在开始时应该
  • 如何从 Matlab 在 vi​​rtualenv 中执行 Python 代码

    我正在创建一个用于研究的 Matlab 工具箱 我需要执行 Matlab 代码 但也需要执行 Python 代码 我想允许用户从 Matlab 执行 Python 代码 问题是 如果我立即执行此操作 我将必须在 Python 环境中安装所有
  • 如何在 R 中导入 matlab 表

    我有一个matlab mat文件与表数据类型我想将其导入 R 中 我为此使用 readMat R 正在将其作为列表读取 之后有没有办法将列表转换为 R 中的数据帧或表格格式 当我使用as dataframe我收到以下错误 Error in
  • 使用 lsqcurvefit 进行拟合

    我想将一些数据拟合到洛伦兹函数 但当我使用不同数量级的参数时 我发现拟合存在问题 这是我的洛伦兹函数 function value lorentz x x0 gamma amp value amp gamma 2 x x0 2 gamma
  • 如何在 MATLAB 中创建带有分级标记颜色的散点图?

    我想在 MATLAB 中绘制一个简单的散点图 标记颜色从光谱的一端到另一端各不相同 例如红色 橙色 黄色 蓝色 紫色 我的数据比较了一段时间内河流的水量和水质 3 个简单的列 时间 水量 质量 我想绘制数量与质量的 x y 散点图 但颜色随
  • 带 if 语句的可向量化 FIND 函数 MATLAB

    我有一个矩阵u 我想遍历所有行和所有列并执行以下操作 如果元素非零 我返回行索引的值 如果元素为零 则查找该元素之后的下一个非零元素的行索引 我可以使用两个带有 find 函数的 for 循环轻松完成此操作 但我需要多次执行此操作 不是因为
  • 将 Android 应用程序与服务器上的 Matlab 应用程序连接

    我正在 Android 上开发一个应用程序 它将获取图像输入 并将该输入传递到安装 MATLAB 应用程序的服务器 MATLAB 应用程序将计算结果并将其返回到该 Android 应用程序 我想知道我可以使用哪个服务器 如何将 MATLAB
  • 在matlab中设置图例符号的精度

    我有这个 leg2 strcat Max Degree num2str adet 1 1 ch l leg3 strcat Min Degree num2str adet 1 2 ch l leg4 strcat Max Request n
  • 增加 .fig 文件中的散点标记大小

    我有一个图形文件 scatter fig 该图有许多使用 scatter 的散点绘图仪 现在我只有这个无花果文件 我需要增加所有散点的标记大小 手动尝试过 但非常困难 有没有办法我可以做类似的事情 H 图形句柄 s 点 h 设置 s 标记大
  • MATLAB 在 MATLAB 7.10.0 学生版中似乎找不到 csaps()

    我有一些代码使用csaps Matlab的三次平滑样条拟合函数 http www mathworks com help toolbox curvefit csaps html我想将其提供给使用 MATLAB 7 10 0 R2010a 的学
  • 如何将Matlab代码库与Android集成?

    我有一个算法和 MATLAB 中的一些其他代码 我想在我的 Android 应用程序中使用它 我怎样才能做到这一点 我可以从 MATLAB 制作 jar 文件以便与 Android 一起使用吗 我必须做点别的事吗 如果您还有其他产品 适用于
  • Matlab 的快速 JSON 解析器

    您知道 Matlab 中有一个非常快速的 JSON 解析器吗 目前我正在使用JSONlab http www mathworks com matlabcentral fileexchange 33381 jsonlab a toolbox
  • 图像增强 - 从书写中清除给定图像

    我需要清理这张照片 删除 清理我 的字样并使其变亮 作为图像处理课程作业的一部分 我可能会使用 matlab 函数 ginput 来查找图像中的特定点 当然 在脚本中您应该对所需的坐标进行硬编码 您可以使用 conv2 fft2 ifft2
  • 将单元格转换为双精度

    gt gt C 1 2 CF 2 C 1 2 CF 2 gt gt whos C Name Size Bytes Class Attributes C 2x2 478 cell 我怎样才能转换C into double以便 gt gt C
  • opencv中矩阵的超快中值(与matlab一样快)

    我正在 openCV 中编写一些代码 想要找到一个非常大的矩阵数组 单通道灰度 浮点数 的中值 我尝试了几种方法 例如对数组进行排序 使用 std sort 和选择中间条目 但与 matlab 中的中值函数相比 它非常慢 准确地说 在 ma
  • 白色像素簇提取

    我正在研究指纹毛孔提取项目 并陷入毛孔 白色像素簇 提取的最后阶段 我有两个输出图像 我们可以从中获取毛孔 但不知道该怎么做 这两个图像的尺寸不同 image1 的尺寸为 240 320 image2 的尺寸为 230 310 这是我的图像
  • 整数的十进制表示形式中的分隔数字

    例如 我想将用户输入作为整数输入 45697 并将前两位数字存储在数组 向量或其他内容中 例如 4 5 6 9 7 这样我就可以使用一些函数调用来检查前两个值 4 5 并对它们进行计算 问题 我不知道如何存储恢复前两个值 有没有简单的函数调

随机推荐

  • PL2303HXA自2012已停产,请联系供货商的解决办法

    一 概述 PL2303 是Prolific 公司生产的一种高度集成的接口转换器 可提供一个RS232 全双工异步串行通信装置与USB 功能接口便利连接的解决方案 PL2303具有多个历史版本 早期的版本是PL2303HX 近年有PL2303
  • 掉电无法启动数据库问题解决

    由于突然掉电 造成客户在windows平台上10 2 0 1数据库无法驱动 以下是具体解决步骤 一 定位故障问题 1 启动数据库 查看错误 SQL gt startup ora 01113 file 1 needs media recove
  • 文献管理软件工具讲解-------阿冬专栏!!!

    一 Endnote Mendeley Zotero NoteExpress 和 NoteFirst 这些文献管理软件从功能上各有特色 网上的评论文章也不少 我自己的的使用体验 如下 A 功能方面 在导入中文文献数据的准确性上 Endnote
  • Python手册

    前言 Python编程语言可以很好地协调一些看起来似乎很明显的矛盾 Python编程语言格式优雅并注重实效 简单而且功能强大 非常高层但是并不妨碍用户对底层的比特 bit 和字节 Byte 的处理 Python编程语言适合于编程新手 对Py
  • Oracle中的子程序和程序包

    存储过程的语法 CREATE OR REPLACE PROCEDURE
  • 华为机试题107-求解立方根

    描述 计算一个浮点数的立方根 不使用库函数 保留一位小数 数据范围 val 20 输入描述 待求解参数 为double类型 一个实数 输出描述 输出参数的立方根 保留一位小数 示例1 输入 19 9 输出 2 7 示例2 输入 2 7 输出
  • 《2022数字藏品研究报告》首发,读懂NFT中西方价值捕获的分化之路

    NFT作为 柯林斯词典 2021年度热词榜第一 很多人愿意称2021年为NFT元年 在过去几年里 我们见证了NFT从早期Myspace里的Pepe圈内文化发展成为风靡全球的潮流风向标 无论是在音乐圈 游戏圈或者摄影圈 如果你想成为行业的弄潮
  • 【Makefile】Makefile的使用

    Makefile的使用 一 Makefile简单介绍 二 Makefile的核心规则 三 Makefile的语法 syntax 1 通配符 patten 2 假象目标 phony 3 变量 variable 四 Makefile函数 1 函
  • IDEA项目中Maven仓库爆红

    很久没看项目 突然有一天打开发现maven仓库爆红 把仓库删了重新下载东西也没有变化 后来发现主要原因在pom xml中http maven apache org POM 4 0 0爆红 现在已经改了 提示URL无效 于是在settings
  • 搞清CSS样式中background-position(背景图片定位)

    昨天看一个网页的时候 看到一句 background url images top2 jpg no repeat 50 9px 其中50 代表的意义等同于left 容器 container 的宽度 背景图片的宽度 left百分比 超出的部分
  • Vue使用高德地图报 INVALID_USER_SCODE 错误

    项目场景 通过地点名称搜索并更新地图位置没有反应 搜索功能失效 问题描述 输入地点后点击搜索报错 原因分析 自2021年12月02日升级 升级之后所申请的 key 必须配备安全密钥 jscode 一起使用 解决方案 通过在高德开放平台创建并
  • Linux stat 命令及示例

    介绍 该stat命令打印有关文件和文件系统的详细信息 该工具提供有关所有者是谁 修改日期 访问权限 大小 类型等信息 该实用程序对于故障排除 在更改文件之前获取有关文件的信息以及例行文件和系统管理任务至关重要 本文stat通过实际示例解释了
  • 跨平台游戏引擎 Axmol-2.0.0 正式发布

    下载 https github com axmolengine axmol releases tag v2 0 0 更新日志 添加实验性的 WebAssembly 构建支持 WebGL 2 0 由 nowasm 贡献 已知问题 WebGL
  • C++:压缩算法1.0

    题目描述 某压缩算法的基本思想是用一个数值和一个字符代替具有相同值的连续字符 例如 输入字符串 RRRRRGGBBBBBBC 压缩后为 5R2G6B1C 请编写程序实现上述功能 输入 输入共一行 一串待压缩的字符 输出 输出共一行 压缩后的
  • uniapp实现猜数字小游戏

    一个uniapp的样例 超级简单 效果图在最后 外观 首先定义文字区块 用来告诉玩家现在改干什么以及猜的数字是猜大了还是猜小了
  • C++ STL迭代器相关

    map 迭代器 以下代码在编译时出错 提示c map报错 map set iterators incompatible map
  • 客户端无法连接腾讯云服务器Redis

    一 问题 使用Redis Desktop Manager 昨天可以连接上Redis服务器 今天却不可以 二 解决方案 1 确保IP地址 端口号 输入密码正确 1 1 redis conf 文件中port 1 2 redis conf文件中r
  • mysql执行计划固定_Oracle固定SQL的执行计划(一)---SQL Profile

    我们都希望对于所有在Oracle数据库中执行的SQL CBO都能产生出正确的执行计划 但实际情况却并非如此 由于各种各样的原因 比如目标SQL所涉及的对象的统计信息的不准确 或者CBO内部一些成本计算公式的先天缺陷等 导致有时CBO产生效率
  • Java使用for循环和while循环分别实现实现任意一个正整数逆序输出

    使用for循环将任意位数的正整数逆序 import java util Scanner public class ForNiXuTest public static void main String args System out prin
  • LSTM时间序列预测代码超通俗解释(MATLAB)

    数据在评论区 可以查看这一篇博客有更好的代码和可视化 多序列 http t csdn cn a4pM0 单序列 https blog csdn net m0 62526778 article details 128996795 clc cl