Keras【极简】LSTM【时序预测】

R语言神经网络实战:可解释、可交付的企业级建模 神经网络本质上是一种强大的非线性建模工具,其核心价值在于捕捉复杂变量关系并支持业务决策。在实际工程中,模型的可解释性与可交付性往往比参数规模更重要——前者确保结果可信、可追溯,后者决定能否真正嵌入业务流程并被非程序员用户使用。R语言凭借公式语法简洁、生态稳定、Shiny无缝集成等优势,在中小规模预测任务中展现出独特竞争力,尤其适合需要快速验证、本地部署、结果可视化和临床/业务可解读的场景。本文聚焦R中neuralnet与Keras两大主流方案,详解从数据预处理、结构设计、训练调优到模型保存与解释的完整链路, 阅读详情

1、序言

样本介绍
现有一样本,含3个时序【y、y1、y2】,其中【y】受【y1、y2】影响
目标
对【时序y】进行预测
import numpy as np, matplotlib.pyplot as mp
x_len = 1075
x = np.linspace(0, np.pi * 10.75, x_len, endpoint=False)
y = np.cos(x) + np.sin(x * 5) * .2  # y是由y1和y2组成
y1 = np.sin(x) + 2.6
y2 = np.cos(x * 5) * .2 + 1.4
mp.plot(x, y1, 'y', label='y1')
mp.plot(x, y2, label='y2')
mp.plot(x, y, 'g', label='y', linewidth=2)
mp.legend()
mp.show()

在这里插入图片描述

2、仅用时序y进行预测

import numpy as np, matplotlib.pyplot as mp
from keras.models import Sequential
from keras.layers import Dense, LSTM

"""创建样本"""
x_len = 1075
x = np.linspace(0, np.pi * 10.75, x_len, endpoint=False)
# y1 = np.sin(x) - 2
# y2 = np.cos(x * 5) * .2
y = np.cos(x) + np.sin(x * 5) * .2  # y受由y1和y2影响
y = (y - min(y)) / (max(y) - min(y))  # 标准化
window = 75  # 时序滑窗大小
X = np.reshape([y[i: i + window] for i in range(x_len - window)],
               (-1, window, 1))  # shape (1000, 75, 1)
Y = y[window:].reshape(-1, 1)  # shape (1000, 1)

"""建模"""
model = Sequential()
model.add(LSTM(50, input_shape=(window, 1), return_sequences=True))
model.add(LSTM(100))
model.add(Dense(1))
model.compile('adam', 'mse')
model.fit(X, Y, batch_size=100, epochs=20, verbose=2)

"""预测"""
pred_len = 200  # 预测序列长度
for start in (0, 333, 666, 999):
    x_pred = np.linspace(np.pi * (window + start) / 100,
                         np.pi * (window + start + pred_len) / 100,
                         pred_len, endpoint=False)
    y_pred = []  # 存放预测序列
    X_pred = X[start]
    for i in range(pred_len):
        Y_pred = model.predict(X_pred.reshape(-1, window, 1))  # 预测
        y_pred.append(Y_pred[0])
        X_pred = np.concatenate((X_pred, Y_pred))[1:]  # 窗口滑动
    mp.scatter(x_pred[0], y_pred[0], c='r', s=9)  # 预测起始点
    mp.plot(x_pred, y_pred, 'r')  # 预测序列
mp.plot(x, y, 'y', linewidth=5, alpha=0.3)  # 原序列
mp.show()

在这里插入图片描述

3、使用全部时序进行预测

import numpy as np, matplotlib.pyplot as mp
from keras.models import Sequential
from keras.layers import Dense, LSTM
from sklearn.preprocessing import MinMaxScaler

"""创建样本"""
x_len = 1075
x = np.linspace(0, np.pi * 10.75, x_len, endpoint=False)
y = np.array([[np.sin(x[i] * 5) * .2 + np.cos(x[i]),
               np.cos(x[i] * 5) * .2,
               np.sin(x[i])] for i in range(x_len)])  # shape(1075, 3)
y = MinMaxScaler().fit_transform(y)  # 标准化
d = y.shape[1]  # 维度(dimension)
window = 75  # 时序滑窗大小
X = np.array([[[y[j, k] for k in range(d)] for j in range(i, i + window)]
              for i in range(x_len - window)])  # shape(1000, 75, 3)
Y = np.array([[y[i, k] for k in range(d)]
              for i in range(window, x_len)])  # shape(1000, 3)

"""建模"""
model = Sequential()
model.add(LSTM(50, input_shape=(window, d), return_sequences=True))
model.add(LSTM(100))
model.add(Dense(d))
model.compile('adam', 'mse')
model.fit(X, Y, batch_size=100, epochs=10, verbose=2)

