当前位置: 首页 > article >正文

当 LSTM 遇上 ARIMA!!

大家好,我是小青

ARIMA 和 LSTM 是两种常用于时间序列预测的模型,各有优劣。

ARIMA 擅长捕捉线性关系,而 LSTM 擅长处理非线性和长时间依赖的关系。将ARIMA 和 LSTM 融合,可以充分发挥它们各自的优势,构建更强大的时间序列预测模型。

ARIMA 算法

ARIMA 是一种经典的时间序列预测方法,适用于捕捉时间序列数据中的线性趋势和季节性模式。

它通过整合自回归 (AR)、差分 (I)、移动平均 (MA) 三部分,建模时间序列数据中的依赖关系。

以下是将 ARIMA 算法和 LSTM 算法进行融合,实现对时间序列预测的完整示例代码。

首先导入必要的库,并生成时间序列数据。

import numpy as np
import pandas as pd
from statsmodels.tsa.arima.model import ARIMA
from sklearn.preprocessing import MinMaxScaler
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import LSTM, Dense
import matplotlib.pyplot as plt# 生成模拟时间序列数据(正弦波 + 随机噪声)
np.random.seed(42)
time = np.arange(0, 100, 0.1)
data = np.sin(time) + 0.5 * np.random.normal(size=len(time))# 数据分割
train_size = int(len(data) * 0.8)
train_data, test_data = data[:train_size], data[train_size:]# 可视化数据
plt.plot(data, label='Original Data')
plt.axvline(train_size, color='red', linestyle='--', label='Train/Test Split')
plt.legend()
plt.show()

图片

接下来,使用 ARIMA 算法捕捉时间序列数据中的线性成分。

# 使用 ARIMA 模型拟合训练数据
arima_model = ARIMA(train_data, order=(5, 1, 0))  # 设置 p, d, q 参数
arima_result = arima_model.fit()# 生成 ARIMA 的预测值
arima_pred_train = arima_result.predict(start=1, end=len(train_data)-1)
arima_residuals = train_data[1:] - arima_pred_train  # 提取残差

然后,使用 LSTM 捕捉非线性残差。

# 数据归一化
scaler = MinMaxScaler(feature_range=(0, 1))
arima_residuals_scaled = scaler.fit_transform(arima_residuals.reshape(-1, 1))# 构建 LSTM 的输入特征
def create_lstm_dataset(data, time_steps=10):X, y = [], []for i in range(len(data) - time_steps):X.append(data[i:i+time_steps])y.append(data[i+time_steps])return np.array(X), np.array(y)time_steps = 10
X_train, y_train = create_lstm_dataset(arima_residuals_scaled, time_steps)# 定义 LSTM 模型
lstm_model = Sequential([LSTM(50, activation='relu', input_shape=(time_steps, 1)),Dense(1)
])# 编译 LSTM 模型
lstm_model.compile(optimizer='adam', loss='mse')# 训练 LSTM 模型
lstm_model.fit(X_train, y_train, epochs=20, batch_size=32, verbose=1)

融合预测

# 使用 ARIMA 对测试数据预测
arima_pred_test = arima_result.predict(start=len(train_data), end=len(data)-1)# 准备 LSTM 的输入
test_residuals = test_data - arima_pred_test
test_residuals_scaled = scaler.transform(test_residuals.reshape(-1, 1))X_test, _ = create_lstm_dataset(test_residuals_scaled, time_steps)# 使用 LSTM 对残差进行预测
lstm_pred = lstm_model.predict(X_test)
lstm_pred = scaler.inverse_transform(lstm_pred)# 融合预测结果
final_pred = arima_pred_test[time_steps:] + lstm_pred.flatten()# 可视化预测结果
plt.plot(test_data[time_steps:], label='True Values')
plt.plot(final_pred, label='ARIMA + LSTM Prediction')
plt.legend()
plt.show()

图片

相关文章:

当 LSTM 遇上 ARIMA!!

大家好,我是小青 ARIMA 和 LSTM 是两种常用于时间序列预测的模型,各有优劣。 ARIMA 擅长捕捉线性关系,而 LSTM 擅长处理非线性和长时间依赖的关系。将ARIMA 和 LSTM 融合,可以充分发挥它们各自的优势,构建更强大的时…...

终结磁盘空间紧张局面,针对性处理重复、无用文件

软件介绍 在如今这个数字化浪潮汹涌的时代,咱们的电脑存储空间就像一个杂乱无章的储物间,被各种各样的重复文件塞得满满当当。这些重复文件,犹如隐藏在暗处的 “空间小偷”,悄无声息地吞噬着宝贵的硬盘空间,使得原本井…...

DeepSeek全生态接入指南:官方通道+三大云平台

