Python基于机器学习模型LightGBM进行水电站流量入库预测项目源码+数据集+模型,含项目报告

本文主要是介绍Python基于机器学习模型LightGBM进行水电站流量入库预测项目源码+数据集+模型,含项目报告,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.前言
该文档主要是介绍通过机器学习模型LightGBM进行水电站流量入库预测。 对于水电站来说,发电是主要经济效益来源,而水就是生产的原料。对进入水电站水库的入库流量进行精准预测,能够帮助水电站对防洪、发电计划调度工作进行合理安排,实现避免洪涝灾害和提升发电经济效益的目的。
在这里插入图片描述

2.目标
基于历史数据和当前观测信息,对电站未来7日入库流量进行预测(每3小时一个预测值,共56个待预测值)。
3.数据解析
竞赛主办方共提供了4类数据,包括历史入库流量数据、环境数据、降雨预报数据以及遥测站降雨观测数据。数据均为时序数据。
其中入库流量数据包含时间和流量两个字段。环境数据提供了温度、风速、方向三个字段。天气预报包含了未来五天的降雨情况。遥测站数据则包括了39个点的降雨量。
初赛提供:2013年-2018年的历史数据
决赛提供:2019年数据
数据维度:3小时为一个粒度点
数据缺失:初赛数据在14年缺少部分数据,决赛未提供18年数据
综上述,经过对数据的了解和分析,影响模型预测主要归纳为一下四个方面:
历史数据存在样本缺失
使用何种模型进行预测,NN还是回归
如何选取、构造特征,使用特征
数据的准确性
4.赛题分析与模型选择
从数据表现来看,是一个完完全全的时序题,针对时序题的做法有很多,找周期拟合、使用NN模型,本人尝试过LSTM、GRU、RNN、CNN等,通过线下拟合,自划分样本进行测试,可以观测到拟合效果非常好
(如图4-1),但是反馈则是,只是存在部分段分数很高,部分分段很低,导致结果评分为BR,模型稳定性差。
遂转换思路,将问题转换成线性拟合问题,将时序数据看成一个单独的点,构造特征将时序保留,进行回归预测,重新构造测试数据,预测的输出作为下一次预测的输入,进行预测。最终选择竞赛界比较通用的LightGBM模型进行线性拟合。得到的表现却是各段分数平平如其,虽然分数较低,但是每一段的偏差相差不大,模型表现较为稳定。相对NN鲁棒性更强,这也是为什么在决赛选择LightGBM的原因。各个特征的重要程度表现如图4-2所示。
在这里插入图片描述

图4-1 cnn-gru拟合
在这里插入图片描述

图4-2 特征重要度
5.方法
数据预处理
将初赛、复赛数据读入,相同类别数据进行concat合并。如历史入库数据。并将时间转换成datetime格式。其他三类数据类似处理。
在这里插入图片描述

特征工程、训练集、测试集构造
1.遥测站数据处理和特征工程
(1)39个遥测站数据直接求和,而且发现遥测站的数据更像是一个类别数据,和QI也存在一定的相关性。
(2)将原始的天数据转换成入库流量一直的时序数据3H粒度数据,方便关联
2.天气预报数据
(1)这里使用的前期预报不是未来五天,而是前三天的一个天气预报作为特征输入。
在这里插入图片描述

3.环境数据
(1)环境数据使用当天数据,考虑到风向数据分布不一致的问题,将其剔除,只是用温度和风速作为特征输入。
4.入流流量数据
(1)历史8个点的时刻数据作为特征输入Q1-Q8
5.保留时序特征
(1)构造年、月、小时、小时IDX特征(保留时序,作为也可以理解为相近数据的权重)
在这里插入图片描述

6.数据构造
按照待预测的时间段进行测试集构造。
在这里插入图片描述

模型构建
这里使用的是五折的交叉验证,对最终结果也是5折之后的平均结果。
在这里插入图片描述

结果预测
对5段结果进行分别预测。每一次的输出作为下一次的输入,进行构造Q1-Q8的特征更新。五段预测方式一致。
在这里插入图片描述
结果提交
将5段结果数据进行拼接,保存至csv进行提交。
在这里插入图片描述

6.总结
从模型表现来看,最终结果五段结果均为负数,但是整体偏差不大,鲁棒性比较强,最终五段的平均在-75左右,其他朋友的模型肯定都比这个模型更加精致,从表现来看,他们在其他几段预测的结果表现都很不错,比这个模型更强,但是在第四段出现了意外,但这也是数据中不可计算的意外。他们的方案更加值得学习,共同进步,共同学习。

