MATLAB实现LSTM时间序列预测
LSTM模型可以在一定程度上学习和预测非平稳的时间序列,其具有强大的记忆和非线性建模能力,可以捕捉到时间序列中的复杂模式和趋势[4]。在这种情况下,LSTM模型可能会自动学习到时间序列的非平稳性,并在预测中进行适当的调整。其作为循环神经网络(RNN)的特殊形式,继承了循环神经网络的优点。首先,利用记忆机制,可以有效提取时间序列数据的时间依赖性。其次,在模型训练时,学习到的权重参数在时间步骤之间是共享的,故对长时间序列的训练具有一定的可拓展性,而且比起传统的神经网络模型,它所需参数数量较少,降低了模型的复杂度。最后,它也具有LSTM神经网络特有的优势,对训练时权重变化不稳定而产生梯度消失和梯度爆炸问题有着不错的改善效果。LSTM单元的主要结构由3个门控制器和记忆细胞组成。其中,输入门控制特征的流向信息,输出门控制特征的输出信息,遗忘门控制特征的去除与遗忘,记忆细胞负责存储细胞状态信息。通过不同功能门的控制,从而解决RNN存在的长期依赖问题[5]。LSTM单元内的计算过程为:
clc
clear
load('data.mat')
data=RTS'
%% 序列的前485个用于训练,后10个用于验证神经网络,然后往后预测10个数据。
dataTrain = data(1:485); %定义训练集
dataTest = data(486:495); %该数据是用来在最后与预测值进行对比的
%% 数据预处理
mu = mean(dataTrain); %求均值
sig = std(dataTrain); %求均差
dataTrainStandardized = (dataTrain - mu) / sig;
%% 输入的每个时间步,LSTM网络学习预测下一个时间步,这里交错一个时间步效果最好。
XTrain = dataTrainStandardized(1:end-1);
YTrain = dataTrainStandardized(2:end);
%% 一维特征lstm网络训练
numFeatures = 1; %特征为一维
numResponses = 1; %输出也是一维
numHiddenUnits = 200; %创建LSTM回归网络,指定LSTM层的隐含单元个数200。可调layers = [ ...sequenceInputLayer(numFeatures) %输入层lstmLayer(numHiddenUnits) % lstm层,如果是构建多层的LSTM模型,可以修改。fullyConnectedLayer(numResponses) %为全连接层,是输出的维数。regressionLayer]; %其计算回归问题的半均方误差模块 。即说明这不是在进行分类问题。%指定训练选项,求解器设置为adam, 1000轮训练。
%梯度阈值设置为 1。指定初始学习率 0.01,在 125 轮训练后通过乘以因子 0.2 来降低学习率。
options = trainingOptions('adam', ...'MaxEpochs',1000, ...'GradientThreshold',1, ...'InitialLearnRate',0.01, ... 'LearnRateSchedule','piecewise', ...%每当经过一定数量的时期时,学习率就会乘以一个系数。'LearnRateDropPeriod',400, ... %乘法之间的纪元数由“ LearnRateDropPeriod”控制。可调'LearnRateDropFactor',0.15, ... %乘法因子由参“ LearnRateDropFactor”控制,可调'Verbose',0, ... %如果将其设置为true,则有关训练进度的信息将被打印到命令窗口中。默认值为true。'Plots','training-progress'); %构建曲线图 将'training-progress'替换为none
net = trainNetwork(XTrain,YTrain,layers,options);
net = predictAndUpdateState(net,XTrain); %将新的XTrain数据用在网络上进行初始化网络状态
[net,YPred] = predictAndUpdateState(net,YTrain(end)); %用训练的最后一步来进行预测第一个预测值,给定一个初始值。这是用预测值更新网络状态特有的。
%% 进行用于验证神经网络的数据预测(用预测值更新网络状态)
for i = 2:20 %从第二步开始,这里进行20次单步预测(10为用于验证的预测值,10为往后预测的值。一共20个)[net,YPred(:,i)] = predictAndUpdateState(net,YPred(:,i-1),'ExecutionEnvironment','cpu'); %predictAndUpdateState函数是一次预测一个值并更新网络状态
end
%% 验证神经网络
YPred = sig*YPred + mu; %使用先前计算的参数对预测去标准化。
rmse = sqrt(mean((YPred(1:10)-dataTest).^2)) ; %计算均方根误差 (RMSE)。
subplot(2,1,1)
plot(dataTrain(1:end)) %先画出前面485个数据,是训练数据。
hold on
idx = 486:(485+20); %为横坐标
plot(idx,YPred(1:20),'.-') %显示预测值
hold off
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 = 486:(485+20); %为横坐标
plot(idx,YPred(1:20),'.-') %显示预测值
hold off
net = resetState(net);
MATLAB运行结果如下:
相关文章:

