CEEMDAN +组合预测模型(CNN-Transformer + ARIMA)

往期精彩内容:

时序预测:LSTM、ARIMA、Holt-Winters、SARIMA模型的分析与比较-CSDN博客

风速预测(一)数据集介绍和预处理-CSDN博客

风速预测(二)基于Pytorch的EMD-LSTM模型-CSDN博客

风速预测(三)EMD-LSTM-Attention模型-CSDN博客

风速预测(四)基于Pytorch的EMD-Transformer模型-CSDN博客

风速预测(五)基于Pytorch的EMD-CNN-LSTM模型-CSDN博客

风速预测(六)基于Pytorch的EMD-CNN-GRU并行模型-CSDN博客

CEEMDAN +组合预测模型(BiLSTM-Attention + ARIMA)-CSDN博客

CEEMDAN +组合预测模型(CNN-LSTM + ARIMA)-CSDN博客

CEEMDAN +组合预测模型(Transformer - BiLSTM+ ARIMA)-CSDN博客

前言

本文基于前期介绍的风速数据(文末附数据集),介绍一种综合应用完备集合经验模态分解CEEMDAN与混合预测模型(CNN-Transformer + ARIMA)的方法,以提高时间序列数据的预测性能。该方法的核心是使用CEEMDAN算法对时间序列进行分解,接着利用CNN-Transformer模型和ARIMA模型对分解后的数据进行建模,最终通过集成方法结合两者的预测结果。

风速数据集的详细介绍可以参考下文:

风速预测(一)数据集介绍和预处理-CSDN博客

1 风速数据CEEMDAN分解与可视化

1.1 导入数据

1.2 CEEMDAN分解

根据分解结果看,CEEMDAN一共分解出11个分量,我们大致把前8个高频分量作为CNN-Transformer模型的输入进行预测,后4个低频分量作为ARIMA模型的输入进行预测

2 数据集制作与预处理

划分数据集,按照8:2划分训练集和测试集, 然后再按照前7后4划分分量数据

在处理LSTF问题时,选择合适的窗口大小(window size)是非常关键的。选择合适的窗口大小可以帮助模型更好地捕捉时间序列中的模式和特征,为了提取序列中更长的依赖建模,本文把窗口大小提升到48,运用CCEMDAN-CNN-Transformer模型来充分提取前7个分量序列中的特征信息。

分批保存数据,用于不同模型的预测

3 基于CEEMADN的 CNN-Transformer 模型预测

3.1 定义CEEMDAN-CNN-Transformer预测模型

注意:输入风速数据形状为 [64, 7, 48], batch_size=64,  维度7维代表前7个分量,48代表序列长度(滑动窗口取值)。

3.2 设置参数,训练模型

100个epoch,MSE 为0.0372,CNN-Transformer预测效果良好,适当调整模型参数,还可以进一步提高模型预测表现。

注意调整参数:

  • 可以适当增加CNN层数和隐藏层的维度,微调学习率;

  • 调整Transformer编码器层数和维度数,增加更多的 epoch (注意防止过拟合)

  • 可以改变滑动窗口长度(设置合适的窗口长度)

保存训练结果和预测数据,以便和后面ARIMA模型的结果相组合。

4 基于ARIMA的模型预测

传统时序模型(ARIMA等模型)教程如下:

时序预测:LSTM、ARIMA、Holt-Winters、SARIMA模型的分析与比较_arima、es、holt、holt-winters-CSDN博客

数据加载,训练数据、测试数据分组,四个分量,划分四个数据集

4.1 介绍一个分量预测过程(其他分量类似)

第一步,单位根检验和差分处理

第二步,模型识别,采用AIC指标进行参数选择

第三步,模型预测

第四步,模型评估

保存预测的数据,其他分量预测与上述过程一致,保留最后模型结果即可。

5 结果可视化和模型评估

组合预测,加载各模型的预测结果

5.1 结果可视化

5.2 模型评估

由分量预测结果可见,前7个分量在CNN-LSTM预测模型下拟合效果良好,分量9在ARIMA模型的预测下,拟合程度比较好,其他低频分量拟合效果弱一点,调整参数可增强拟合效果。

代码、数据如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/598464.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

栈的数据结构实验报告

一、实验目的: 1、理解栈的定义; 2、利用栈处理实际问题。 二、实验内容(实验题目与说明) 利用栈实现数据的分类,将输入的整数以奇偶为标准分别存放到两个栈中,并最终从栈1和栈2输出偶数和奇数序列。 …

【卡梅德生物】抗体人源化在肿瘤治疗中的应用

抗体人源化:创新癌症治疗新纪元 抗体人源化技术的崭新应用已在肿瘤治疗领域取得显著进展,为创造更有效、个体化的癌症治疗方案提供了新的可能性。抗体人源化在肿瘤治疗中的应用是生物技术领域一次重要的飞跃,为患者带来了更加安全和精准的治…

原来圣诞树可以这么做

先看结果 从上到下依次是: 2^0 2^1 2^2 2^3 2^4 2^5 2^6 2^7 ... 依次排下去,最后加4个单位数的数字 原来代码的世界里还有这个美。^V^

es相关介绍:yml配置、基础接口及方法介绍

下面是一个示例的 Easy-ES 的 YAML 配置文件: easy-es:enable: trueaddress: 192.168.1.145:9200username: your_usernamepassword: your_passwordconnectionTimeout: 5000socketTimeout: 60000maxRetryTimeout: 30000maxConnTotal: 30maxConnPerRoute: 10requestC…

