从数据探索到模型构建的全流程实践

数据探索
数据观测
我们首先使用netCDF4库读取气象数据:

from netCDF4 import Dataset

nc_path = "data/初赛训练集/nwp_data_train/1/NWP_1/20240101.nc"

dataset = Dataset(nc_path, mode='r')

数据集包含以下关键变量:

channel: 8个气象特征(ghi, poai, sp, t2m, tcc, tp, u100, v100)
data: 维度为(1, 24, 8, 11, 11)的5维数组

数据可视化
通过绘制24小时的特征变化曲线,我们发现了一些有趣的规律:

主要观察:

ghi与poai呈现明显的正相关关系
功率(power)在凌晨时段较高,上午急剧下降
tp(降水)特征呈现单调递增趋势

数据处理
数据降维
将11×11的网格数据降维为单一标量值:

mean_values = np.array([np.mean(data[:, :, i, :, :][0], axis=(1, 2)) 
                 for i in range(8)]).T
1.
2.
时间对齐
气象数据时间精度为小时,而功率数据为15分钟,我们进行了时间对齐处理:

target = target[target['时间'].str.endswith('00:00')]
1.
特征工程
我们创建了两个新特征:

def feature_combine(df):
    df["wind_speed"] = np.sqrt(df['u100']**2 + df['v100']**2)
    df["h"] = df.index % 24  # 小时特征
    return df
1.
2.
3.
4.
这些新特征能够更好地捕捉数据中的物理规律和时间模式。

模型构建
我们采用LightGBM模型,使用5折交叉验证:

复制
def cv_model(clf, train_x, train_y, test_x, seed=2024):
    folds = 5
    kf = KFold(n_splits=folds, shuffle=True, random_state=seed)
    # ...交叉验证实现...
1.
2.
3.
4.
关键参数设置:

params = {
    'boosting_type': 'gbdt',
    'objective': 'regression',
    'metric': 'rmse',
    'num_leaves': 2**8,
    'learning_rate': 0.1,
    # ...其他参数...
}
1.
2.
3.
4.
5.
6.
7.
8.
结果与展望
完整的数据分析流程,还深入理解了特征工程的重要性。未来可以在以下方面继续优化:

尝试更复杂的特征组合
使用深度学习模型进行对比
引入更多外部特征数据

-----------------------------------
©著作权归作者所有:来自51CTO博客作者DeepSeaAI的原创作品,请联系作者获取转载授权,否则将追究法律责任
从数据探索到模型构建的全流程实践
https://blog.51cto.com/yuhaibao324/14679606

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值