MATLAB实现LSTM时间序列预测
LSTM模型可以在一定程度上学习和预测非平稳的时间序列,其具有强大的记忆和非线性建模能力,可以捕捉到时间序列中的复杂模式和趋势[4]。在这种情况下,LSTM模型可能会自动学习到时间序列的非平稳性,并在预测中进行适当的调整。其作为…...
Kubernetes CNI Calico:Route Reflector 模式(RR) calico IPIP切换RR网络模式
1. 概述 Calico 路由反射模式是一种 BGP 互联方案,用于解决大规模网络中路由信息的分发和同步问题。在 Calico 的路由反射模式中,路由反射器(Route Reflectors)被用来集中管理路由信息,以减少网络中的路由信息数量和减小路由信息的分发规模。 在 Calico 的路由反射模式中…...

探索Gin框架:Golang Gin框架请求参数的获取
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站https://www.captainbed.cn/kitie。 前言 我们在专栏的前面几篇文章内讲解了Gin框架的路由配置,服务启动等内容。 专栏地址&…...
极值图论基础
目录 一,普通子图禁图 二,Turan问题 三,Turan定理、Turan图 1,Turan定理 2,Turan图 四,以完全二部图为禁图的Turan问题 1,最大边数的上界 2,最大边数的下界 五,…...
word导出链接
java 使用 POI 操作 XWPFDocumen 创建和读取 Office Word 文档基础篇 https://www.cnblogs.com/mh-study/p/9747945.html word标签解析文档 http://www.datypic.com/sc/ooxml/e-w_tbl-1.html...
(delphi11最新学习资料) Object Pascal 学习笔记---第4章第2.5节(重载和模糊调用)
4.2.5 重载和模糊调用 当调用一个重载的函数时,编译器通常会找到匹配的版本并正确工作,或者如果没有任何重载版本具有正确匹配的参数(正如我们刚刚看到的),则会报出错误。 但还有第三种情况:假设编…...