完整代码下载地址:水电站入库流量预测

这篇关于Python基于机器学习模型LightGBM进行水电站流量入库预测项目源码+数据集+模型,含项目报告的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/417825

相关文章

Python开发文字版随机事件游戏的项目实例

《Python开发文字版随机事件游戏的项目实例》随机事件游戏是一种通过生成不可预测的事件来增强游戏体验的类型,在这篇博文中,我们将使用Python开发一款文字版随机事件游戏,通过这个项目,读者不仅能够... 目录项目概述2.1 游戏概念2.2 游戏特色2.3 目标玩家群体技术选择与环境准备3.1 开发环境3

Java注解之超越Javadoc的元数据利器详解

《Java注解之超越Javadoc的元数据利器详解》本文将深入探讨Java注解的定义、类型、内置注解、自定义注解、保留策略、实际应用场景及最佳实践,无论是初学者还是资深开发者,都能通过本文了解如何利用... 目录什么是注解?注解的类型内置注编程解自定义注解注解的保留策略实际用例最佳实践总结在 Java 编程

Python中模块graphviz使用入门

《Python中模块graphviz使用入门》graphviz是一个用于创建和操作图形的Python库,本文主要介绍了Python中模块graphviz使用入门,具有一定的参考价值,感兴趣的可以了解一... 目录1.安装2. 基本用法2.1 输出图像格式2.2 图像style设置2.3 属性2.4 子图和聚

Python使用Matplotlib绘制3D曲面图详解

《Python使用Matplotlib绘制3D曲面图详解》:本文主要介绍Python使用Matplotlib绘制3D曲面图,在Python中,使用Matplotlib库绘制3D曲面图可以通过mpl... 目录准备工作绘制简单的 3D 曲面图绘制 3D 曲面图添加线框和透明度控制图形视角Matplotlib

一文教你Python如何快速精准抓取网页数据

《一文教你Python如何快速精准抓取网页数据》这篇文章主要为大家详细介绍了如何利用Python实现快速精准抓取网页数据,文中的示例代码简洁易懂,具有一定的借鉴价值,有需要的小伙伴可以了解下... 目录1. 准备工作2. 基础爬虫实现3. 高级功能扩展3.1 抓取文章详情3.2 保存数据到文件4. 完整示例

使用Python实现IP地址和端口状态检测与监控

《使用Python实现IP地址和端口状态检测与监控》在网络运维和服务器管理中,IP地址和端口的可用性监控是保障业务连续性的基础需求,本文将带你用Python从零打造一个高可用IP监控系统,感兴趣的小伙... 目录概述:为什么需要IP监控系统使用步骤说明1. 环境准备2. 系统部署3. 核心功能配置系统效果展

基于Python打造一个智能单词管理神器

《基于Python打造一个智能单词管理神器》这篇文章主要为大家详细介绍了如何使用Python打造一个智能单词管理神器,从查询到导出的一站式解决,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 项目概述:为什么需要这个工具2. 环境搭建与快速入门2.1 环境要求2.2 首次运行配置3. 核心功能使用指

Python实现微信自动锁定工具

《Python实现微信自动锁定工具》在数字化办公时代,微信已成为职场沟通的重要工具,但临时离开时忘记锁屏可能导致敏感信息泄露,下面我们就来看看如何使用Python打造一个微信自动锁定工具吧... 目录引言:当微信隐私遇到自动化守护效果展示核心功能全景图技术亮点深度解析1. 无操作检测引擎2. 微信路径智能获

使用Java将各种数据写入Excel表格的操作示例

《使用Java将各种数据写入Excel表格的操作示例》在数据处理与管理领域,Excel凭借其强大的功能和广泛的应用,成为了数据存储与展示的重要工具,在Java开发过程中,常常需要将不同类型的数据,本文... 目录前言安装免费Java库1. 写入文本、或数值到 Excel单元格2. 写入数组到 Excel表格

Python中pywin32 常用窗口操作的实现

《Python中pywin32常用窗口操作的实现》本文主要介绍了Python中pywin32常用窗口操作的实现,pywin32主要的作用是供Python开发者快速调用WindowsAPI的一个... 目录获取窗口句柄获取最前端窗口句柄获取指定坐标处的窗口根据窗口的完整标题匹配获取句柄根据窗口的类别匹配获取句