Datawhale AI春训营】AI + 新能源(发电功率预测)Task1

发布于:2025-04-20 ⋅ 阅读:(83) ⋅ 点赞:(0)

赛题链接
官网

新能源发电功率预测赛题进阶方案

下面是ai给的一些建议

新能源发电功率预测赛题进阶方案

一、时序特性深度挖掘

1. 多尺度周期特征

# 分钟级周期编码
train['15min_index'] = (train['hour']*4 + train['minute']//15)

# 周周期特征
train['weekday'] = pd.to_datetime(train['date']).dt.weekday

# 傅里叶基函数
from statsmodels.tsa.deterministic import Fourier
fourier = Fourier(order=3, period=24)
fourier_features = fourier.in_sample(train.index)

# 气象指标滞后序列
for lag in [1, 2, 3, 24, 24 * 7]:
    train[f"t2m_lag{lag}"] = train["t2m"].shift(lag)

# 功率自回归特征
train["power_lag96"] = train["power"].shift(96)  # 昨日同时间点

window_sizes = [4, 24, 48]  # 1h/24h/48h窗口
for ws in window_sizes:
    train[f"wind_rolling_mean_{ws}"] = train["wind_speed"].rolling(ws).mean()
    train[f"ghi_rolling_max_{ws}"] = train["ghi"].rolling(ws).max()

二、气象数据增强

# 网格点标准差
train["spatial_std"] = dataset["data"].std(axis=(1,2))

# 梯度计算函数
def calc_gradient(field):
    grad_x = np.gradient(field, axis=1)
    grad_y = np.gradient(field, axis=2)
    return np.sqrt(grad_x**2 + grad_y**2)
   
from pvlib import solarposition
# 太阳位置计算
times = pd.to_datetime(train.index)
solpos = solarposition.get_solarposition(times, 30.6, 114.3)  # 武汉坐标
train["solar_zenith"] = solpos["zenith"]

三、模型架构优化

def split_predict(df):
    # 黎明阶段(5-8点)使用LSTM
    dawn_model = build_lstm(df.between_time('5:00','8:00')) 
    
    # 平稳阶段使用LightGBM
    stable_model = lgb.train(df.between_time('9:00','18:00'))
    
    return combine_predictions(dawn_model, stable_model)
   

网站公告

今日签到

点亮在社区的每一天
去签到