darts
统一 API 调用 50+ 时间序列预测模型,涵盖 ARIMA 到 Chronos 基础模型
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
统一 API 调用 50+ 时间序列预测模型,涵盖 ARIMA 到 Chronos 基础模型
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。

2019 年,瑞士金融科技公司 Unit8 的工程师们在实际业务中遇到了一个痛点:做时间序列预测项目时,每换一种模型就要重写一套代码,从 ARIMA 到 LSTM 再到 Prophet,开发效率极低。他们决定自己动手,写一个统一的 Python 库,让数据科学家用同一套接口调用任意算法——这就是 Darts 的诞生背景。
五年后的今天,Darts 已成为 GitHub 上最受欢迎的时间序列开源库之一,收获近 9400 颗星,被全球数千个团队用于金融、工业、零售、能源等领域的时序分析与预测任务。
传统的时序分析工具往往功能单一:Prophet 适合业务时间序列,statsmodels 擅长统计建模,TensorFlow/PyTorch 能做深度学习——但每学一个工具就多一套 API,模型切换成本极高。Darts 的核心创新正是统一 API 范式:所有模型——无论是最基础的线性回归还是前沿的 Transformer——都遵循 fit() → predict() 模式,和 scikit-learn 一脉相承。
这意味着一个数据科学家学会 Darts 的用法后,理论上可以零成本切换 50+ 种预测模型做效果对比,而无需重新学习每种工具的数据输入格式和调用方法。
Darts 的模型库非常全面,可以分为四大类:
经典统计模型:ARIMA、Exponential Smoothing(ETS)、Theta Method、FFT(快速傅里叶变换)、Auto-ARIMA/Auto-CES/Auto-ETS/Auto-TBATS 等自动参数调优变体,覆盖传统时序分析的精华。
梯度提升类模型:集成 LightGBM、XGBoost、CatBoost 等表格数据利器,支持将时间特征工程后的数据作为特征输入到梯度提升模型中进行预测,适合结构化特征丰富的业务场景。
深度学习模型:RNN、LSTM、GRU、TCN(Temporal Convolutional Network)、N-BEATS、NHiTS、DLinear、NLinear、PatchTST、TFT(Temporal Fusion Transformer)等,实现从卷积到注意力机制的全面覆盖。部分模型支持概率预测(输出置信区间),这对风险管理类业务至关重要。
Foundation Models:集成 Chronos(Amazon 开发的时序基础模型)和 PatchTST Foundation,支持零样本预测(Zero-shot Forecasting)——用户无需任何训练数据,直接用预训练模型对陌生时序做预测,这是时序领域近年最重要的技术突破之一。
Darts 不仅做预测,还内置了强大的异常检测能力。如图所示,其异常检测框架由四个核心模块组成:

这套系统支持两种异常检测范式:PyOD 模型集成(Isolation Forest、One-Class SVM 等 20+ 种算法)和基于预测残差的检测——将任意 Darts 预测模型的预测值与实际值对比,残差超过阈值即标记为异常点。此外,用户还可以将 Kalman Filter、Gaussian Process Filter 等滤波模型封装为异常检测器,实现多模型协同检测。

这种灵活性在实际业务中非常实用。例如在工业 IoT 场景中,设备传感器数据既有周期性规律(适合预测残差法),又存在突发异常(适合 PyOD 的Isolation Forest),Darts 可以在同一流程中组合多种检测策略,输出综合异常评分。
Darts 的易用性是其核心竞争力。以最常见的预测任务为例,整个流程只需三步:
from darts import TimeSeries
import pandas as pd
# 第一步:导入数据(支持 pandas DataFrame)
df = pd.read_csv("AirPassengers.csv", delimiter=",")
series = TimeSeries.from_dataframe(df, "Month", "#Passengers")
# 第二步:选择模型并训练
from darts.models import ExponentialSmoothing
model = ExponentialSmoothing()
model.fit(train)
# 第三步:预测未来
prediction = model.predict(n=36) # 预测未来36个月
即使切换到深度学习模型(如 N-BEATS),也只需改一行模型名称,API 完全一致。Darts 还支持多序列联合训练(一个模型同时学习多条时序的模式)和协变量引入(加入节假日、温度、促销等外部因素提升预测精度),这些在真实业务场景中都是高频需求。
Darts 是一个纯 Python 库,没有 Web 界面,需要通过代码调用。安装方式非常灵活:
| 安装方式 | 命令 | 适用场景 |
|---|---|---|
| 核心库 | pip install darts | 仅需统计模型 |
| + PyTorch | pip install "darts[torch]" | 需要深度学习模型 |
| + 梯度提升 | pip install "darts[notorch]" | 需要 LightGBM/Prophet 等 |
| 全量安装 | pip install "darts[all]" | 全部模型 |
| Conda | conda install -c conda-forge u8darts | conda 环境用户 |
| Docker | docker build . -t darts:latest | 隔离环境快速体验 |
Dockerfile 基于 python:3.12-slim,使用 uv 作为包管理器,构建出的镜像可直接运行 Jupyter Lab 交互式分析。硬件需求方面:核心库仅需 4GB 内存;加入 PyTorch 深度学习模型后,建议配置 8GB+ 显存的 GPU 以获得合理的训练速度。
尽管 Darts 非常强大,也有一些值得注意的局限:
深度学习模型训练速度:在 CPU 上训练 Transformer、N-BEATS 等复杂深度模型非常缓慢,一个中型数据集可能需要数小时。没有 GPU 的用户建议优先使用经典统计模型或 LightGBM 等梯度提升方法。
概率预测覆盖不完整:虽然 Darts 声称支持概率预测,但并非所有模型都实现了这一功能。DeepAR、TFT 等模型支持蒙特卡洛采样生成置信区间,而 ARIMA 等传统模型仅输出点预测。用户在选择模型前需要查阅文档确认。
Prophet 依赖问题:Prophet 模型依赖 Facebook/Meta 早期版本的 Stan,在某些操作系统上安装困难。如果主要使用 Prophet,建议单独安装 Prophet 而非通过 Darts 集成。
Darts 的出现代表了时序分析领域的一个趋势:工具民主化。在 Darts 出现之前,高质量时序预测是一个需要专业知识的领域;现在,任何熟悉 scikit-learn 的数据科学家都能在一天内完成从 ARIMA 到 Transformer 的全模型对比实验。
从开源生态看,Darts 的贡献在于打通了经典统计与现代深度学习的边界——它既保留了 ARIMA、ETS 等经典方法的严谨性,又拥抱了 N-BEATS、Chronos 等前沿模型的强大表达能力。对于需要快速迭代模型的团队,Darts 提供了一个高效实验平台,值得在工具链中占有一席之地。