时间序列预测系列文章总结(代码使用方法)

article/2025/8/27 6:22:53

前言

这篇文章是对前面所写的LSTM时序预测文章的代码使用方法的总结。强烈建议使用代码前先阅读本文,而不是直接询问! 此外,代码数据中除了负荷列其他列都已经归一化了,所以代码中只对负荷列进行了归一化,如果使用自己的数据,需要对其他列数据进行归一化。


更新:由于询问如何使用的人太多了,因此这里做一些更加详细的注解,TensorFlow代码的整体结构与使用方法与PyTorch几乎一模一样,因此就不再详细介绍。

前面已经写过不少时间序列预测的文章:

  1. 深入理解PyTorch中LSTM的输入和输出(从input输入到Linear输出)
  2. PyTorch搭建LSTM实现时间序列预测(负荷预测)
  3. PyTorch中利用LSTMCell搭建多层LSTM实现时间序列预测
  4. PyTorch搭建LSTM实现多变量时间序列预测(负荷预测)
  5. PyTorch搭建双向LSTM实现时间序列预测(负荷预测)
  6. PyTorch搭建LSTM实现多变量多步长时间序列预测(一):直接多输出
  7. PyTorch搭建LSTM实现多变量多步长时间序列预测(二):单步滚动预测
  8. PyTorch搭建LSTM实现多变量多步长时间序列预测(三):多模型单步预测
  9. PyTorch搭建LSTM实现多变量多步长时间序列预测(四):多模型滚动预测
  10. PyTorch搭建LSTM实现多变量多步长时间序列预测(五):seq2seq
  11. PyTorch中实现LSTM多步长时间序列预测的几种方法总结(负荷预测)
  12. PyTorch-LSTM时间序列预测中如何预测真正的未来值
  13. PyTorch搭建LSTM实现多变量输入多变量输出时间序列预测(多任务学习)
  14. PyTorch搭建ANN实现时间序列预测(风速预测)
  15. PyTorch搭建CNN实现时间序列预测(风速预测)
  16. PyTorch搭建CNN-LSTM混合模型实现多变量多步长时间序列预测(负荷预测)
  17. PyTorch搭建Transformer实现多变量多步长时间序列预测(负荷预测)
  18. PyTorch时间序列预测系列文章总结(代码使用方法)
  19. TensorFlow搭建LSTM实现时间序列预测(负荷预测)
  20. TensorFlow搭建LSTM实现多变量时间序列预测(负荷预测)
  21. TensorFlow搭建双向LSTM实现时间序列预测(负荷预测)
  22. TensorFlow搭建LSTM实现多变量多步长时间序列预测(一):直接多输出
  23. TensorFlow搭建LSTM实现多变量多步长时间序列预测(二):单步滚动预测
  24. TensorFlow搭建LSTM实现多变量多步长时间序列预测(三):多模型单步预测
  25. TensorFlow搭建LSTM实现多变量多步长时间序列预测(四):多模型滚动预测
  26. TensorFlow搭建LSTM实现多变量多步长时间序列预测(五):seq2seq
  27. TensorFlow搭建LSTM实现多变量输入多变量输出时间序列预测(多任务学习)
  28. TensorFlow搭建ANN实现时间序列预测(风速预测)
  29. TensorFlow搭建CNN实现时间序列预测(风速预测)
  30. TensorFlow搭建CNN-LSTM混合模型实现多变量多步长时间序列预测(负荷预测)
  31. PyG搭建图神经网络实现多变量输入多变量输出时间序列预测
  32. PyTorch搭建GNN-LSTM和LSTM-GNN模型实现多变量输入多变量输出时间序列预测
  33. PyG Temporal搭建STGCN实现多变量输入多变量输出时间序列预测
  34. 时序预测中Attention机制是否真的有效?盘点LSTM/RNN中24种Attention机制+效果对比

这篇文章是对所有文章的总结,顺便也谈一谈代码如何使用。

1. 深入理解PyTorch中LSTM的输入和输出(从input输入到Linear输出)

这篇文章主要讲PyTorch中LSTM的输入和输出,具体讲了数据流动过程中的维度变化,是所有文章的基础,必须要理解。这篇文章不涉及代码使用。

2. PyTorch搭建LSTM实现时间序列预测(负荷预测)

这篇文章是单变量单步预测的示例,即利用前24小时的负荷预测下一时刻的负荷值。

