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

基于 CNN-BiLSTM-Attention 的电力变压器油温多元时间序列预测(含详细源码)

基于 CNN-BiLSTM-Attention 的电力变压器油温多元时间序列预测

项目总体预览

./cnn_bilstm_attention_xm/
├── dataset
│   └── ETTh1.csv
├── logs
│   └── log_train.txt
├── predict.py
├── prediction_result.csv
├── readme.md
├── requirements.txt
├── res_imgs
│   ├── all_months_prediction.png
│   ├── attention_weights_2017-07.png
│   └── first_month_prediction.png
├── saved_models
│   ├── attention_model_2018-06.h5
│   ├── cnn_bilstm_attention_2018-06.h5
│   ├── prediction_metrics.csv
│   └── scalers.json
├── tools
│   └── msyh.ttc
└── train.py

一、问题说明

本项目旨在解决多变量时间序列预测任务,基于电力变压器数据集 (ETTh1.csv) 实现变压器油温(OT)及相关变量的预测。该数据集记录了 2016 年 7 月至 2018 年 7 月期间的小时级负载指标和油温数据。

核心目标:利用历史监测数据构建预测模型,实现变压器未来状态的精准预测,为设备运维提供数据支持。

具体要求

  1. 1. 数据处理:采用 Z-score 标准化对数据进行预处理,标准化参数基于2016.7-2017.6的历史数据计算
  2. 2. 预测粒度:使用过去336 小时(14 天) 的数据,预测未来24 小时(1 天) 的数据
  3. 3. 训练策略:实施月度滚动预测机制,从2017.7开始,每月利用截止到上月底的全部历史数据重新训练模型并预测当月数据
  4. 4. 效果评估:采用均方误差(MSE)和平均绝对误差(MAE)作为评估指标,并与 "上一个值" 基线模型进行对比

二、技术实现

1. 数据处理流程

  • • 数据加载与清洗:使用pandas加载 ETTh1.csv 数据,转换时间格式并设置为索引,确保数据频率为小时级
  • • 缺失值处理:采用前向填充(ffill)和后向填充(bfill)相结合的方式处理缺失值
  • • 标准化处理:基于2016.7-2017.6的训练数据计算每个特征的均值和标准差,对全量数据进行 Z-score 标准化,并保存标准化参数用于后续预测

2. 模型架构

项目采用CNN-BiLSTM-Attention混合模型架构,融合了卷积神经网络和循环神经网络的优势:

  • • CNN 特征提取层:通过两层卷积(Conv1D)和池化(MaxPooling1D)操作,提取局部特征模式,将 336 小时序列降维至 84 小时
  • • BiLSTM 层:使用双向 LSTM 网络捕捉时间序列的双向依赖关系,配备 Dropout 层防止过拟合
  • • Attention 机制:通过自定义 Attention 层聚焦历史序列中的关键时间步,提升模型对重要信息的关注度
  • • 输出层:将特征映射到未来 24 小时的多变量预测结果

3. 训练机制

  • • 月度滚动训练:从 2017 年 7 月开始,每月使用截止到上月底的全部历史数据重新训练模型
  • • 数据划分:采用 9:1 的比例划分训练集和验证集,使用早停机制(EarlyStopping)防止过拟合
  • • 模型保存:支持两种保存策略(仅保存最新模型或保留所有月度模型),同时保存注意力权重模型用于可视化分析
  • • 训练参数:批量大小 128,学习率 0.0005,最大迭代 200 轮,采用 Adam 优化器和 MSE 损失函数

4. 预测策略

  • • 滚动预测机制:由于模型单次预测 24 小时,采用自回归(Autoregressive)策略,将前 24 小时的预测结果作为输入一部分,持续预测直至覆盖目标周期
  • • 多步预测实现:通过predict_rolling函数实现任意时长的连续预测,自动处理预测窗口的滑动更新
  • • 结果还原:使用训练阶段保存的标准化参数,将预测结果从标准化尺度转换为原始物理尺度

5. 评估与可视化

  • • 评估指标:计算每个月预测结果的 MSE 和 MAE,并与 "上一个值" 基线模型对比
  • • 可视化内容
    • • 月度注意力权重分布(展示历史序列中各时间步的重要性)
    • • 首个月份预测详情(包含历史窗口、预测窗口、真实值与预测值对比)
    • • 全周期预测总览(展示所有预测月份的模型表现)
    • • 预测结果与历史数据对比图

