首先是对赛题要求的理解:初赛要求提交500个充电站点每天的总充电量(power),对数据进行了预处理。使用pandas的groupby()按照站点id_encode和日期ds重新分组,并合并每一组的power。
train_power.groupby(['id_encode','ds'])['power'].sum()
其次是预处理:本次竞赛虽然是时间序列,但根据数据的类型可以得知,可能更适合树模型,因此首选从时序中再次提取新的时序特征,如:季度、月、是否为周末等特征。可以选择使用pandas的to_datetime先将数据集中的时间转化为时间戳,后续
def convert_date(data, column_name, date_format='%Y%m%d'):
data[column_name] = pd.to_datetime(data[column_name], format=date_format)
data["weekday"] = data[column_name].dt.weekday
data["quarter"] = data[column_name].dt.quarter
data["month"] = data[column_name].dt.month
return data
最后按照baseline跑通模型,由于使用lightgbm,数据无须归一化和onehot,直接带入模型即可,得到的结果传后RMSE分数为240.5,另跑了一个随机森林回归模型,融合模型,最后得到分数为234.1,目前排名46
下一步准备按照直播中的方法加入一些外部数据作为特征,以及融合模型,尝试得到更好的结果