ElementUI Data:Table 表格
ElementUI安装与使用指南 Table 表格 点击下载learnelementuispringboot项目源码 效果图 el-table.vue(Table表格)页面效果图 项目里el-table.vue代码 <script> export default {name: el_table,data() {return {tableData: …...
11.2 OpenGL可编程顶点处理:细分着色器
细分 Tessellation Tessellation(细分)是计算机图形学中的一种技术,用于在渲染过程中提高模型表面的几何细节。它通过在原始图元(如三角形、四边形或补丁)之间插入新的顶点和边,对图元进行细化分割&#x…...

微软正在偷走你的浏览记录,Edge浏览器偷疯了
虽然现在 Edge 浏览器相当强大,甚至在某种程度上更符合中国用户的使用体验;但最近新的Edge浏览器推出后一直在使用的用户应该有感受到,原本的冰清玉洁的转校生慢慢小鸡脚藏不住了,广告越来越多,越来越流氓了。 电脑之前…...
什么是数据库软删除,什么场景下要用软删除?(go GORM硬删除)
文章目录 什么是数据库软删除,什么场景下要用软删除?go GORM硬删除什么是数据库软删除什么场景下要用软删除 什么是数据库软删除,什么场景下要用软删除? go GORM硬删除 使用的是 GORM,默认启用了软删除功能ÿ…...

计算机设计大赛 深度学习+python+opencv实现动物识别 - 图像识别
文章目录 0 前言1 课题背景2 实现效果3 卷积神经网络3.1卷积层3.2 池化层3.3 激活函数:3.4 全连接层3.5 使用tensorflow中keras模块实现卷积神经网络 4 inception_v3网络5 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 *…...

我主编的电子技术实验手册(02)——仪表与电源
本专栏是笔者主编教材(图0所示)的电子版,依托简易的元器件和仪表安排了30多个实验,主要面向经费不太充足的中高职院校。每个实验都安排了必不可少的【预习知识】,精心设计的【实验步骤】,全面丰富的【思考习…...

C语言----内存函数
内存函数主要用于动态分配和管理内存,它直接从指针的方位上进行操作,可以实现字节单位的操作。 其包含的头文件都是:string.h memcpy copy block of memory的缩写----拷贝内存块 格式: void *memcpy(void *dest, const void …...

【力扣】快乐数,哈希集合 + 快慢指针 + 数学
快乐数原题地址 方法一:哈希集合 定义函数 getNext(n) ,返回 n 的所有位的平方和。一直执行 ngetNext(n) ,最终只有 2 种可能: n 停留在 1 。无限循环且不为 1 。 证明:情况 1 是存在的,如力扣的示例一…...
c实现顺序表
目录 c语言实现顺序表 完整代码实现 c语言实现顺序表 顺序表的结构定义: typedef struct vector {int size; // 顺序表的容量int count; // 顺序表现在存储了多少个数据int *data; // 指针指向连续的整型存储空间 } vector;顺序表的结构操作: 1、初始…...

微软为新闻编辑行业推出 AI 辅助项目,记者参加免费课程
2 月 6 日消息,微软当地时间 5 日发布新闻稿宣布与多家新闻机构展开多项基于生成式 AI 的合作。微软表示,其使命是确保新闻编辑室在今年和未来拥有创新。 目前建议企业通过微软官方合作伙伴获取服务,可以合规、稳定地提供企业用户使用ChatGP…...

openssl3.2 - exp - buffer to BIO
文章目录 openssl3.2 - exp - buffer to BIO概述笔记END openssl3.2 - exp - buffer to BIO 概述 openssl的资料看的差不多了, 准备将工程中用到的知识点整理一下. openssl中很多API是以操作文件作为输入的, 也有很多API是以BIO作为输入的. 不管文件是不是受保护的, 如果有可…...
Android 13.0 系统framework修改低电量关机值为3%
1、讲在最前面 系统rom定制开发中,其中在低电量时,系统会自动关机,这个和不同的平台和底层驱动和硬件都有关系,需要结合这些来实际调整这个值,我们可以通过分析源码中电池服务的代码,然后进行修改如何实现…...

【EAI 013】BC-Z: Zero-Shot Task Generalization with Robotic Imitation Learning
论文标题:BC-Z: Zero-Shot Task Generalization with Robotic Imitation Learning 论文作者:Eric Jang, Alex Irpan, Mohi Khansari, Daniel Kappler, Frederik Ebert, Corey Lynch, Sergey Levine, Chelsea Finn 论文原文:https://arxiv.org…...

一文讲透ast.literal_eval() eval() json.loads()
文章目录 一文讲透ast.literal_eval() eval() json.loads()1. ast.literal_eval()2. eval()3. json.loads()4. 总结 一文讲透ast.literal_eval() eval() json.loads() 在Python库中,我们经常会遇到需要将字符串转换为相应对象或数据结构的情况。在这种情况下&#…...

UE5 学习系列(二)用户操作界面及介绍
这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…...

.Net框架,除了EF还有很多很多......
文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...
ssc377d修改flash分区大小
1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

无法与IP建立连接,未能下载VSCode服务器
如题,在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈,发现是VSCode版本自动更新惹的祸!!! 在VSCode的帮助->关于这里发现前几天VSCode自动更新了,我的版本号变成了1.100.3 才导致了远程连接出…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...

高频面试之3Zookeeper
高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个?3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制(过半机制࿰…...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?
论文网址:pdf 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向于笔记,谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...
Spring Boot面试题精选汇总
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...
【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验
系列回顾: 在上一篇中,我们成功地为应用集成了数据库,并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了!但是,如果你仔细审视那些 API,会发现它们还很“粗糙”:有…...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...