"""预测"""
pred_len = 200  # 预测序列长度
for start in (0, 333, 666, 999):
    x_pred = np.linspace(np.pi * (window + start) / 100,
                         np.pi * (window + start + pred_len) / 100,
                         pred_len, endpoint=False)
    y_pred = []  # 存放预测序列
    X_pred = X[start]
    for i in range(pred_len):
        Y_pred = model.predict(X_pred.reshape(1, window, d))  # shape(1, 3)
        y_pred.append(Y_pred[0][0])
        X_pred = np.concatenate((X_pred, Y_pred))[1:]  # 窗口滑动
    mp.scatter(x_pred[0], y_pred[0], c='r', s=9)  # 预测起始点
    mp.plot(x_pred, y_pred, 'r')  # 预测序列
mp.plot(x, y[:, 0], 'y', linewidth=4, alpha=.3)  # 原序列
mp.show()

在这里插入图片描述

Keras LSTM实现多维输入输出时序预测实践详解 自古以来,我们就希望预知未来,现如今,随着大数据人工智能技术的发展,我们早已经不满足传统的同比、环比等数据分析方法,但是时间序列趋势预测的传统算法又很专业,很难用于日常生产经营中。 深度学习神经网络为我们提供较为通用的解决方案,我们将在这里实践基于Python Keras LSTM多维输入输出时序预测模型。 阅读详情

相关推荐

使用Keras实现 基于注意力机制(Attention)的 LSTM 时间序列预测

时隔半年多,毕设男孩终于重操旧业,回到了 LSTM进行时间序列预测和异常检测的路上。 如果有阅读过我之前的博客,可以发现使用 LSTM作单类的时间序列异常检测也是基于对于时间序列的预测进行 登堂入室LSTM:使用LSTM进行简单的时间序列异常检测 本次我们要进行的是 使用 注意力机制 + LSTM 进行时间序列预测,项目地址为Keras Attention Mechanism 首先我们把它git...

小EZ的博客 6万+

【keras】利用LSTM进行单变量时间序列预测和多变量时间序列预测

        对于较为简单的时间序列预测问题,可以使用Exponential Smoothing和ARIMA等传统模型非常方便地求解。然而,对于复杂的时间序列预测问题,LSTM不失为一种很好的选择。因此,本文旨在探讨如何利用LSTM神经网络求解时间序列预测问题。首先,需要明白时间序列预测问题是如何转换为传统的监督学习问题的,即时间窗方法。有关时间序列预测问题转换为监督学习的过程请移步:Time ...

XYZ 3万+

通过Keras + LSTM训练天气污染程度预测模型

0 前言 在上文中进行ARIMA时序预测后,了解到强大的LSTM在处理时序预测有更为优秀的表现,因此对LSTM进行了学习。 LSTM是一种时间递归神经网络,它出现的原因是为了解决RNN的一个致命的缺陷。原生的RNN会遇到一个很大的问题,叫做The vanishing gradient problem for RNNs,也就是后面时间的节点会出现老年痴呆症,也就是忘事儿,这使得RNN在很长一段时间...

一摩尔自由的博客 1万+

使用 Tensorflow LSTM 进行时间序列预测

我们可以观察到,每次迭代或 epoch 的损失都会减少,有趣的是,我们的模型只经历了 8 个 epoch,即使我们要求模型运行 50 个 epoch。由于时间序列数据已经是连续测量的序列,按时间顺序索引,即数据是确定的、连续的和周期性的,非常适合 LSTM 网络学习并为时间顺序中的未来连续趋势提供预测。如果模型不能提供良好的预测,我们需要尝试一些不同的方法,例如数据缩放、数据转换、使用更多 LSTM 或密集层或调整其他超参数。时间序列数据,也称为时间戳数据,是按时间顺序索引的数据点序列。

xiaoshun007的专栏 3774

python利用LSTM进行时间序列分析预测

关键词:python、Keras、LSTM、Time-Series-Prediction      关于理论部分,可以参考这两篇文章(RNN、LSTM),本文主要从数据、代码角度,利用LSTM进行时间序列预测。(1)原始时间序列数据(只列出了18行)1455.219971 1399.420044 1402.109985 1403.449951 1441.469971 1457.599976 14

雪伦的专栏 8万+

PM2.5数据集LSTM时序预测python3代码

