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

第三届世界科学智能大赛新能源赛道:新能源发电功率预测-数据处理心得体会1

看懂数据

比赛数据说明:

文档(报名之后可以下载)大小操作
初赛测试集.zip94MB下载
初赛训练集.zip632MB下载
output.zip145KB下载

任务和主题

AI新能源功率预报:根据历史发电功率数据和对应时段多类别气象预测数据,实现次日零时起到未来24小时逐15分钟级新能源场站发电功率预测。

比赛数据

1.气象数据
比赛输入数据来自三个不同的气象预报数据,数据格式为nc,共8个变量,需要注意气象源NWP_2的变量与另外两个稍有不同。气象变量说明见下文。每个文件是第二天北京时间0点开始的未来24小时气象预报,时间间隔1小时,文件名的日期表示预报发布日期,如20240101.nc是2024年1月1日发布的,对1月2日的预报。每个输入文件有5个维度,time,channel,hour,lat,lon。
time表示数据第一个时刻,为世界时;channel为变量,共8维;hour为从起始时间到预报时间的时间间隔,数值为0~23;lat为纬度,数值从小到大为从北向南排列;lon为经度,数值从小到大为从西向东排列。这里经纬度数值仅代表相对关系,中心点为离场站最近的点。
参赛队伍可以不使用全部气象源的全部变量做为输入。

2.场站实发功率
比赛目标数据来自10个新能源场站的归一化处理后的实发功率,其中包含5个风电场站和5个光伏场站。编号1-5为风电场,6-10为光伏电场。数据时间为北京时间,数据时间间隔为15分钟。需要注意数据中偶有空值、死值等异常值。

气象变量说明:

气象源1(NWP_1)、气象源3(NWP_3): [u100v100t2mtptccsppoaighi], 气象源2(NWP_2): [u100v100t2mtptcc,msl,poai,ghi]

变量描述单位
u100100米高度纬向风m/s(米/秒)
v100100米高度经向风m/s(米/秒)
t2m2米气温K(开尔文)
tp总降水量m(米)
tcc总云量(0 - 1)
sp地面气压Pa(帕斯卡)
poai光伏面板辐照度W/m²(瓦/平方米)
ghi水平面总辐照度W/m²(瓦/平方米)
msl海平面气压Pa(帕斯卡)

初赛训练集和测试集:

数据集时间范围空间范围时间分辨率
TrainA20240101 ~ 20241231场站周边 11x11 个格点1h
TestA20250101 ~ 20250228场站周边 11x11 个格点1h

复赛训练集和测试集:

数据集时间范围空间范围时间分辨率
TrainB20240101 ~ 20250228场站周边 11x11 个格点1h
TestB20250301 ~ 20250430场站周边 11x11 个格点1h

 比赛数据分析

总体思想:结果时序模型输入一般都是 [B* T*feature]三维  ,但是这个拓展了两个维度,把多的这两维处理好就能顺利放入时序模型了 。

1.文件结构 

Input/
├── 1/
│   ├── NWP_1/
│   │   ├── 20240101.nc
│   │   ├── 20240102.nc
│   │   └── ...
│   ├── NWP_2/
│   ├── NWP_3/
├── 2/
├── ...
Output/
├── output1.csv
├── output2.csv

3个气象源

1个站点 - 对应3个不同机构的气象源数据 NWP_1,NWP_2,NWP_3

baseline中只用了NWP_1

我们需要将3个气象源都利用起来

简单办法,把NWP_1,NWP_2,NWP_3 属性都连起来 一个NWP有8个气象特征,

连起来后我们的特征维度8*3=24

5个维度

每个输入文件有5个维度,time,channel,hour,lat,lon

from netCDF4 import Dataset
import numpy as np
import pandas as pdnc_path = "data/初赛训练集/nwp_data_train/1/NWP_1/20240101.nc"
dataset = Dataset(nc_path, mode='r')
dataset.variables.keys()

输出结果 dict_keys(['time', 'channel', 'data', 'lat', 'lon', 'lead_time'])         