DeepSeek全生态接入指南:官方通道三大云平台 一、官方资源入口 1.1 核心交互平台 🖥️ DeepSeek官网: https://chat.deepseek.com/ (体验最新对话模型能力) 二、客户端工具 OllamaChatboxCherry StudioAnythingLLM …...

高校LabVIEW开发调试中的常见问题

在高校进行LabVIEW开发调试时,常常面临硬件选型不当、方案设计不合理、布线不专业以及人员流动性强等问题。这些问题可能影响项目的进展和质量。本文将总结这些问题,并给出具体的解决方案,帮助学生和团队更高效地开展开发工作。 ​ 1. 硬件选…...

【故障处理】- RMAN-06593: platform name ‘Linux x86 64-bitElapsed: 00:00:00.00‘

【故障处理】- RMAN-06593: platform name Linux x86 64-bitElapsed: 00:00:00.00 一、概述二、报错原因三、解决方法 一、概述 使用xtts迁移,在目标端进行恢复时,遇到RMAN-06593: platform name Linux x86 64-bitElapsed: 00:00:00.00’报错。 二、报错…...

K8S下载离线安装包所需文件

下载相关文件 官网下载地址集合https://kubernetes.io/zh-cn/releases/download/ 下载相关镜像 官网镜像描述 所有 Kubernetes 容器镜像都被部署到 registry.k8s.io 容器镜像仓库。 容器镜像支持架构registry.k8s.io/kube-apiserver:v1.32.0amd64, arm, arm64, ppc64le, …...

如何使用Java语言在Idea和Android中分别建立服务端和客户端实现局域网聊天

手把手教你用Java语言在Idea和Android中分别建立服务端和客户端实现局域网聊天 目录 文章目录 手把手教你用**Java**语言在**Idea**和**Android**中分别建立**服务端**和**客户端**实现局域网聊天**目录**[toc]**基本实现****问题分析****服务端**Idea:结构预览Server类代码解…...

泰勒公式推导以及常用展开式与近似计算

泰勒公式的基本思想是通过函数在某点的导数来逐渐构建一个多项式,该多项式能够近似函数在该点附近的值。我们通过一次次引入导数来改进近似,从而得到一个无限级数的展开。 准备工作:函数的定义和导数 假设我们有一个函数 f ( x ) f(x) f(x)…...

ArcGIS注册开发账号及API KEY

注册与激活 Sign up | ArcGIS Location Platform 填写信息,然后邮箱收到激活邮件,激活,再补充信息。 参考 Tutorial: Create an API key | Documentation | Esri Developer 产生API KEY Tutorial: Create an API key | Documentation |…...

Idea 插件 Quickly-Code-Toolkit

使用说明 (一)全局设置 Paging Wrapper Setting(分页设置) 功能:主要用于在方法写入时,为返回参数提供分页包装类。设置方式:需准确填写分页包装类的全限定名,例如:com…...

HTTP与Websocket

HTTP协议 概述 HTTP (Hypertext Transfer Protocol),即超文本传输协议,是一种用于在客户端和服务器之间传输超文本(例如网页、图片、音频、视频等)的通信协议。它是万维网(WWW)的基础,负责在浏…...

java八股---java面向对象

面向对象 面向对象概述 面向对象和面向过程的区别 面向过程: 优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、 Linux/Unix等一般采用面向过程开发,性能…...

《Deepseek入门到精通》2.0版本《Deepseek赋能职场应用》清华大学

🚀 《Deepseek入门到精通》2.0版本重磅发布! 📚 全新升级,赋能职场应用! 经过多次改版与优化,《Deepseek入门到精通》2.0版本已经正式上线!这不仅是一份技术指南,更是你提升职场竞争…...

关于防火墙运维面试题2

三、防火墙配置与管理类 21. 如何根据企业的网络安全策略,制定一套全面的防火墙规则集?需要考虑哪些关键因素? 以下是根据企业网络安全策略制定全面防火墙规则集的指导,以及需要考虑的关键因素: 一、关键因素 &…...

使用c++实现红黑树的构建和插入

1.红黑树简介: 红黑树实际上和AVL都属于一棵用于存储数据的平衡二叉搜索树,但是这棵树并不是使用平衡因子去维持平衡的,而是结合限制条件对结点标红标黑去让树达到类似平衡的效果。 2.红黑树的限制条件和效率分析: 2.1限制条件…...

在大型语言模型(LLM)框架内Transformer架构与混合专家(MoE)策略的概念整合

文章目录 传统的神经网络框架存在的问题一. Transformer架构综述1.1 transformer的输入1.1.1 词向量1.1.2 位置编码(Positional Encoding)1.1.3 编码器与解码器结构1.1.4 多头自注意力机制 二.Transformer分步详解2.1 传统词向量存在的问题2.2 详解编解码…...

Jenkins项目CICD流程

