当 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 融合,可以充分发挥它们各自的优势,构建更强大的时…...
kali连接xshell
1.先保证宿主机:以太网适配器 VMware Network Adapter VMnet8 和kali(net 模式)在同一个网段 windows VMnet8开启 查看是否是自动获取ip ipv4 和ipv6一样的 查看 windows VMnet8的IPv4的地址 查看 kali 的IP地址 window ping的结果…...
图像曲率滤波
看到这么一个非常有意思的东西,记录一下 https://www.zhihu.com/question/35499791 https://zhuanlan.zhihu.com/p/22971865 GCFilter_talk.pdf_免费高速下载|百度网盘-分享无限制 https://github.com/YuanhaoGong/CurvatureFilter?tabreadme-ov-file...
TCP 和 UDP 可以绑定相同的端口吗?
前言 当一个网络接口接收到一个数据报时,IP 模块首先检查目的地址是否为自己的 IP 地址,如果是的话,数据报交付给由 IPv4 头部的协议字段指定的协议模块。 TCP 和 UDP 在内核中是两个完全独立的模块,送给 TCP/UDP 模块的报文根据…...
【Python网络爬虫】爬取网站图片实战
【Python网络爬虫】爬取网站图片实战 Scrapying Images on Website in Action By Jackson@ML *声明:本文简要介绍如何利用Python爬取网站数据图片,仅供学习交流。如涉及敏感图片或者违禁事项,请注意规避;笔者不承担相关责任。 1. 创建Python项目 1) 获取和安装最新版…...
2024年博客之星年度评选—创作影响力评审+主题文章创作评审目前排名(2024博客之星陪跑小分队助力2024博客之星创作者成长)
2024年博客之星年度评选—创作影响力评审主题文章创作评审目前排名 2024年博客之星主题文章创作评审文章得分公布!2024年博客之星创作影响力评审2024年博客之星主题文章创作评审目前排名公布! 【2024博客之星】恭喜完成✅主题创作的226位博主࿰…...
【CLIP系列】4:目标检测(ViLD、GLIP)
目录 1 ViLD2 GLIP2.1 前言2.2 损失计算2.3 模型框架 1 ViLD OPEN-VOCABULARY OBJECT DETECTION VIA VISION AND LANGUAGE KNOWLEDGE DISTILLATION 从标题就能看出来,作者是把CLIP模型当成一个Teacher,去蒸馏他自己的网络,从而能Zero Shot去…...
Qt Designer菜鸟使用教程(实现一个本地英文翻译软件)
1 安装Qt Designer 安装这个包的时候会自带安装 Qt Designer, 安装目录为python的安装根目录的 Lib/site-packages/qt5_applications/Qt/bin 目录下。 pip install pyqt5-tools2 新建窗体 2.1 新建主窗体 创建之后如下图: 设置主窗口大小: 设置窗…...
【一文读懂】HTTP与Websocket协议
HTTP协议 概述 HTTP (Hypertext Transfer Protocol),即超文本传输协议,是一种用于在客户端和服务器之间传输超文本(例如网页、图片、音频、视频等)的通信协议。它是万维网(WWW)的基础,负责在浏…...
大语言模型入门
大语言模型入门 1 大语言模型步骤1.1 pre-training 预训练1.1.1 从网上爬数据1.1.2 tokenization1.1.2.1 tokenization using byte pair encoding 1.3 预训练1.3.1 context1.3.2 training1.3.3 输出 1.2 post-training1.2.1 token 1.2 SFT监督微调1.3 人类反馈强化学习1.3.1 人…...
SQL 大厂面试题目(由浅入深)
今天给大家带来一份大厂SQL面试覆盖:基础语法 → 复杂查询 → 性能优化 → 架构设计,大家需深入理解执行原理并熟悉实际业务场景的解决方案。 1. 基础查询与过滤 题目:查询 employees 表中所有薪资(salary)大于 10000…...
Shader Step和frac函数
Step又称为阶跃函数,在着色器(Shader)编程中,step 函数是一个非常有用的函数,尤其是在GLSL(OpenGL Shading Language)和其他类似的着色器语言中。它用于生成基于阈值的阶跃函数输出。step 函数的…...
FreeRtos实时系统: 十二.FreeRTOS的队列集
FreeRtos实时系统: 十二.FreeRTOS的队列集 一.队列集简介二.队列集相关API函数三.队列集操作实验 一.队列集简介 左边的接收任务会在没接收到队列时会阻塞,如果前面释放信号量这时该任务也获取不到信号量。 右边使用队列集如果获取到,判断句柄是谁&#…...
NLP Word Embeddings
Word representation One-hot形式 在上一周介绍RNN类模型时,使用了One-hot向量来表示单词的方式。它的缺点是将每个单词视为独立的,算法很难学习到单词之间的关系。 比如下面的例子,即使语言模型已经知道orange juice是常用组合词…...
如何在24GB的GPU上运行DeepSeek-R1-Distill-Qwen-32B
如何在24GB的GPU上运行DeepSeek-R1-Distill-Qwen-32B 一、背景二、解决方案三、操作步骤1.下载模型2.安装依赖3.量化4.生成推理代码5.运行A.缓存上限为128条B.不限制缓存上限C.输出内容 一、背景 随着深度学习的不断发展,大型语言模型(LLM,L…...
2025年二级建造师报名流程图解
2025年二级建造师报名时间!附报名流程! ⏰️已公布25年二建考试时间的省份如下: ️4月19日、20日考试的城市有:贵州 ️5月10日、11日考试的城市有:湖北、陕西、宁夏、甘肃、福建、浙江、江西、黑龙江、河南、湖南、…...
深入浅出:Python 中的异步编程与协程
引言 大家好,今天我们来聊聊 异步编程 和 协程,这是近年来编程语言领域中的热点话题之一,尤其在 Python 中,它作为一种全新的编程模型,已经成为处理 IO密集型 任务的强力工具。尽管很多人对异步编程望而却步࿰…...
八大排序——简单选择排序
目录 1.1基本操作: 1.2动态图: 1.3代码: 代码解释 1. main 方法 2. selectSort 方法 示例运行过程 初始数组 每轮排序后的数组 最终排序结果 代码总结 1.1基本操作: 选择排序(select sorting)也…...
vue使用CSS布局技术,实现div定位到页面底部或顶部并居中功能
<template> <div > <div class"bottom-element"> 我在底部,并居中了 </div> </div> </template> 使用CSS布局技术,通过设置CSS属性来实现页面底部定位。 <style lang"scs…...
Jenkins 部署 之 Mac 一
Jenkins 部署 之 Mac 一 一.Jenkins 部署依赖 JDK 环境 查看 Mac JDK 环境,如果没有安装,先安装 打开终端输入命令:java -version Mac安装配置 JDK 二. 检查 HomeBrew 安装 检查 HomeBrew 是否安装,终端输入命令:brew -v Mac安装HomeB…...
别再只靠EWSA了!聊聊WPA密码破解的几种姿势与效率对比
WPA密码破解工具全维度评测:从EWSA到Hashcat的实战指南 在无线安全评估领域,WPA/WPA2密码破解始终是绕不开的技术课题。当安全研究员获得合法授权的握手包后,如何高效完成密码恢复任务?市面上既有EWSA这样的老牌图形化工具&#x…...
除了综合,DC Shell还能这么用:快速搭建一个轻量级RTL/Netlist查看与调试环境
DC Shell的隐藏技能:打造高效RTL/Netlist交互式调试环境 在数字芯片设计流程中,工程师们经常需要快速查看和分析RTL或网表文件。传统方法要么启动完整的综合流程耗时费力,要么依赖第三方工具可能面临兼容性问题。实际上,Synopsys …...
告别内存焦虑:用STM32+外部SRAM(IS62WV51216)实现大数组和GUI缓存
STM32外部SRAM实战:突破内存限制的工程化解决方案 当你在STM32上开发图形界面或处理音频流时,是否遇到过程序突然崩溃的窘境?那些隐藏在编译通过背后的内存溢出问题,往往在项目后期才暴露出来。最近接手的一个智能家居控制面板项目…...
十大类型学系统性阐释:自感痕迹论的发生学分类体系
十大类型学系统性阐释:自感痕迹论的发生学分类体系引言:类型学作为公理的微分展开一个完备的发生学体系,不应满足于对单一现象的孤立分类。它应当从少数基本公设出发,在不同分析层面自然衍生出互相关联又各具独立性的类型学。自感…...
8 款最强 AI 文字转语音横评:中文方言谁最强、免费党有没有真王者?
👉 这是一个或许对你有用的社群🐱 一对一交流/面试小册/简历优化/求职解惑,欢迎加入「芋道快速开发平台」知识星球。下面是星球提供的部分资料: 《项目实战(视频)》:从书中学,往事上…...
CSS 混合模式完全指南
CSS 混合模式完全指南 引言 CSS 混合模式(Blend Modes)是一种强大的视觉效果工具,它允许你控制多个元素或图层如何混合在一起。本文将深入探讨各种混合模式的用法和高级技巧。 混合模式类型 基础混合模式 模式效果描述normal默认模式…...
如何在没有iCloud 备份的情况下从iPhone恢复联系人
不小心删除了 iPhone 上的重要联系人或短信,却发现没有 iCloud 备份可以依靠?别担心;没有 iCloud 备份的数据丢失并不意味着它永远消失了。无论您是误删了短信,还是在iOS更新后丢失了联系人,仍然有办法找回数据。在本指…...
告别卡顿与臃肿:两种高效获取MATLAB Online账号的实战指南
1. 为什么你需要MATLAB Online? 如果你正在读这篇文章,大概率是因为你的电脑跑不动桌面版MATLAB了。我完全理解这种痛苦——当年我的老笔记本打开MATLAB要三分钟,运行个简单脚本风扇就狂转,更别提安装时那令人绝望的20GB硬盘占用…...
详解51单片机智能小车避障核心:超声波、漫反射与红外传感器的实战选型与调试
1. 智能小车避障传感器的核心选择 做智能小车最让人头疼的就是避障功能了。我当年第一次做51单片机小车时,光选传感器就折腾了好几个星期。市面上常见的避障传感器主要有三种:超声波模块、漫反射光电管和红外传感器。每种传感器都有自己的脾气ÿ…...
【技术解析】方差分析:从统计表解读到业务决策的实战指南
1. 方差分析:从统计表到业务决策的实战指南 第一次接触方差分析时,我也被那些统计术语和公式搞得晕头转向。直到有一次,产品经理拿着A/B测试数据问我:"新版页面真的比旧版好吗?好多少?"我才意识到…...