python基于flask实现一个文本问答系统

from flask import Flask, render_template, requestapp Flask(__name__)# 一个简单的问题-答案映射,实际中可以使用更复杂的存储结构(数据库等) qa_pairs {"什么是人工智能?": "人工智能是模拟人类智能的一种机…

如何实现服务器主动向客户端推送实时数据

当需要实现服务器主动向客户端推送实时数据时,Server-Sent Events(SSE)是一种简单且有效的解决方案。本文将介绍如何使用Server-Sent Events,在后端使用Spring Boot实现,在前端使用Vue 3实现,并提供一个完整…

全志R128系统RTOS使用说明

使用串口访问设备 使用USB TypeC 连接线连接开发板 USB转串口 的接口,安装串口驱动程序:CH341SER.EXE 到设备管理器找到需要的串口,这里是 COM8 使用串口访问工具 PuTTY 打开串口,这里是 COM8,波特率 115200。 打开之后…

求海岸线-dfs

小莱获得了大奖:CM世界中一片 n m n \times m nm 的海域的使用权!这片海域可以看成 n m n \times m nm 的格子。其中每个格子要么是海,要么是岛屿,相邻的岛屿可以相互构成一片大的岛屿(相邻是指上下左右相连&#…

添加一个编辑的小功能(PHP的Laravel)

一个编辑的按钮可以弹出会话框修改断更天数 前台 加一个编辑按钮的样式,他的名字是固定好的 之前有人封装过直接用就好,但是一定放在class里面,不要放在id里面 看见不认识的方法一定要去看里面封装的是什么 之前就是没有看,所以…

CSS学习之-02

position:该属性指定了元素的定位类型 static:默认值,即没有定位,准寻正常的文档流对象,该定位不会受到top、bottom、left、right影响。 fixed:元素的位置相对于浏览器窗口是固定的,即使窗口滚…

吴恩达DeepLearning 2023学习目录

课程链接:https://space.bilibili.com/253734135/channel/collectiondetail?sid2022897 笔记下载:https://github.com/QueenJuliaZxx/deeplearning_ai_books L1 神经网络和深度学习 第一周 深度学习概论: 学习驱动神经网络兴起的主要技术趋…

如果PostgreSQL有两层nginx代理,会发生什么事?

转载说明:如果您喜欢这篇文章并打算转载它,请私信作者取得授权。感谢您喜爱本文,请文明转载,谢谢。 1. 前言 PostgreSQL默认只能本机连接,若要在别的客户端远程连接pgsql,则需要修改配置文件pg_hba.conf&a…

Flutter中的StatelessWidget和StatefulWidget简介与使用

Flutter是一款流行的跨平台移动应用开发框架,它使用Dart语言编写。在Flutter中,StatelessWidget和StatefulWidget是两个重要的概念,用于构建用户界面。 1. StatelessWidget 什么是StatelessWidget? StatelessWidget是Flutter中…

如何将ElementUI组件库中的时间控件迁移到帆软报表中

需求:需要将ElementUI组件库中的时间控件迁移到帆软报表中,具体为普通报表的参数面板中,填报报表的组件中,决策报表的组件与参数面板中。 这三个场景中分别需要用到帆软报表二开平台的ParameterWidgetOptionProvider,FormWidgetOptionProvider,CellWidgetOptionProvider开…

无心剑小诗《银婚颂》

银婚颂 二十五个春秋共一轮 你是岁月赠予我最亮的星辰 从青春燃烧到岁月沉稳 你的笑颜,我永恒的晨昏 春花烂漫是你眼里的璀璨 夏日蝉鸣是彼此故事的和弦 秋叶纷飞诉说漫天情缘 冬雪纯洁见证温暖的牵绊 月光洒满每段共享小径 星光点染每个深情的夜晚 风雨同舟铸就铜墙铁壁 携…

书生·浦语大模型实战1

书生浦语大模型全链路开源体系 视频链接:书生浦语大模型全链路开源体系_哔哩哔哩_bilibili 大模型之所以能收到这么高的关注度,一个重要原因是大模型是发展通用人工智能的重要途径 深度信念网络: (1)又被称为贝叶斯网…

科技助力教育:数字化如何改变家校社协同育人?

近年来,随着社会的快速发展,教育的责任已不再仅局限于学校。家庭、学校和社会协同育人理念,正成为促进教育高质量发展的关键要素。 2023年初,教育部等十三部门联合印发《关于健全学校家庭社会协同育人机制的意见》,提出到“十四五”时期末,形成更加完善的由“学校积极主导、家…

Elasticsearch零基础实战

分享后可优化点(待完成) java es8 查询如何打印查询入参 ?(直接执行的json) es自定义分词器 如何实现? kibana 监控jvm分子分母是什么 ? es如何 改索引结构? 修改数据原理 分享…

【动态规划】C++算法:115.不同的子序列

作者推荐 【动态规划】【字符串】扰乱字符串 本文涉及的基础知识点 动态规划 LeetCode115 不同的子序列 给你两个字符串 s 和 t ,统计并返回在 s 的 子序列 中 t 出现的个数,结果需要对 109 7 取模。 示例 1: 输入:s “rab…

Baumer工业相机堡盟工业相机如何通过NEOAPI SDK设置相机本身的数据保存(CustomData)功能(C++)

Baumer工业相机堡盟工业相机如何通过NEOAPI SDK设置相机本身的数据保存(CustomData)功能(C) Baumer工业相机Baumer工业相机的数据保存(CustomData)功能的技术背景CameraExplorer如何使用图像剪切&#xff0…