赛题链接
官网
新能源发电功率预测赛题进阶方案
下面是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点)使用LSTMdawn_model = build_lstm(df.between_time('5:00','8:00')) # 平稳阶段使用LightGBMstable_model = lgb.train(df.between_time('9:00','18:00'))return combine_predictions(dawn_model, stable_model)