操作指南
使用 scikit-learn pipelines
利用 scikit-learn 的可组合性将管道定义为模型
mlforecast 将 scikit-learn 评估器作为模型,这意味着您可以提供 scikit-learn 的 pipelines 作为模型,以便在将数据传递给模型之前对其应用进一步的转换。
数据设置
unique_id | ds | y | |
---|---|---|---|
0 | id_0 | 2000-01-01 | 0.428973 |
1 | id_0 | 2000-01-02 | 1.423626 |
2 | id_0 | 2000-01-03 | 2.311782 |
3 | id_0 | 2000-01-04 | 3.192191 |
4 | id_0 | 2000-01-05 | 4.148767 |
Pipelines 定义
假设您想使用一个线性回归模型,其中以 lag1 和星期几作为特征。mlforecast 将星期几作为一个单列返回,然而,这对于线性回归模型来说不是最优格式,因为它从为每个星期几设置指示符列中获益更多(删除一个以避免共线性)。我们可以通过使用 scikit-learn 的 OneHotEncoder 来实现这一点,然后拟合我们的线性回归模型,我们可以通过以下方式完成
lag1 | dayofweek | |
---|---|---|
1 | 0.428973 | 6 |
2 | 1.423626 | 0 |
3 | 2.311782 | 1 |
4 | 3.192191 | 2 |
5 | 4.148767 | 3 |
这就是将传递给我们的模型的数据,因此我们想获取 dayofweek
列并执行独热编码,同时保持 lag1
列不变。我们可以通过以下方式实现这一点
我们可以看到我们的数据现在有 7 列,1 列用于 lag,加上 6 列用于星期几(我们丢弃了第一个)。
训练
现在我们可以构建一个执行此操作并将数据传递给我们的线性回归模型的管道。
并将其作为模型提供给 mlforecast
预测
最后,我们计算预测结果。
unique_id | ds | ohe_lr | |
---|---|---|---|
0 | id_0 | 2000-08-10 | 4.312748 |
1 | id_1 | 2000-04-07 | 4.537019 |
2 | id_2 | 2000-06-16 | 4.160505 |
3 | id_3 | 2000-08-30 | 3.777040 |
4 | id_4 | 2001-01-08 | 2.676933 |
总结
您可以将复杂的 scikit-learn pipelines 作为模型提供给 mlforecast,这使得您可以根据模型执行不同的转换,并使用任何 scikit-learn 兼容的评估器。