Jenkins项目流程:1.配置git环境 git config --...2.把前后端的目录初始化位本地工作目录 #git init3.提交到本地git #git add ./ git commit -m "" git tag v14.然后提交到远程git(通过,用户,群组,项目,管理项目)git remote add origin http://...git push -…...

【IDEA】2017版本的使用

目录 一、常识 二、安装 1. 下载IDEA2017.exe 2. 安装教程 三、基本配置 1. 自动更新关掉 2. 整合JDK环境 3. 隐藏.idea文件夹和.iml等文件 四、创建Java工程 1. 新建项目 2. 创建包结构,创建类,编写main主函数,在控制台输出内容。…...

Git指南-从入门到精通

代码提交和同步命令 流程图如下: 第零步: 工作区与仓库保持一致第一步: 文件增删改,变为已修改状态第二步: git add ,变为已暂存状态 bash $ git status $ git add --all # 当前项目下的所有更改 $ git add . # 当前目录下的所有更改 $ g…...

Spring boot(maven) - Mybatis 超级入门版

前言: 通过实践而发现真理,又通过实践而证实真理和发展真理。从感性认识而能动地发展到理性认识,又从理性认识而能动地指导革命实践,改造主观世界和客观世界。实践、认识、再实践、再认识,这种形式,循环往…...

Spark 性能优化 (三):RBO 与 CBO

1. RBO 的核心概念 在 Apache Spark 的查询优化过程中,规则优化(Rule-Based Optimization, RBO) 是 Catalyst 优化器的一个关键组成部分。它主要依赖于一组固定的规则进行优化,而不是基于统计信息(如 CBO - Cost-Base…...

读 DeepSeek-R1 论文笔记

DeepSeek-R1:通过强化学习激发大语言模型的推理能力 DeepSeek-AI 摘要 我们推出第一代推理模型DeepSeek-R1-Zero和DeepSeek-R1。DeepSeek-R1-Zero作为无需监督微调(SFT)预训练阶段、直接通过大规模强化学习(RL)训练的基础模型,展现出卓越的推理能力。…...

【Android开发AI实战】选择目标跟踪基于opencv实现——运动跟踪

文章目录 【Android 开发 AI 实战】选择目标跟踪基于 opencv 实现 —— 运动跟踪一、引言二、Android 开发与 AI 的融合趋势三、OpenCV 简介四、运动跟踪原理(一)光流法(二)卡尔曼滤波(三)粒子滤波 五、基于…...

Eclipse JSP/Servlet 深入解析

Eclipse JSP/Servlet 深入解析 引言 随着互联网的快速发展,Java Web开发技术逐渐成为企业级应用开发的主流。在Java Web开发中,JSP(JavaServer Pages)和Servlet是两个核心组件,它们共同构成了Java Web应用程序的基础。本文将深入解析Eclipse平台下的JSP/Servlet技术,帮…...

申论概括类【2021副省第二题“局区合一”】

材料: “李总监,您好,我是芯谷产业功能区项目投资科的小罗,从今天开始,我就是你们公司的项目专员,以后有什么问题您都可以找我。”W光学有限公司总务部总监李晓枫接到小罗的电话时,既意外又暖心…...

如何保持长久无痛苦的学英语?

“无痛苦”学英语? 听起来像天方夜谭,但并非不可能! 关键在于,把英语学习变成你生活的一部分,融入你的兴趣和目标, 这样才能摆脱痛苦,享受学习的过程。 1. 兴趣是最好的老师: 找到自…...

SQL-leetcode—1661. 每台机器的进程平均运行时间

1661. 每台机器的进程平均运行时间 表: Activity ----------------------- | Column Name | Type | ----------------------- | machine_id | int | | process_id | int | | activity_type | enum | | timestamp | float | ----------------------- 该表展示了一家工厂网站的…...

Linux例行任务:at 、cron、 /etc/contain 辨析

文章目录 一、at:一次性任务调度1. **基本用法**2. **管理任务**3. **权限控制** 二、cron:周期性任务调度1. **用户级任务**2. **系统级任务**3. **特殊字符串**4. **权限控制**5. **环境问题** 三、容器环境中的例行任务1. **在容器内运行 cron**2. **…...

Vue2中常用指令

文章目录 Vue2中常用指令1. v-text 动态渲染纯文本内容1. 作用2. 基本用法3. 示例4. 注意事项 2. v-html 动态渲染 HTML 内容1. 作用2. 基本用法3. 示例4. 注意事项 3. v-bind 动态绑定 HTML 属性1. 作用2. 基本用法3. 示例4. 注意事项5. 绑定class属性的用法6. 绑定style属性的…...

Sequence to Sequence model

基础模型 基础模型是用RNN模型,前部分是encoder用来寻找法语输入的编码,后半部分是decoder用来生成英文翻译作为输出,每次输出一个单词,直到输出结束标志如EOS。 下面是另一个例子,在CNN模型输出层之前会输出图片的向…...