具体使用方法:利用pycharm或者其他IDE打开压缩包中的LSTM-Load-Forecasting项目,如下所示:
在这里插入图片描述
这里对args.py中的一些参数做一些解释,需要注意的是,不同的预测方法有不同的args配置,例如mm_args_parser表示多变量多步长(Multivariate-MultiStep)预测的配置文件。这里以多变量多步长预测的参数配置为例:
在这里插入图片描述

  1. epochs:模型训练的轮数,意义不言而喻。
  2. input_size:模型的输入维度,这里为7,表示用负荷+其余6个环境因素(对应csv文件中的7列数据)进行预测。如果需要更换为自己的数据,例如用降雨量+其余3个环境因素进行预测,那么这里应该有input_size=4
  3. seq_len:序列长度,这里为24,表示我们利用前24小时的负荷+环境因素去预测未来的负荷,请根据需求自行更改。
  4. output_size:模型的输出大小,这里为4,表示我们利用前24小时的负荷+环境因素去预测未来4小时的负荷值。一般来讲,output_size越大,预测的效果也就越差,请根据需求自行更改。
  5. hidden_size:LSTM的hidden_size大小,具体请参考LSTM的原理。一般这里不需要更改,如果预测效果不好,可以自行调整。
  6. num_layers:LSTM的层数,调整原则同hidden_size
  7. lr:学习率,意义不言而喻。
  8. batch_size:批大小,一般可作为一个超参数进行调整,一般不需要更改。
  9. optimizer:优化器,一般使用Adam,不需要更改。
  10. device:参数,如果有GPU则自动使用,否则使用CPU,不需要更改。
  11. weight_decay:正则化参数,一般可作为一个超参数进行调整,一般不需要更改。
  12. bidirectional:双向控制参数,如果为True,则使用双向LSTM,否则使用单向LSTM,请根据需要自行调整。
  13. step_size:训练过程中每step_size个epoch调整一次学习率。
  14. gamma:训练过程中每step_size个epoch后让学习率变为之前的gamma倍。

然后打开并运行LSTMs文件夹下的univariate_single_step.py文件,表示单变量单步长预测。如果需要更换预测长度,比如前12小时预测下一小时,只需将args.py中us_args_parser()函数中的参数seq_len改为12,其他参数的更改请参考前面对args中参数的讲解即:
在这里插入图片描述
如果需要使用自己的数据,只需要将data文件夹下的data.csv替换为自己的csv文件,然后再对data_process.py中的nn_seq_us进行更改:
在这里插入图片描述
如果需要预测的变量为第s列,那么只需将图中的1改为s即可。

3. PyTorch搭建LSTM实现多变量时间序列预测(负荷预测)

这篇文章是多变量单步预测的示例,即利用前24小时的负荷+环境因素预测下一时刻的负荷值。

具体使用方法:利用pycharm或者其他IDE打开压缩包中的LSTM-Load-Forecasting项目,然后打开并运行LSTMs文件夹下的multivariate_single_step.py文件。如果需要使用自己的数据,首先需要将data.csv进行替换,其次,对data_process.py中的nn_seq_ms进行更改:
在这里插入图片描述
具体来讲,首先需要将1替换为想要预测的变量的列索引,然后将2, 8替换为环境变量的列索引。其他参数的更改请参考前面对args中参数的讲解

4. PyTorch搭建双向LSTM实现时间序列预测(负荷预测)

这篇文章是双向LSTM预测的示例,即将23节中的单向LSTM替换为双向LSTM。

具体使用方法:利用pycharm或者其他IDE打开压缩包中的LSTM-Load-Forecasting项目,然后将args.py中三个args_parser()函数中的bidirectional参数改为True即可:
在这里插入图片描述

5. PyTorch搭建LSTM实现多变量多步长时间序列预测(一):直接多输出

这篇文章是多变量多步长预测的第一篇:直接多输出。我们利用前24小时的负荷+环境因素预测接下来多个小时的负荷值。

具体使用方法:利用pycharm或者其他IDE打开压缩包中的LSTM-MultiStep-Forecasting项目,如下所示:
在这里插入图片描述
然后打开并运行algorithms文件夹下的multiple_outputs.py文件即可。

如果需要调整预测长度,比如利用前24小时预测接下来12个小时,只需将args.py中mo_args_parser()函数中的output_size参数改为12即可,其他参数的更改请参考前面对args中参数的讲解

如果需要使用自己的数据,首先需要将data文件夹下的data.csv替换为自己的csv文件,然后更改data_process.py中的nn_seq_mo()函数,更改方式和前面一样。

6. PyTorch搭建LSTM实现多变量多步长时间序列预测(二):单步滚动预测

这篇文章是多变量多步长预测的第二篇:单步滚动预测。

