【发布时间】:2019-12-12 01:48:07
【问题描述】:
我目前正在探索使用随机森林来预测事件的未来值(我的 ARIMA 模型给了我非常糟糕的预测,所以我正在尝试评估其他选项)。我完全清楚,糟糕的结果可能是由于我没有很多数据并且质量不是最好的。我的初始数据仅包含每个日期的出现次数。然后我添加了代表日、月、年、星期几的单独列(后来被单热编码),然后我还添加了两列具有滞后值的列(其中一个是前一天观察到的值,另一个是与两天前观察到的值)。最终数据是这样的:
Count Year Month Day Count-1 Count-2 Friday Monday Saturday Sunday Thursday Tuesday Wednesday
196.0 2017.0 7.0 10.0 196.0 196.0 0 1 0 0 0 0 0
264.0 2017.0 7.0 11.0 196.0 196.0 0 0 0 0 0 1 0
274.0 2017.0 7.0 12.0 264.0 196.0 0 0 0 0 0 0 1
286.0 2017.0 7.0 13.0 274.0 264.0 0 0 0 0 1 0 0
502.0 2017.0 7.0 14.0 286.0 274.0 1 0 0 0 0 0 0
... ... ... ... ... ... ... ... ... ... ... ... ...
然后我训练了一个随机森林,将计数作为标签(我试图预测的内容),其余的都是特征。我还进行了 70/30 的训练/测试拆分。在训练数据上对其进行训练,然后使用测试集对模型进行评估(代码如下):
rf = RandomForestRegressor(n_estimators = 1000, random_state = 42)
rf.fit(train_features, train_labels)
predictions = rf.predict(test_features)
我得到的结果很不错:MAE=1.71,准确率89.84%。
第一个问题:我是否有可能疯狂地过度拟合数据?我只是想确保我没有犯一些大错误,从而给我带来了比我应该得到的更好的结果。
第二个问题:经过训练的模型,我如何使用 RF 来预测未来值?我的目标是每周预测出现次数,但我有点不知道该怎么做。
如果在这方面比我更好、更有经验的人可以提供帮助,我将不胜感激!谢谢
【问题讨论】:
标签: python time-series random-forest forecasting