PM2.5数据集LSTM实现预测数据集说明主要步骤环境全部代码转化为监督数据导入数据集归一化转化为监督数据删除不需要预测的列分割为训练集和数据集LSTM反归一化真实值与预测值的对比 数据集说明 本实验采用的PM2.5空气质量数据集来自UCI公共数据集网站,包含了一系列与空气质量有关的天气数据,此数据集为多变量时间序列,每个记录的间隔为一小时,实例数量为43824条,其中前24条未在数据集中使用。该数据集是从2010年初到2014年底收集的美国驻华使馆的空气质量数据,在此实验中选择了具有实值的43800条作为

沂异的博客 4165

深入LSTM神经网络的时间序列预测。

©作者 |冯太涛单位 | 上海理工大学研究方向 | 概率论与数理统计前言RNN(循环神经网络)是一种节点定向连接成环的人工神经网络。不同于前馈神经网络,RNN 可以利用内部的记忆来处理任意时序的输入序列,即不仅学习当前时刻的信息,也会依赖之前的序列信息,所以在做语音识别、语言翻译等等有很大的优势。RNN 现在变种很多,常用的如 LSTM、Seq2SeqLSTM,还有其他变种如含有 Attenti...

AI蜗牛车 1619

【数据挖掘】使用 LSTM 进行时间和序列预测

本文示例是一个典型的时间序列处理办法,可以当作经典来用。读者可以多花一些时间消化该案例;事实表明,用LSTM这种工具不仅可以处理NLP,而且可以针对任何的时间序列,比如股票预测。

gongdiwudu的专栏 1万+

LSTM 详解及 LSTM 解决时间序列预测问题(附代码)

本文章详细介绍了 LSTM 的基本原理及计算过程,并且提供了基于多层 LSTM 解决时间序列预测问题的项目代码。

Incalos的博客 2万+

掌握金融时序预测:Keras实现LSTM网络python代码教程

在过去的数十年里,金融市场一直在努力通过各种数学和统计模型来预测市场的未来走势。近年来,深度学习技术逐渐崭露头角,尤其是长短期记忆网络(LSTM)在处理时间序列数据上表现出了非凡的能力。本章将对LSTM进行简要介绍,并探讨其在金融预测领域的适用性。LSTM是一种特殊的循环神经网络(RNN),它通过精心设计的“门”结构来避免传统RNN在长序列训练中遇到的梯度消失或爆炸问题。LSTM能够捕捉到长期的依赖关系,这使得它在处理和预测时间序列数据时具有巨大优势。在Keras中,你可以使用。

weixin_42605397的博客 988

Verilog基础知识11(异步FIFO为什么使用格雷码(gray-code) )

需求说明:Verilog设计 内容       :第一部分 异步FIFO为什么使用格雷码                   第二部分 格雷码在异步FIFO中的使用 来自       :时间的诗 第一部分 异步FIFO为什么使用格雷码 原文:http://www.cnblogs.com/kxk_kxk/p/3931591.html 异步FIFO通

时间的诗 8889

利用LSTM进行时序预测

利用LSTM进行时序预测的方法

qq_35240555的博客 1万+

自制JS某课脚本

根据实际需求自制网页讯网刷题脚本,绕过人脸,弹窗,答题,实现自动化运行

2301_81243054的博客 3461

基于LSTM模型的时间序列预测(车厢重量预测),Python中Keras库实现LSTM,实现预测未来未知数据,包括参数详解、模型搭建,预测数据

基于LSTM模型的时间序列预测,Python中Keras库实现LSTM,实现预测未来未知数据,保姆级教程包括参数详解、模型搭建,预测数据

m0_55948437的博客 9877

单片机技术入门与实战:从零基础到项目开发

单片机(MCU)作为嵌入式系统的核心组件,集成了CPU、内存和各种接口电路,广泛应用于智能家居、工业控制和汽车电子等领域。其工作原理基于实时控制和低功耗设计,通过定时器、中断系统和通信接口等功能模块实现各种控制任务。在物联网和智能硬件快速发展的背景下,掌握单片机开发技术成为电子工程师的重要技能。本文以STM32和PIC系列为例,详细解析单片机的基本概念、功能模块和选型指南,并分享从入门到项目实战的系统学习方法,帮助开发者在3-6个月内快速掌握这一关键技术。

weixin_35753291的博客 654

电机控制-PMSM无感FOC控制(五)SVPWM过调制策略优化与谐波抑制

本文深入探讨了PMSM无感FOC控制中的SVPWM过调制策略优化与谐波抑制。针对电机高速运行时电压利用率不足的问题,分析了过调制技术的必要性,并详细阐述了分区过调制、谐波注入及闭环优化等主流策略,旨在提升电压利用率与抑制电流谐波,实现电机高性能控制。

convnet3designer的博客 354

基于Keras的LSTM多变量时间序列股票预测