具体使用方法:利用pycharm或者其他IDE打开压缩包中的LSTM-MultiStep-Forecasting项目,然后打开并运行algorithms文件夹下的single_step_scrolling.py文件即可。

如果需要使用自己的数据,首先需要将data文件夹下的data.csv替换为自己的csv文件,然后更改data_process.py中的nn_seq_sss()函数,更改方式和前面一样。
在这里插入图片描述
单步滚动预测的参数配置文件中出现了一个新的参数pred_step_size,其意思为预测的长度,与一开始的output_size表达的意思一致,但这里二者有所区分,区分如下:由于在单步滚动预测中,比如前10个预测后3个:我们首先利用[1…10]预测[11’],然后利用[2…10 11’]预测[12’],最后再利用[3…10 11’ 12’]预测[13’],也就是为了得到多个预测输出,我们直接预测多次,并且在每次预测时将之前的预测值带入。这意味着虽然我们一共预测了未来3个时刻的负荷,但每个模型实际上只预测了未来一个时刻,只是3个时刻分别由3个不同的模型进行预测。因此在这里,output_size=1,意为模型只预测未来一个时刻的负荷,而pred_step_size=3,表示一共预测3个时刻。

其他参数的更改请参考前面对args中参数的讲解

7. PyTorch搭建LSTM实现多变量多步长时间序列预测(三):多模型单步预测

这篇文章是多变量多步长预测的第三篇:多模型单步预测。

具体使用方法:利用pycharm或者其他IDE打开压缩包中的LSTM-MultiStep-Forecasting项目,然后打开并运行algorithms文件夹下的multi_model_single_step.py文件即可。

如果需要使用自己的数据,首先需要将data文件夹下的data.csv替换为自己的csv文件,然后更改data_process.py中的nn_seq_mmss()函数,更改方式和前面一样。

其他参数的更改请参考前面对args中参数的讲解

8. PyTorch搭建LSTM实现多变量多步长时间序列预测(四):多模型滚动预测

这篇文章是多变量多步长预测的第四篇:多模型滚动预测。

具体使用方法:利用pycharm或者其他IDE打开压缩包中的LSTM-MultiStep-Forecasting项目,然后打开并运行algorithms文件夹下的multi_model_scrolling.py文件即可。

如果需要使用自己的数据,首先需要将data文件夹下的data.csv替换为自己的csv文件,然后更改data_process.py中的nn_seq_mmss()函数,更改方式和前面一样。

其他参数的更改请参考前面对args中参数的讲解

9. PyTorch搭建LSTM实现多变量多步长时间序列预测(五):seq2seq

这篇文章是多变量多步长预测的第五篇:seq2seq预测。

具体使用方法:利用pycharm或者其他IDE打开压缩包中的LSTM-MultiStep-Forecasting项目,然后打开并运行algorithms文件夹下的seq2seq.py文件即可。

如果需要使用自己的数据,首先需要将data文件夹下的data.csv替换为自己的csv文件,然后更改data_process.py中的nn_seq_mos()函数,更改方式和前面一样。

其他参数的更改请参考前面对args中参数的讲解

10. PyTorch中实现LSTM多步长时间序列预测的几种方法总结(负荷预测)

总结文章,不涉及代码使用,没啥可说的。

11. PyTorch-LSTM时间序列预测中如何预测真正的未来值

这部分讲怎么利用现有的模型预测未来不存在的值,这篇文章中给出了一个大致的模型框架,如果需要针对自己的情况进行预测,可以加我微信进行询问。

12. PyTorch搭建LSTM实现多变量输入多变量输出时间序列预测(多任务学习)

这篇文章是时间序列预测多任务学习的示例,即一次性输出多个变量,例如利用前24小时的负荷+温度预测接下来12个小时的负荷+温度。

具体使用方法:利用pycharm或者其他IDE打开压缩包中的LSTM-MultiStep-Forecasting项目,然后打开并运行algorithms文件夹下的multi_task_learning.py文件即可。

如果需要使用自己的数据,首先需要将data文件夹下的mtl_data_1.csv或者mtl_data_2.csv替换为自己的csv文件,然后更改data_process.py中的nn_seq_mtl()函数。同时,args.py中的multi_task_args_parser()函数也需要进行更改:
在这里插入图片描述
其中output_size表示预测长度,即预测接下来12个小时的多个变量值;n_outputs表示需要预测的变量个数,比如本篇文章中需要预测3个变量。

其他参数的更改请参考前面对args中参数的讲解

13. PyTorch搭建ANN实现时间序列预测(风速预测)

这篇文章是ANN时间序列预测示例。

