unit8co/darts

A python library for user-friendly forecasting and anomaly detection on time series.

Darts – Python中的时间序列预测与异常检测

简介 – Darts 是一个开源 Python 库,使处理时间序列数据变得简单。它为从经典统计方法(ARIMA、指数平滑)到现代深度学习架构(N-BEATS、TCN、基于 Transformer 的模型)的广泛模型提供了统一的 scikit-learn 风格 API(fit、predict)。它还捆绑了异常检测、回测、概率预测和数据预处理工具。

重要性 – 时间序列分析是许多行业(金融、能源、零售、物联网)的核心问题。Darts 消除了在不同模型族和数据格式之间切换的麻烦,让您可以快速进行原型设计、比较和部署模型,同时还支持多序列训练、协变量、层次协调和保形预测等高级功能。


快速开始(来自 README)

import pandas as pd
from darts import TimeSeries
from darts.models import ExponentialSmoothing

# 将 CSV 加载到 pandas DataFrame
df = pd.read_csv("AirPassengers.csv")
# 转换为 Darts TimeSeries(指定时间和值列)
series = TimeSeries.from_dataframe(df, "Month", "#Passengers")

# 训练/验证分割
train, val = series[:-36], series[-36:]

# 拟合简单的指数平滑模型
model = ExponentialSmoothing()
model.fit(train)
# 对验证期进行概率预测(1000 个样本)
forecast = model.predict(len(val), num_samples=1000)

# 绘制结果
import matplotlib.pyplot as plt
series.plot()
forecast.plot(label="forecast", low_quantile=0.05, high_quantile=0.95)
plt.legend()
plt.show()

核心功能(如 README 所列)

类别 亮点
预测模型 经典(ARIMA、VARIMA、指数平滑)、基线(Naïve、移动平均)、深度学习(N-BEATS、TCN、Transformer、RNN)
多变量支持 TimeSeries 可以包含多个列;许多模型接受多变量输入
全局模型训练 神经网络模型可以同时在数十或数千个序列上进行训练
概率输出 基于样本的预测或参数分布;有利于置信区间
协变量 过去观测、未来已知和静态外部数据可输入模型
异常检测 darts.ad 模块包装了 PyOD 评分器、K-means、分位数检测器和任何预测模型,以生成异常分数
回测与评估 滚动窗口预测工具、一套指标(R²、MASE 等)
可解释性 对兼容模型的 SHAP 解释
层次协调 在预测中强制层次一致性的变换器
集成 PyTorch Lightning 后端、可选的 MLflow 跟踪、Docker 镜像、Conda 包、与 pandas、polars、numpy、pyarrow、xarray 兼容
数据工具 内置数据集、缩放、缺失值处理、差分、Box-Cox 等

典型用例

  • 业务需求预测 – 在许多产品级序列上训练全局模型,纳入价格或促销协变量,获得概率需求区间。
  • 能源负荷/价格预测 – 利用过去天气数据(过去协变量)和已知日历效应(未来协变量)预测电力消耗。
  • 传感器流中的异常检测 – 使用 darts.ad 包装预测模型或 PyOD 检测器,标记分布外行为。
  • 层次规划 – 在 SKU 级别进行预测,然后协调到类别或总销售级别。
  • 研究与教育 – 由于统一 API,可以快速原型化新的时间序列架构。

安装

# 推荐:新的 Python 3.11+ 环境(conda/venv/virtualenv)
pip install darts   # 拉取所有核心依赖

如需 GPU/TPU 支持或更精简的安装,请参阅仓库中的完整 INSTALL.md。


了解更多


TL;DR

Darts 是一个面向生产环境的 Pythonic 工具箱,用于时间序列预测和异常检测。它将经典统计方法和现代深度学习模型统一在单一 scikit-learn 风格的界面下,支持多变量和多序列训练,提供概率输出,并与流行的 ML 工具(PyTorch Lightning、MLflow)集成。非常适合需要将时间数据转化为可靠预测而又无需在多个库之间切换的用户。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目