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左右,其他朋友的模型肯定都比这个模型更加精致,从表现来看,他们在其他几段预测的结果表现都很不错,比这个模型更强,但是在第四段出现了意外,但这也是数据中不可计算的意外。他们的方案更加值得学习,共同进步,共同学习。

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

完整的工程项目管理流程是怎么样的?

阅读本文你将了解工程项目管理的完整流程:一、项目启动阶段;二、项目规划阶段;三、项目执行阶段;四、项目收尾阶段;五、项目总结与反馈。 这是一个工程项目管理的完整流程: 项目启动阶段:也就…

Failed to load steamui.dll问题与解决方法详解,3分钟教你修复steamui.dll文件

我们运行Steam客户端时,有时可能会遇到一个错误提示,称为“Failed to load steamui.dll”。这种情况对于任何想要使用Steam服务的玩家来说都是一种麻烦。那么,具体是什么意思呢?出现这个问题的原因又是什么呢?又该如何…

社交电商-揭秘芬香推广挣钱模式^_^

社交电商-揭秘芬香推广挣钱模式^_^ 第一步:下载安装芬香APP 第二步:打开微信小程序 小程序需要我单独微信发你 第三步:输入邀请码(SCT9UA) 邀请码:SCT9UA 第四步:分享芬香APP商品链接 直接点…

RFID解码模块与继电器控制LED灯

RFID解码模块与继电器控制LED灯 简介电气参数功能特征串口通信协议使用步骤总结 简介 REID(Radioa Frequency ldentification)即射频识别技术,是一种通过无线电信号识别目标物的技术。RFID模块是应用于RFID技术的一种设备,它能够实现对物体的识别和跟踪…

中国跨境电商暴露数百万用户隐私数据,部分含身份证照片

近日,据外媒TechCrunch报道称,云安全公司CloudDefense.ai的安全研究员发现,由于一家中国电商店铺的数据库暴露在互联网上,数百万中国公民的隐私数据遭到泄露,这些数据包括了客户送货地址、电话号码、身份证号码及身份证…

IT 论坛测试报告

一、引言 1、项目简介 本项目是一个B/S架构的论坛系统,依托线上平台为用户提供一个便于交流、讨论的场所。该系统使用前后端的设计模式,围绕用户和和帖子两个核心对象进行业务处理,实现了用户注册登录、帖子管理,用户个人中心&a…

可编程交流回馈式负载箱在电源设备中的应用

可编程交流回馈式负载箱可以用于测试电源设备的输出能力,通过在负载箱中设置不同的负载条件,可以模拟不同的工作负载情况,从而测试电源设备在不同负载下的输出能力和稳定性。这对于电源设备的设计和生产非常重要,可以帮助制造商评…

设置定时自动请求测试_自动定时循环发送http_post请求---postman工作笔记001

其实就是创建接口文件夹的时候,有个monitor collection 用来监听接口执行情况,这里就可以设置 可以看到多久执行一次对吧,这里可以设置每几分钟执行一次,一共执行多少次等等 但是这里要说明一下,如果需要使用monitor功能,必须需要登录, 所以如果这里点击monitor collection…

微信开放平台Android平台应用签名怎么填写

winR 输入cmd 进到本地签名文件的目录下 输入 keytool -list -v -keystore <keystore文件路径> -alias <别名>请将 <keystore文件路径> 替换为您的密钥库文件&#xff08;通常是 .jks 或 .keystore 文件&#xff09;的路径&#xff0c;而 <别名> 则是…

【C语法学习】27 - 字符串转换为数字

文章目录 1 atoi()函数1.1 函数原型1.2 参数1.3 返回值1.4 转换机制1.5 示例1.5.1 示例1 1 atoi()函数 1.1 函数原型 atoi()&#xff1a;将str指向的字符串转换为整数&#xff0c;函数原型如下&#xff1a; int atoi(const char *str);1.2 参数 atoi()函数只有一个参数str&…

苹果手机内存满了怎么清理?这里有你想要的答案!