具体使用方法:利用pycharm或者其他IDE打开压缩包中的ANN-Speed-Forecasting项目,如下所示:
在这里插入图片描述
然后打开并运行ann.py文件即可。

如果需要使用自己的数据集,只需将data文件夹下的data.csv替换为自己的csv文件,然后更改data_process.py的相关方法。由于这里使用的数据集与之前文章的数据集不一致,因此数据处理部分的代码更改不具有普遍性,具体情况具体分析。

14. PyTorch搭建CNN实现时间序列预测(风速预测)

这篇文章是ANN时间序列预测的示例。

具体使用方法:利用pycharm或者其他IDE打开压缩包中的CNN-Speed-Forecasting项目,如下所示:
在这里插入图片描述
然后打开并运行cnn.py文件即可。

如果需要使用自己的数据集,只需将data文件夹下的data.csv替换为自己的csv文件,然后更改data_process.py的相关方法。由于这里使用的数据集与之前文章的数据集不一致,因此数据处理部分的代码更改不具有普遍性,具体情况具体分析。

15. PyTorch搭建CNN-LSTM混合模型实现多变量多步长时间序列预测(负荷预测)

这篇文章是CNN-LSTM混合模型时间序列预测的示例。

具体使用方法:利用pycharm或者其他IDE打开压缩包中的CNN-Speed-Forecasting项目,如下所示:
在这里插入图片描述
然后打开并运行main.py文件即可。

如果需要使用自己的数据集,只需将data文件夹下的data.csv替换为自己的csv文件,然后更改get_data.py的相关方法,更改方法同前面多变量多步长预测。

在这里插入图片描述
这里对部分参数做下解释(其他参数的解释见前面):

  1. in_channels:CNN的输入通道数,与前面讲的input_size是一回事。
  2. out_channels:CNN的输出通道数。

其他参数的更改请参考前面对args中参数的讲解

16. PyTorch搭建Transformer实现多变量多步长时间序列预测(负荷预测)

这篇文章是Transformer时间序列预测的示例。

具体使用方法:利用pycharm或者其他IDE打开压缩包中的Transformer-Timeseries-Forecasting项目,如下所示:
在这里插入图片描述
然后打开并运行main.py文件即可。

如果需要使用自己的数据集,只需将data文件夹下的data.csv替换为自己的csv文件,然后更改get_data.py的相关方法。
在这里插入图片描述
d_model的意思请参考transformer时序预测那篇文章。

其他参数的更改请参考前面对args中参数的讲解

TensorFlow代码的整体结构与使用方法与PyTorch几乎一模一样,因此就不再详细介绍。

源码获取

后面将陆续公开~


http://chatgpt.dhexx.cn/article/NkTbwLx4.shtml

相关文章

4大类11种常见的时间序列预测方法总结和代码示例

本篇文章将总结时间序列预测方法,并将所有方法分类介绍并提供相应的python代码示例,以下是本文将要介绍的方法列表: 1、使用平滑技术进行时间序列预测 指数平滑Holt-Winters 法 2、单变量时间序列预测 自回归 (AR)移动平均模型 (MA)自回归…

【深度学习时间序列预测案例】零基础入门经典深度学习时间序列预测项目实战(附代码+数据集+原理介绍)

🚨注意🚨:最近经粉丝反馈,发现有些订阅者将此专栏内容进行二次售卖,特在此声明,本专栏内容仅供学习,不得以任何方式进行售卖,未经作者许可不得对本专栏内容行使发表权、署名权、修改…

如何理解vcc,vdd,vss

常见解释 VCC: Ccircuit 表示电路的意思, 即接入电路的电压 VDD:Ddevice 表示器件的意思, 即器件内部的工作电压 VSS: Sseries 表示公共连接的意思,通常指电路公共接地端电压 个人理解 VCC :双极器件的正,一…

VCC,GND,VSS,VDD的理解

Definition: VCC:Ccircuit 表示电路的意思, 即接入电路的电压。 GND:在电路里常被定为电压参考基点。 VDD:Ddevice 表示器件的意思, 即器件内部的工作电压 VSS:Sseries 表示公共连接的意思,通常指电路公共接…

VCS简介

1.2.1 关于VCS VCS是Verilog Compiled Simulator的缩写。VCS MX是一个编译型的代码仿真器。它使你能够分析,编译和仿真Verilog,VHDL,混合HDL,SystemVerilog,OpenVera和SystemC描述的设计。 它还为您提供了一系列仿真和…

VCC、VDD、VSS以及VBAT的区别

在STM32 的学习中,发现有几种看起来相关的名称,分别是VCC、VDD、VSS、VBAT,在经过搜索查找之后,总结如下: 1.VCC的C是Circuit的意思,是指整个供电回路的电压, 也有人说VCC是双极器件的正极 2.VDD的D是Dev…

