Darts 是一个让时间序列预测变得简单且灵活的 Python 库。通过统一的接口,它支持从 ARIMA 等基础模型到 LSTM 和 Transformers 等高级深度学习模型。我们可以使用 Darts 仅需几行代码就能预测销售额、股票价格、能源使用等情况。它还包括用于评估模型、处理多元时间序列以及添加附加特征以提高准确性的工具。
什么是 Darts?
- Darts 是一个专为时间序列预测和分析设计的开源 Python 库。
- 由 Unit8 开发,它提供了一个简单且一致的 API,允许用户应用广泛的预测模型,从 ARIMA 和指数平滑等经典方法到 LSTM、N-BEATS 和 Transformers 等高级深度学习模型。
- Darts 支持单变量和多变量时间序列、概率预测、模型集成、回测甚至自定义模型集成。
- 其直观的设计使其非常适合初学者和专家,旨在以最少的精力构建准确且可扩展的预测解决方案。
主要特性
- 统一的多模型 API: Darts 提供了一致且简单的接口,可以互换使用机器学习和深度学习模型。
- 支持单变量和多变量时间序列: 它处理单个和多个时间相关变量,允许通过附加输入进行更丰富的预测。
- 概率预测: Darts 支持不仅生成点预测,还生成预测区间以捕获不确定性的模型。
- 内置数据集和实用工具: 包括即用型数据集以及用于可视化、预处理和评估的实用函数。
实现步骤
步骤 1:安装 darts 库
使用 pip 安装 u8darts Python 库及其所有可选依赖项。–quiet 标志用于抑制输出。
Python
CODEBLOCK_b79d09ff
步骤 2:加载并准备时间序列数据
将压缩的 CSV 文件 train.csv.zip 读取到 pandas DataFrame 中,并将 date 列解析为 datetime。然后按日期对数据进行排序,以确保时间序列建模的时间顺序。
Python
CODEBLOCK_0b642854
输出:
!DartOutput
步骤 3:创建并绘制时间序列
筛选商店 1 和“GROCERY I”产品系列的 DataFrame,然后使用 date 和 sales 列从筛选后的数据创建 TimeSeries 对象。缺失的日期用频率 D(每天)填充,并绘制系列图。
Python
CODEBLOCK_fca573e2
输出:
!DartOutput
步骤 4:将数据拆分为训练集和验证集
使用 85% 的数据用于训练,其余 15% 用于验证,将时间序列拆分为训练集和验证集。
Python
CODEBLOCK_51e2ff88
步骤 5:使用指数平滑进行训练和预测
初始化一个指数平滑模型,在训练数据上拟合它,并预测与验证集长度相同的值。绘制实际和预测系列进行比较。
Python
CODEBLOCK_169e9f7b
输出:
!DartOutput
步骤 6:评估预测准确性
计算实际验证数据和预测值之间的 平均绝对误差 (MAE),然后打印四舍五入到小数点后两位的误差。
Python
CODEBLOCK_4b66798d
输出:
!DartOutput
应用场景
- 需求预测: Darts 广泛应用于零售和供应链,用于预测商店或仓库层面的产品需求,帮助企业优化库存并减少积压或缺货。
- 金融预测: 在银行和金融领域,Darts 可以预测股票价格、利率或收入。凭借深度学习的支持,它