手机内存不足是一个比较普遍的现象。由于现在手机应用程序的功能越来越强大&#xff0c;所以占用的内存也越来越大。同时用户会在手机中存储大量的数据&#xff0c;如照片、视频、文档等&#xff0c;这些都会占用大量的手机空间。那么&#xff0c;苹果手机内存满了怎么清理&…

@JsonCreator和@JsonValue

文章目录 1、正常反序列化的过程2、JsonCreator3、JsonValue4、应用&#xff1a;枚举类中校验传参以及优化前后端数据交互5、补充&#xff1a;ConstructorProperties 1、正常反序列化的过程 反序列化时&#xff0c;默认会调用实体类的无参构造来实例化一个对象&#xff0c;然后…

类加载过程

Java类加载过程包括加载&#xff08;Loading&#xff09;、验证&#xff08;Verification&#xff09;、准备&#xff08;Preparation&#xff09;、解析&#xff08;Resolution&#xff09;、初始化&#xff08;Initialization&#xff09;五个阶段。这些阶段是按照顺序逐步执…

5.3 Windows驱动开发:内核取应用层模块基址

在上一篇文章《内核取ntoskrnl模块基地址》中我们通过调用内核API函数获取到了内核进程ntoskrnl.exe的基址&#xff0c;当在某些场景中&#xff0c;我们不仅需要得到内核的基地址&#xff0c;也需要得到特定进程内某个模块的基地址&#xff0c;显然上篇文章中的方法是做不到的&…

【AI】行业消息精选和分析(11月23日)

今日动态 1、Sam Altman 重掌 CEO&#xff0c;OpenAI 权力斗争正式「落幕」 2、重磅好消息&#xff1a;语音 ChatGPT 现已向全用户开放 3、NVIDIA 与基因泰克合作&#xff0c;利用生成式 AI 加速药物发现 4、 英伟达Q3营收同比增长206%至181亿美元 黄仁勋&#xff1a;生成式AI时…

HarmonyOS ArkTS 应用添加弹窗(八)

概述 在我们日常使用应用的时候&#xff0c;可能会进行一些敏感的操作&#xff0c;比如删除联系人&#xff0c;这时候我们给应用添加弹窗来提示用户是否需要执行该操作&#xff0c;如下图所示&#xff1a; 弹窗是一种模态窗口&#xff0c;通常用来展示用户当前需要的或用户必须…

电商数据采集|电商API接口接入|从京东平台获取商品SKU 主图 价格 详情数据

在进行API开发过程中&#xff0c;数据异常常常令人头痛。我们的API开车软件经过精心设计和测试&#xff0c;能够准确识别并及时处理各类数据异常。拥有稳定的运行环境&#xff0c;保障了您的开发进程不受干扰&#xff0c;让您的工作更加顺畅高效。 京东获得JD商品详情 API 返…

如何判断交流回馈老化测试负载是否合格?

交流回馈老化测试负载是用于模拟实际工作环境中设备运行状态的测试工具&#xff0c;主要用于检测设备的耐久性和稳定性。 负载性能&#xff1a;需要检查负载的性能是否符合设计要求&#xff0c;这包括负载的功率、电流、电压等参数是否在规定的范围内&#xff0c;以及负载的工作…

信号功率放大器的工作原理和特点是什么

信号功率放大器是一种电子设备&#xff0c;用于将输入信号的功率进行放大&#xff0c;以达到所需的输出功率水平。它在各个领域中都有广泛的应用&#xff0c;包括音频放大器、射频放大器、激光功率放大器等。下面将详细介绍信号功率放大器的工作原理和特点。 工作原理&#xff…

什么是高防IP?如何进行防护?怎样隐藏源站?

高防IP是针对互联网服务器遭受大流量的DDoS攻击后导致服务不可用的情况下&#xff0c;推出的付费增值服务&#xff0c;是目前最常用的一种防御DDoS攻击的手段。用户在数据不转移的情况下&#xff0c;就可以通过配置高防IP&#xff0c;将攻击流量引流到高防IP&#xff0c;防护系…