Vcc、Vee、Vdd、Vss傻傻分不清楚?

Vcc、Vee、Vdd、Vss傻傻分不清楚? 以下内容源于网络。 电源 左边两个符号均表示电池类直流电源,左边第一个表示电池组,第二个表示单电池。这些符号不一定总是带有 和 - 号。左边第三个(带 和 - 的圆圈符号)表示非电…

semi-supervised classification

半监督学习任务主要分为半监督聚类、半监督分类、半监督回归等问题,我们主要针对半监督分类问题。 半监督学习的假设 基于低密度假设 模型的决策边界不应该将该密度区域划分开,而应该处在低密度区域内。基于平滑化假设 输入空间中&#xf…

Weakly-Supervised Semantic Segmentation via Sub-category Exploration

Weakly-Supervised Semantic Segmentation via Sub-category Exploration Abstract问题 1.Introduction2. Related Work2.1weakly-supervised semantic segmentation(WSSS)弱监督语义分割的初始预测。---Initial Prediction for WSSS.2.2 、Response Refinement for WSSS&#…

Scribble-Supervised Medical Image Segmentation

Scribble-Supervised Medical Image Segmentation via Dual-Branch Network and Dynamically Mixed Pseudo Labels Supervision 摘要 采用草率的分割标注心脏分割双分枝网络:一个编码器,两个解码器动态结合两个解码器的输出伪标签 方法 模型结构 Lpce…

Learning Affinity from Attention End-to-End Weakly-Supervised Semantic Segmentation withTransformers

Learning Affinity from Attention: End-to-End Weakly-Supervised Semantic Segmentation with Transformers 来源:CVPR 2022,武汉大学、京东、悉尼大学 导言 本文是一篇做自然图像弱监督语义分割的论文,利用图像级的类别标签来实现像素级…

Token Contrast for Weakly-Supervised Semantic Segmentation

文章来源:[CVPR2023] Keywords:Weakly-Supervised Semantic Segmentation(WSSS);over-smoothing; ViT 一、本文提出的问题以及解决方案: 本文解决了over-smoothing问题,该问题其实是在之前的GCN网络中提出…

Self-supervised Learning整理

Self-supervised Learning Pre-train Fine-tune Pre-train Fine-tune算是一种Transfer Learning。 首先,假设按照SimCLR中的设定,将一般的模型分为两部分,分别为Encoder和Projection Head。Encoder结构类似于AutoEncoder中的Encoder部分&a…

Supervised Discrete Hashing

Supervised Discrete Hashing 2015 CVPR 问题: 处理施加在追踪的哈希码上的离散约束,使哈希优化具有挑战性(通常是NP- hard)。 解决: 提出了一个新的监督哈希框架,其中的学习目标是生成最优的二进制哈希码用于线性分类。 通过引…

NetVLAD: CNN architecture for weakly supervised place recognition

背景知识: Vector of Locally Aggregated Descriptors(VLAD)image retrieval. 【CC】是广泛使用的图像提取方式,本文是在在这个提取器上做改进;具体是啥下面有介绍 weakly supervised ranking loss 【CC】本文的另外…

Self-Supervised Difference Detection for Weakly-Supervised Semantic Segmentation

Self-Supervised Difference Detection for Weakly-Supervised Semantic Segmentation 摘要1. Introduction2. Related Works3. Method3.1. Difference detection network3.2. Self-supervised difference detection module 论文地址 这篇论文原文的定义实在是太混乱了&#xf…

Unified Deep Supervised Domain Adaptation and Generalization

论文概述 问题研究背景:supervised domain adaptation(SDA),源域有大量带标签的数据,目标域仅有少量可使用的数据 问题的难点:目标域数据不足导致概率分布在语义上很难对齐和区分。对齐指的是源域图片类别之间的关系与目标域图片…

Self-supervised Video Transformer 阅读

目录 1.介绍2.SVT2.1 SVT结构2.2 自监督训练Motion CorrespondencesCross-View Correspondences 2.3 SVT loss 1.介绍 本文是针对video transformer进行自监督训练,从一个给定的视频中,创建具有不同空间大小和帧率的局部和全局时空视图,自监…

最简单的self-supervised方法

从Kaiming的MoCo和Hinton组Chen Ting的SimCLR开始,自监督学习(SSL)成了计算机视觉的热潮显学。凡是大佬大组(Kaiming, VGG,MMLAB等),近两年都是搞了几个自监督方法的。从一开始的新奇兴奋地看着…