朋友多次劝我,用大数据人工智能研究下金融股票,由于本人水平有限,一直没有去想。最近两天,突然想到LSTM是不是很适合做股票预测,本文使用基于Keras框架LSTM多变量时间序列股票预测。

肖永威的专栏 1万+

手机银行应用架构设计

网上银行借助互联网、移动通信网络等技术向客户提供金融服务,易受到通讯层面的安全威胁,金融机构应从通讯协议、安全认证、通信链路安全等层面,采取措施有效应对相关风险。网上银行系统服务器端提供网上银行应用服务和核心业务处理功能,金融机构应充分利用物理环境、通信网络、计算环境等领域的防护技术,在攻击者和受保护的资源间建立多道严密的安全防线。 网上银行除直接向用户提供金融服务外,也可能与外部机构开展业务合作。在网上银行系统设计、开发、部署和运营过程中,应充分考虑外部机构的系统可能存在的安全风险,并针对各类风险进行有效

银行信息系统应用架构详解 4835

基于Keras的LSTM多变量时间序列预测

长短期记忆循环神经网络等几乎可以完美地模拟多个输入变量的问题,这为时间序列预测带来极大益处。本文介绍了如何在 Keras 深度学习库中搭建用于多变量时间序列预测的 LSTM 模型。 诸如长短期记忆(LSTM)循环神经网络的神经神经网络几乎可以无缝建模具备多个输入变量的问题。 这为时间序列预测带来极大益处,因为经典线性方法难以适应多变量或多输入预测问题。 通过本教程,你

机器之心 1万+

华为FusionCompute之计算虚拟化

华为FusionCompute之虚拟化

jks212454的博客 2453

【乐企文件生成工程】关于乐企文件生成工程的详细介绍

发票文件生成方式有两种思路:1、根据已有的OFD模板,动态替换ofd模板内容;之后将ofd转pdf(局限:单行问题不大)详情可以在此处了解2、根据html模板动态占位:该工程就是这种方式 ,目前效果良好,可看下图。拿去即用的源码!无任何保留,当然也并不是所有票种都支持(时间有限、精力有限、已经连着转了,要冒烟了…)

九七的博客 2031

在Keras中使用LSTM模型进行多变量时间序列预测

今天我给大家介绍一个国外深度学习大牛Jason Brownlee写的一篇关于多变量时间序列预测的博客,我在原文的代码基础上做了一点点修改,只是为了便于大家更好的理解。在本文中,您将了解如何在Keras深度学习库中为多变量时间序列预测开发LSTM模型。读完成本文后,您将了解: 如何将原始数据集转换为可用于时间序列预测的数据。 如何准备数据并使LSTM适合多变量时间序列预测问题。 如何进行预测并...

weixin_42608414的博客 1万+

多图详解VSCode搭建Python开发环境

本文通过多图的方式详细介绍了VSCode搭建Python开发环境,希望能对学习Python的同学们有所帮助。 文章目录 1. VSCode的介绍和安装 2. 安装插件 2.1 安装中文插件 2.2 安装Python插件 2.3 安装远程插件 3. 远程连接服务器 3.1 配置ssh 3.2 运行代码 3.3 调试代码

weixin_43178406的博客 8万+

LSTM模型分析及对时序数据预测的具体实现(python实现)

具体代码看代码云:传送门,有问题欢迎随时私信~ 引言这篇博客衔接上一篇博客: Holt-Winters模型原理分析及代码实现(python),我们在三次指数平滑的基础上,来进一步讨论下对时序数据的预测。LSTM原理分析(参考博文:Understanding LSTM Networks)Long Short Term 网络–LSTM,是神经网络的一种简单延伸,也是一种特殊的RNN模型。可以用来学习长期

分享人工智能学习心得与实践经验,探讨应用场景,见证变革与进步 2万+

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Keras LSTM时间序列预测

使用Keras LSTM预测时间序列 参考文章: Kesci: Keras 实现 LSTM——时间序列预测:https://www.cnblogs.com/mtcnn/p/9411597.html 读取数据 data_path = "/mnt/X500/farmers/tongyao/机器学习项目练习/industry_timeseries/" #查看其中一个地区的训练数据 import pan...

哆啦A瑶的博客 4486

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

cnn+lstm+attention对时序数据进行预测

本文主要讲解:cnn+lstm+attention对时序数据进行预测

机器学习、深度学习、强化学习、迁移学习 2万+

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

上一篇: Keras【极简】RNN
下一篇: TensorFlow【极简】RNN
小基基o_O
博客等级 码龄9年 4414粉丝 467原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小基基o_O

您的鼓励是我创作的巨大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值