python - 使用随机森林预测 future 发生的情况

标签 python time-series random-forest forecasting

我目前正在探索使用随机森林来预测事件的 future 值(我的 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 来预测 future 值?我的目标是每周预测发生次数,但我有点不知道如何做到这一点。

如果有人在这方面比我更好、更有经验可以提供帮助,我将不胜感激!谢谢

最佳答案

解决你的第一个问题,随机森林可能倾向于过度拟合,但是在比较测试集的 MAE、MSE、RMSE 时应该检查这一点。你所说的准确度是什么意思?你的R方?然而,使用模型的方法通常是首先让它们过度拟合,这样你就有了不错的准确度/mse/rmse,然后通过设置较高的 min_child_weight 或执行正则化技术来处理这种过度拟合。低 max_depth,高 n_estimators 也不错。

其次,要使用您的模型来预测 future 值,您需要使用与您训练的完全相同的模型以及您想要进行预测的数据集。当然,训练中给出的特征必须与进行预测时给出的输入相匹配。此外,请记住,随着时间的推移,通过将这些新信息添加到您的 train 数据集中,这些新信息对于改进您的模型非常有值(value)。

forecasting = rf.predict(dataset_to_be_forecasted)

关于python - 使用随机森林预测 future 发生的情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59289048/

相关文章:

Python 从另一个文件调用函数

python - 在python中为时间序列图添加趋势线

随机森林(rfsrc 包): multivariate analysis

r - R 中的类概率 randomForest

python - 通过 RTI Connector 将序列/对象发布到 ROS2 应用程序

python - 通过python上传文件到imgur

python - debian jessie 无法安装模块和执行升级

Python 统计模型 : Using SARIMAX with exogenous regressors to get predicted mean and confidence intervals

sql - 计算由特定列分区的先前时间范围内的行

OpenCV迭代随机森林训练