三、代码结构

train.py

  • • 数据加载、清洗与标准化处理
  • • 自定义 Attention 层实现
  • • CNN-BiLSTM-Attention 模型构建
  • • 月度滚动训练与预测逻辑
  • • 模型保存与评估指标计算
  • • 注意力权重与预测结果可视化

predict.py

  • • 模型与标准化参数加载
  • • 预测数据预处理
  • • 滚动预测函数实现
  • • 预测结果逆标准化转换
  • • 预测结果可视化与保存

四、依赖环境

pandas==1.5.3
numpy==1.23.5
scikit-learn==1.2.2
tensorflow==2.12.0
matplotlib==3.7.1
tqdm

五、如何运行

  1. 1. 环境准备
    ### 构建虚拟环境
    conda create -n tf212 python=3.10
    ### 进入虚拟环境
    conda activate tf212
    ### 安装指定依赖包
    pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
  2. 2. 模型训练
    python train.py

    训练过程将自动执行月度滚动训练,生成模型文件、评估指标和可视化图像

  3. 3. 预测执行
    python predict.py

    加载最新模型(或指定月份模型),基于历史数据预测未来指定小时数的油温,并生成预测结果文件和可视化图像

六、输出说明

  • • 模型文件:保存于saved_models目录,包括月度模型、注意力模型和标准化参数
  • • 评估指标:月度 MSE/MAE 对比表格,保存为prediction_metrics.csv
  • • 可视化结果:保存于res_imgs目录,包括注意力权重图、月度预测示例和全周期预测总览
  • • 预测结果:生成prediction_result.csv,包含预测时间和对应 OT 温度预测值

该项目通过融合多种深度学习技术和严谨的评估机制,实现了变压器油温的精准预测,为电力设备的智能运维提供了有效支持。


源码项目获取说明

下方关注-VX回复关键词【油温多元时间序列预测项目】可查询获取整个项目源码(制作不易,拒绝白嫖),感谢您,祝前程似锦!

http://www.dtcms.com/a/614586.html

相关文章:

  • 长乐区住房和城乡建设局网站有什么好的建站公司
  • 做网站有前途吗东莞市建设局网站首页
  • 律师个人网站模板开发网站的基本流程五个阶段
  • 正则表达式(/g修饰符)踩坑
  • 某空气质量检测平台的爬虫——mitmproxy的简单使用
  • 我市精神文明建设的门户网站小程序有哪些
  • 【开题答辩全过程】以 二手书平台管理系统的设计与实现为例,包含答辩的问题和答案
  • 深入解析:使用 Triton 实现 Flash Attention2 - 让大模型训练飞起来
  • 国内最大的自建站平台设计网站推荐国内
  • 网站用户访问统计软件开发工程师证书有用吗
  • 【对比】Pandas vs Polars:下一代DataFrame库的崛起
  • 阅读:基于深度学习的红外可见光图像融合综述
  • 网站开发北京网站已备案 还不能访问
  • visual stdio 做网站 注册用户 密码必须6位以上莱芜车管所网站
  • 本科[Python方向]毕业设计选题指南
  • 2017二级C语言编译环境配置与使用技巧 | 掌握编译环境,提高编程效率
  • 蓝牙SIG命令初始化流程
  • 网站建设济南网页建设培训机构
  • 【LeetCode】115. 不同的子序列
  • JavaScript实现一个复制函数,兼容旧浏览器
  • 网站开发人员岗位要求wordpress主题安装报错
  • 第38节:WebGL 2.0与Three.js新特性
  • 前端性能监控新方案
  • 网站建设岗位能力评估表深圳网警
  • LlamaIndex PromptTemplate 全面解析
  • 邯郸网站建设优化排名无锡网站推广¥做下拉去118cr
  • 高级语言编译程序 | 深入探讨编译原理及应用领域
  • 网站建设公司杭州18年咸鱼app引导页面设计模板
  • 2025年开源项目
  • 工控人如何做自己的网站怎么利用网站开发app