一个python库,用于轻松操作和预测时间序列。
项目描述
时间序列在 Python 中变得简单
darts是一个 Python 库,用于轻松操作和预测时间序列。它包含多种模型,从 ARIMA 等经典模型到深度神经网络。这些模型都可以以相同的方式使用,使用fit()
和predict()
功能,类似于 scikit-learn。该库还可以轻松回测模型、组合多个模型的预测以及考虑外部数据。Darts 支持单变量和多变量时间序列和模型。基于 ML 的模型可以在包含多个时间序列的潜在大型数据集上进行训练,其中一些模型为概率预测提供了丰富的支持。
文档
高级介绍
选定主题的文章
快速安装
我们建议首先使用您最喜欢的工具( conda, venv,virtualenv,带或不带virtualenvwrapper )为您的项目设置一个干净的 Python 环境,至少 Python 3.7 。
设置好环境后,您可以使用 pip 安装飞镖:
pip install darts
有关详细信息,您可以参考我们的 安装说明。
示例用法
TimeSeries
从 Pandas DataFrame创建一个对象,并将其拆分为训练/验证系列:
import pandas as pd
from darts import TimeSeries
# Read a pandas DataFrame
df = pd.read_csv('AirPassengers.csv', delimiter=",")
# Create a TimeSeries, specifying the time and value columns
series = TimeSeries.from_dataframe(df, 'Month', '#Passengers')
# Set aside the last 36 months as a validation series
train, val = series[:-36], series[-36:]
拟合指数平滑模型,并对验证系列的持续时间进行(概率)预测:
from darts.models import ExponentialSmoothing
model = ExponentialSmoothing()
model.fit(train)
prediction = model.predict(len(val), num_samples=1000)
绘制中位数、第 5 和第 95 个百分位数:
import matplotlib.pyplot as plt
series.plot()
prediction.plot(label='forecast', low_quantile=0.05, high_quantile=0.95)
plt.legend()
特征
- 预测模型:大量预测模型;从统计模型(如 ARIMA)到深度学习模型(如 N-BEATS)。见下表。_
- 多变量支持:
TimeSeries
可以是多变量的——即,包含多个时变维度而不是单个标量值。许多模型可以消费和生产多变量系列。 - 多系列训练:所有基于机器学习的模型(包括所有神经网络)都支持在多个(可能是多变量)系列上进行训练。这可以扩展到大型数据集。
- 概率支持:
TimeSeries
对象可以(可选地)表示随机时间序列;例如,这可用于获取置信区间,并且许多模型支持不同风格的概率预测(例如估计参数分布或分位数)。 - 过去和未来的协变量支持: Darts 中的许多模型支持过去观察到的和/或未来已知的协变量(外部数据)时间序列作为生成预测的输入。
- 静态协变量支持:除了与时间相关的数据外,
TimeSeries
还可以包含每个维度的静态数据,这些数据可以被某些模型利用。 - 分层协调: Darts 提供了转换器来执行协调。这些可以使预测以尊重底层层次结构的方式相加。
- 回归模型:可以插入任何与 scikit-learn 兼容的模型,以获得作为目标序列和协变量的滞后值的函数的预测。
- 数据处理:可轻松对时间序列数据应用(和还原)常见转换的工具(缩放、填充缺失值、boxcox 等)
- Metrics:用于评估时间序列拟合优度的各种指标;从 R2 分数到平均绝对比例误差。
- 回测:使用移动时间窗口模拟历史预测的实用程序。
- PyTorch Lightning 支持:所有深度学习模型均使用 PyTorch Lightning 实现,支持自定义回调、GPU/TPU 训练和自定义训练器等。
- 过滤模型: Darts 提供了三种过滤模型:
KalmanFilter
、GaussianProcessFilter
和MovingAverage
,它们允许过滤时间序列,并在某些情况下获得基础状态/值的概率推断。 - 数据集该
darts.datasets
子模块包含一些用于快速实验的流行时间序列数据集。
预测模型
以下是目前在 Darts 中实现的预测模型的细分。我们一直在努力带来更多的模型和功能。
模型 | 单变量 | 多变量 | 概率的 | 多系列训练 | 过去观察到的协变量支持 | 未来已知的协变量 | 静态协变量支持 | 参考 |
---|---|---|---|---|---|---|---|---|
ARIMA |
✅ | ✅ | ✅ | |||||
VARIMA |
✅ | ✅ | ✅ | |||||
AutoARIMA |
✅ | ✅ | ||||||
StatsForecastAutoARIMA (更快的 AutoARIMA) |
✅ | ✅ | ✅ | 统计预测 | ||||
ExponentialSmoothing |
✅ | ✅ | ||||||
BATS 和TBATS |
✅ | ✅ | 待定论文 | |||||
Theta 和FourTheta |
✅ | Theta & 4 Theta | ||||||
Prophet (见安装说明) |
✅ | ✅ | ✅ | 先知回购 | ||||
FFT (快速傅里叶变换) |
✅ | |||||||
KalmanForecaster 使用卡尔曼滤波器和 N4SID 进行系统识别 |
✅ | ✅ | ✅ | ✅ | N4SID 纸 | |||
Croston 方法 |
✅ | |||||||
RegressionModel ; 任何 sklearn 回归模型的通用包装器 |
✅ | ✅ | ✅ | ✅ | ✅ | |||
RandomForest |
✅ | ✅ | ✅ | ✅ | ✅ | |||
LinearRegressionModel |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ||
LightGBMModel |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ||
CatBoostModel |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ||
RNNModel (包括 LSTM 和 GRU);相当于概率版本的 DeepAR |
✅ | ✅ | ✅ | ✅ | ✅ | DeepAR论文 | ||
BlockRNNModel (包括 LSTM 和 GRU) |
✅ | ✅ | ✅ | ✅ | ✅ | |||
NBEATSModel |
✅ | ✅ | ✅ | ✅ | ✅ | N-BEATS 纸 | ||
NHiTSModel |
✅ | ✅ | ✅ | ✅ | ✅ | N-HiTS 纸 | ||
TCNModel |
✅ | ✅ | ✅ | ✅ | ✅ | TCN 论文, DeepTCN 论文,博客文章 | ||
TransformerModel |
✅ | ✅ | ✅ | ✅ | ✅ | |||
TFTModel (时间融合变压器) |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | TFT 论文, PyTorch 预测 |
天真的基线 | ✅ |
社区与联系
欢迎任何人加入我们不和谐服务器
Gitter 空间可用于提问、提出建议、讨论用例等。如果您发现错误或有建议,也欢迎 GitHub 问题。
如果您想告诉我们的内容不适合 Discord 或 Github,请随时向我们发送电子邮件至darts@unit8.co飞镖相关事宜或info@unit8.co进行任何其他查询。
贡献
开发正在进行中,我们欢迎在 GitHub 上提出建议、拉取请求和问题。所有贡献者都将在 更改日志页面上得到确认。
在进行贡献(新功能或修复)之前, 请查看我们的贡献指南。
引文
如果您在科学工作中使用 Darts,我们将不胜感激引用以下 JMLR 论文。
中文条目:
@article{JMLR:v23:21-1177,
author = {Julien Herzen and Francesco Lässig and Samuele Giuliano Piazzetta and Thomas Neuer and Léo Tafti and Guillaume Raille and Tomas Van Pottelbergh and Marek Pasieka and Andrzej Skrodzki and Nicolas Huguenin and Maxime Dumonal and Jan Kościsz and Dennis Bader and Frédérick Gusset and Mounir Benheddi and Camila Williamson and Michal Kosinski and Matej Petrik and Gaël Grosch},
title = {Darts: User-Friendly Modern Machine Learning for Time Series},
journal = {Journal of Machine Learning Research},
year = {2022},
volume = {23},
number = {124},
pages = {1-6},
url = {http://jmlr.org/papers/v23/21-1177.html}
}
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分布
内置分布
darts- 0.21.0 -py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f168394df734c5320c0aa1f4dccfe9b6a5b792a199cc4f249d33a686f841029d |
|
MD5 | c8199550243ff44bfdfdca7e2855af81 |
|
布莱克2-256 | 0914b0392c93ea3c476518b99427e9ff768e90b0eedcdb0c00e884de4c7a1bb9 |