time表示数据第一个时刻,为世界时;channel为变量,共8维;hour为从起始时间到预报时间的时间间隔,数值为0~23;lat为纬度,数值从小到大为从北向南排列;lon为经度,数值从小到大为从西向东排列。这里经纬度数值仅代表相对关系,中心点为离场站最近的点。

需要通过

time 起始时间到预报时间间隔

hour = lead_time

data.shape == [1, 8, 24, lat, lon]
                         ^  ^   ^
                          |  |   └── lead_time: 0~23 小时
                          |  └── channel: 8 个变量(如 u100, v100...)
                         └── time: 通常只有 1(仅起始时间)

把channel 和11*11站点数据处理成 2维度

trick:

归一化 Y

对 Y 做归一化(通常归一到 [0, 1])在回归预测任务中是非常常见、有效且标准的做法,尤其是在风电/光伏功率预测这类 尺度不一、目标动态范围大的任务 中,它能带来诸多优势。

原因说明
🎯 稳定模型训练避免目标值过大导致梯度爆炸或收敛缓慢
📏 对抗单位不一致输入是归一化气象数据,Y 不归一会尺度失衡
📉 提高预测精度模型学的是“相对变化”,更好拟合归一化目标
📐 通用性更强方便多场站间 transfer(特别是单位不同的场站)

 实践中常用方法

1. 归一化到 [0, 1]:
y_max = fact_df["value"].max() y = y / y_max

✔️ 最常用!方便训练、预测后乘回来

2. 保存归一化参数用于反归一:
self.y_max = y_max # 推理时: y_pred * y_max 

真实场景中是否有效?

以光伏/风电预测为例:

  • 几乎所有 top 比赛/论文/产品系统都使用 Y 归一化策略

  • 典型例子:阿里天池光伏预测挑战赛、SGCC 风电短期预测项目

总体流程
阶段动作
加载 Y清洗负值,小于阈值置零
拟合 Y归一化到 [0, 1],保存 y_max
推理后模型输出 * y_max,恢复原单位

归一化 Y 是“回归问题中”的行业标准做法,尤其在新能源功率预测任务中对收敛速度和泛化能力都有显著提升效果。

相关文章:

  • 压滤机与锡泥产生效率
  • 解决echarts饼图label显示不全的问题
  • Keil MDK中禁用半主机(No Semihosting)
  • LINUX419 更换仓库(没换成)find命令
  • 深度补全网络:CSPN++ 有哪些开源项目
  • FFUF指南
  • 【langchain4j】Springboot如何接入大模型以及实战开发-AI问答助手(一)
  • C 语 言 --- 指 针 4(习 题)
  • [Java EE] Spring AOP 和 事务
  • 交换网络基础
  • 如何查看HTTP状态码?
  • javaSE.四大函数式接口
  • 【MySQL】SQL语句在MySQL中的执行过程?主要存储引擎区别?
  • 统一设置全局字体后,日志列表的字体变小了,而其他部分字体正常,当不应用他们新增的样式代码时,字体是统一的?
  • BootStrap:进阶使用(其二)
  • 第10期:Classifier-Free Guidance(CFG)——扩散模型的文本引导增强术
  • 玛哈特整平机:工业制造中的关键设备
  • Python遥感开发之Hurst指数的实现
  • Nginx 报错403 排查与解决
  • 多模态大语言模型arxiv论文略读(二十八)
  • 关注“老旧小区加装电梯”等安全隐患,最高检发布相关典型案例
  • 吉林省文联党组书记、主席赵明接受纪律审查和监察调查
  • 西北政法大学推无手机课堂,有学生称要求全交,学校:并非强制
  • 接下来上海很热闹,天后天团轮番来开演唱会
  • 同程旅行斥资24.9亿元收购万达酒管:“看好中国酒店管理市场的增长潜力”
  • 何立峰会见美国英伟达公司总裁黄仁勋:欢迎美资企业深耕中国市场