一、赛事详情
电力需求受到多种因素的影响,为了提高电力需求预测的准确性和可靠性,推动智能电网和可持续能源系统的发展,本场以“电力需求预测”为赛题,给定多个房屋对应电力消耗历史N天的相关序列数据等信息,预测房屋对应电力的消耗。
二、模型选择
根据所提供的数据集以及环境要求,在demo是均值预测法的基础上,我通过查阅资料发现了一种回归模型——随机森林回归模型。该模型应用领域广泛,在金融领域、医疗领域、科学研究等领域都有着不错的反响和应用效果。
随机森林回归模型凭借其高准确性、鲁棒性和易于实现的特点,成为了一种常用的预测模型。但是其也有局限性,模型参数不容易调整,需要经过多次调参测试,但是随着进一步优化可以解决大数据量以及变化幅度大的预测问题。
三、实践思路以及代码展示
1、思路
首先需要提取训练集和需要预测的特征列,这里是“dt”,“type”,然后根据时间的判断条件进一步提取“target”特征列的数值,然后得到测试集对应的特征列,之后如果想要验证结果的准确性,可以从训练集里面通过train_test_split函数提取验证集以及剩下的训练集,最后对剩余的训练集应用随机森林回归模型,最终得到“target”的预测结果并生成对应格式文件。
2、代码展示
# 导入需要的库
import pandas as pd
from sklearn.ensemble import RandomForestRegressor
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
# 读取训练集和测试集数据
train = pd.read_csv('./data/data283931/train.csv')
test = pd.read_csv('./data/data283931/test.csv')
# 提取用于训练和预测的特征列
features = [ 'dt', 'type']
X_train = train[train['dt']<=20][features]
y_train = train[train['dt']<=20]['target']
X_test = test[features]
train_ids = train['id'] # 保留训练集中的id
test_ids = test['id'] # 保留测试集中的id
# 划分训练集和验证集
X_train_split, X_val, y_train_split, y_val = train_test_split(X_train, y_train, test_size=0.1, random_state=42)
# 使用随机森林回归模型
rf = RandomForestRegressor(n_estimators=200, max_depth=5, min_samples_split=7, min_samples_leaf=5,max_features='sqrt', random_state=42)
rf.fit(X_train_split, y_train_split)
# 进行预测
predictions = rf.predict(X_test)
# 在保存预测结果时,将test_ids与预测结果合并
submission = pd.DataFrame({'id': test_ids, 'dt': test['dt'],'target': predictions})
submission.to_csv('submit_rf.csv', index=False)
3、代码实现出现的问题
(1)特征列的选择
首先是提取特征列的时候,我只选了两个,是因为官方一共提供了两个数据集——训练集和测试集。训练集里面共有4个特征列——“id”,“dt”,“type”,“target”,而测试集里面没有“target”这个特征列,代码中的features必须是两者共有的特征列。最后在应用随机森林回归模型的时候,函数rf.fit里面的内容必须是整数,但文件中“id”是字符集,因此没有选择此特征列。如果不嫌麻烦的话也可以通过其他工具重编码,将字符集转化为整数。
(2)参数的调整
此随机森林回归模型中共有6个参数,通过不同参数配置效果也会不同,我首先用默认参数跑了一遍,然后修改参数跑了一遍,对比还是挺明显的,调参是个很困难的过程,需要多次实践测试才能找到合适的值。
4、调参前后分数展示
四、实践感受
虽然相对于官方demo的均值预测法,随机森林回归模型最后得出的成绩并没有提升,但是随机森林回归模型具有更大的潜力,尤其是参数调整上,今天我只是浅浅地尝试了一下,参数的调整方面还有很大可能性。均值法可能是一种更简单更传统的方式,预测模型有很多种,后续我可能会采用不同的预测模型与均值法进行对比,挑选出一个更具性价比的方案进行进一步优化。