mlforecast
机器学习 🤖 预测
用于时间序列预测的可伸缩机器学习
mlforecast 是一个使用机器学习模型进行时间序列预测的框架,可以选择使用远程集群扩展到海量数据。
安装
PyPI
pip install mlforecast
conda-forge
conda install -c conda-forge mlforecast
有关更详细的说明,请参阅安装页面。
快速入门
通过此快速指南入门。
遵循此端到端演练以了解最佳实践。
视频
示例 Notebook
为什么?
当前的 Python 机器学习模型替代方案速度慢、精度低且伸缩性差。因此,我们创建了一个可在生产环境中用于预测的库。MLForecast
包含高效的特征工程,可训练任何机器学习模型(使用 sklearn
等具有 fit
和 predict
方法的模型)以拟合数百万时间序列。
特性
- Python 中时间序列预测特征工程的最快实现。
- 开箱即用地兼容 pandas、polars、spark、dask 和 ray。
- 使用一致性预测进行概率预测。
- 支持外部变量和静态协变量。
- 熟悉的
sklearn
语法:.fit
和.predict
。
示例和指南
📚 端到端演练:对多个时间序列进行模型训练、评估和选择。
🔎 概率预测:使用一致性预测生成预测区间。
👩🔬 交叉验证:稳健的模型性能评估。
🔌 预测需求峰值:电力负荷预测,用于检测每日峰值并降低电费。
📈 迁移学习:使用一组时间序列预训练模型,然后使用该预训练模型预测另一个时间序列。
🌡️ 分布式训练:使用 Dask、Ray 或 Spark 集群大规模训练模型。
如何使用
以下提供了一个非常基础的概述,有关更详细的说明,请参阅文档。
数据设置
将您的时间序列存储在长格式的 pandas DataFrame 中,即每一行代表特定序列和时间戳的一个观测值。
unique_id | ds | y | static_0 | |
---|---|---|---|---|
0 | id_00 | 2000-01-01 | 17.519167 | 72 |
1 | id_00 | 2000-01-02 | 87.799695 | 72 |
2 | id_00 | 2000-01-03 | 177.442975 | 72 |
3 | id_00 | 2000-01-04 | 232.704110 | 72 |
4 | id_00 | 2000-01-05 | 317.510474 | 72 |
注意:unique_id 用作数据集中每个不同时间序列的标识符。如果您只使用数据集中的单个时间序列,请将此列设置为一个常数值。
模型
接下来定义您的模型,每个模型都将在所有序列上进行训练。这些可以是遵循 scikit-learn API 的任何回归器。
Forecast 对象
现在实例化一个MLForecast
对象,包含您想要使用的模型和特征。特征可以是滞后项、滞后项上的变换和日期特征。您还可以定义在拟合之前应用于目标变量的变换,这些变换将在预测时恢复。
训练
要计算特征并训练模型,请在您的 Forecast
对象上调用 fit
。
预测
要获取未来 n
天的预测结果,请在 forecast 对象上调用 predict(n)
。这将使用递归策略自动处理特征所需的更新。
unique_id | ds | LGBMRegressor | LinearRegression | |
---|---|---|---|---|
0 | id_00 | 2000-04-04 | 299.923771 | 311.432371 |
1 | id_00 | 2000-04-05 | 365.424147 | 379.466214 |
2 | id_00 | 2000-04-06 | 432.562441 | 460.234028 |
3 | id_00 | 2000-04-07 | 495.628000 | 524.278924 |
4 | id_00 | 2000-04-08 | 60.786223 | 79.828767 |
… | … | … | … | … |
275 | id_19 | 2000-03-23 | 36.266780 | 28.333215 |
276 | id_19 | 2000-03-24 | 44.370984 | 33.368228 |
277 | id_19 | 2000-03-25 | 50.746222 | 38.613001 |
278 | id_19 | 2000-03-26 | 58.906524 | 43.447398 |
279 | id_19 | 2000-03-27 | 63.073949 | 48.666783 |