更新日志¶
我们尽力避免引入破坏性变更,但无法始终保证向后兼容性。可能会 破坏使用Darts先前版本代码 的变更会标记为“🔴”。
未发布¶
对于库的用户:¶
改进
固定
依赖项
对于库的开发者:¶
0.30.0 (2024-06-19)¶
对于库的用户:¶
改进
🚀🚀 所有
GlobalForecastingModel
现在支持使用样本权重进行训练(回归、集成和神经网络模型):#2404,#2410,#2417 和 #2418 由 Anton Ragot 和 Dennis Bader 完成。添加了参数
sample_weight
和val_sample_weight
到fit()
、historical_forecasts()
、backtest()
、residuals
和gridsearch()
,以对训练和评估集中的每个观测值、标签(输出块中的每一步)和目标分量应用权重。支持确定性和概率性模型。样本权重可以是TimeSeries
本身,也可以是内置的权重生成器“线性”和“指数”衰减。如果是TimeSeries
,则与协变量处理方式相同(例如,传递多个权重序列与多个目标序列,相关时间范围的提取会自动处理,…)。您可以在 这里 找到一个示例。
🚀🚀 通过重大重构改进了异常检测模块。重构包括对大多数流程的性能优化、API改进、一致性、可靠性和文档的提升。其中一些必要的更改带来了破坏性变化:#1477 由 Dennis Bader、Samuele Giuliano Piazzetta、Antoine Madrona、Julien Herzen、Julien Adda 完成。
添加了一个 示例笔记本 ,展示了如何使用 Darts 进行时间序列异常检测。
添加了一个新的数据集
TaxiNewYorkDataset
用于异常检测,该数据集包含2014年和2015年纽约的出租车乘客数量。FittableWindowScorer
(KMeans, PyOD, 和 Wasserstein Scorers) 现在接受任何 darts “per-time” 步长指标 作为差异函数diff_fn
。ForecastingAnomalyModel
现在由于优化了历史预测,生成预测(评分器的输入)的速度大大提高。我们还通过所有模型方法中的附加参数增加了对历史预测生成的更多控制。🔴 重大变更:
FittableWindowScorer
(KMeans, PyOD, 和 Wasserstein Scorers) 现在期望diff_fn
是 Darts 的“每时间步”指标之一ForecastingAnomalyModel
:model
现在强制为GlobalForecastingModel
*.eval_accuracy()
: (聚合器, 检测器, 过滤/预测异常模型, 评分器)将方法重命名为
eval_metric()
:参数重命名为
anomalies
,以及pred_scores
*.show_anomalies()
: (过滤/预测异常模型, 评分器)将参数
actual_anomalies
重命名为anomalies
*.fit()
(过滤/预测异常模型)将参数
actual_anomalies
重命名为anomalies
Scorer.*_from_prediction()
(评分器)将方法
eval_accuracy_from_prediction()
重命名为eval_metric_from_prediction()
参数重命名为
series
,以及anomalies
darts.ad.utils.eval_accuracy_from_scores
将函数重命名为
eval_metric_from_scores
参数
actual_anoamlies
已重命名为anomalies
,anomaly_score
已重命名为pred_scores
darts.ad.utils.eval_accuracy_from_binary_prediction
将函数重命名为
eval_metric_from_binary_prediction
参数重命名为
anomalies
,并将binary_pred_anomalies
重命名为pred_anomalies
darts.ad.utils.show_anomalies_from_scores
参数重命名为:
series
改为actual_series
,actual_anomalies
改为anomalies
,model_output
改为pred_series
,anomaly_scores
改为pred_scores
对
TorchForecastingModel
的改进:#2295 由 Bohdan Bilonoh 完成。添加了
dataloader_kwargs
参数到fit*()
、predict*()
和find_lr()
中,以更精细地控制 PyTorchDataLoader
的设置。🔴 从
fit*()
、predict*()
、find_lr()
中移除了参数num_loader_workers
。现在可以通过dataloader_kwargs
字典设置该参数。
对
DataTransformers
的改进:在使用
fit
、fit_transform
、transform
和inverse_transform
处理大量序列时,显著提升了速度。组件掩码逻辑已移入并行化的转换方法中。#2401 由 Dennis Bader 贡献。
对
TimeSeries
的改进:#1477 由 Dennis Bader 完成。新方法
with_times_and_values()
,返回一个带有新时间索引和新值的新序列,但其列和元数据(静态协变量、层次结构)与被调用的序列相同。新方法
slice_intersect_times()
,返回一个序列的切片时间索引,该索引已与另一个序列相交。方法
with_values()
现在也可以作用于类似数组的values
,而不仅仅限于 numpy 数组。
对快速启动笔记本的改进:#2418 由 Dennis Bader 完成。
增加了使用样本权重、预测开始时间偏移、直接似然参数预测的示例。
增强的历史预测、回测和残差的示例。
固定
修复了在使用支持验证系列的
RegressionModel
时,验证集的一个错误:编码器、静态协变量和组件特定的滞后现在正确地应用于验证集。#2383 由 Dennis Bader 提交。修复了一个错误,即
darts.utils.utils.n_steps_between()
在自定义业务频率下无法正常工作。这影响了指标计算。#2357 由 Dennis Bader 提交。修复了在使用
MixedCovariatesTorchModel``(例如 TiDE、N/DLinear 等)调用 ``predict()
时,当n<output_chunk_length
并且传入的系列列表长度len(series) < n
时,预测未能返回正确数量的系列的问题。#2374 由 Dennis Bader 提交。修复了在使用带有状态性torch指标的``TorchForecastingModel``时,指标被错误地计算为非状态性的问题。#2391 由 Tim Rosenflanz 提交
依赖项
我们在所有依赖项迁移之前对
numpy<2.0.0
设置了版本上限。#2413 由 Dennis Bader 提交。
对于库的开发者:¶
依赖项
通过更新的预提交配置改进的代码检查:#2324 由 Jirka Borovec 提交。
通过将
isort
切换到 Ruff 的规则 I,改进了统一的代码检查。#2339 由 Jirka Borovec 提交通过将
pyupgrade
切换到 Ruff 的规则 UP,改进了统一的代码检查。#2340 由 Jirka Borovec 提交CI 的改进,通过 pre-commit 在本地运行 lint 而不是特定的工具。#2327 由 Jirka Borovec 提交
0.29.0 (2024-04-17)¶
对于库的用户:¶
改进
🚀🚀 新预测模型:
TSMixerModel
,如 这篇论文 中所提议。该模型基于MLP,通过堆叠混合层结合时间、静态和横截面特征信息。#2293,由 Dennis Bader 和 Cristof Rojas 贡献。🚀🚀 通过重大重构改进了指标、历史预测、回测和残差。重构包括优化多个流程以及提高一致性、可靠性和文档的改进。其中一些必要的更改是以破坏性变化为代价的。#2284 由 Dennis Bader 完成。
指标:
优化了所有指标,现在对于包含
n
个组件/列的序列,运行速度比以前快 > n * 20 倍。这不仅提升了直接指标计算,还加快了回测和残差计算!新增了新的指标:
时间聚合指标
merr()
(平均误差)时间聚合缩放指标
rmsse()
和msse()
: (根) 均方缩放误差。“每时间步” 指标,返回每个时间步的指标得分:
err()
(误差),ae()
(绝对误差),se()
(平方误差),sle()
(平方对数误差),ase()
(绝对比例误差),sse
(平方比例误差),ape()
(绝对百分比误差),sape()
(对称绝对百分比误差),arre()
(绝对范围相对误差),ql
(分位数损失)
所有缩放指标(
mase()
等)现在接受可以与``pred_series``重叠的``insample``序列(之前它们必须正好在``pred_series``之前一个步骤结束)。Darts 将为您处理正确的时间提取。文档的改进:
在 metrics 文档页面 添加了所有指标的摘要列表。
标准化了每个指标的文档(添加了公式,改进了返回文档,…)
🔴 重大变更:
基于输入
series
的类型和应用的缩减,改进了度量输出的统一性。在某些情况下,输出类型与之前的 Darts 版本相比发生了变化。你可以在 度量 API 文档 中找到详细的描述。将指标参数
reduction
重命名为component_reduction
。将指标参数
inter_reduction
重命名为series_reduction
。quantile_loss()
:重命名为
mql()
(平均分位数损失)。将分位数参数
tau
重命名为q
。该指标现在乘以一个因子
2
以使损失更易于解释(例如,对于q=0.5
,它与MAE
相同)
rho_risk()
:重命名为
qr()
(分位数风险)。将分位数参数
rho
重命名为q
。
缩放指标不再允许在
m=None
的情况下进行季节性推断。使用装饰器
multi_ts_support
和multivariate_support
的自定义指标现在必须作用于多元序列(可能包含缺失值),而不是单变量序列。
历史预测:
🔴 基于输入
series
类型的历史预测输出一致性改进:如果series
是一个序列,历史预测现在将始终返回相同长度的序列/列表(而不是尝试减少为一个TimeSeries
对象)。你可以在 历史预测 API 文档 中找到详细描述。
回测:
现在,指标仅在所有
series
和historical_forecasts
上计算一次,在使用大量series
时显著加快了计算速度。添加了对缩放指标(如
ase
、mase
等)作为metric
的支持。无需额外代码,回测会自动为您提取正确的insample
系列。增加了对通过参数
metric_kwargs
传递额外指标(特定)参数的支持。这允许例如通过n_jobs
并行化指标计算,使用*_reduction
自定义指标缩减,为缩放指标指定季节性m
等。🔴 重大变更:
基于输入类型
series
、historical_forecast
以及应用的回测缩减,改进了回测输出的统一性。在某些情况下,输出类型与之前的 Darts 版本相比发生了变化。你可以在 回测 API 文档 中找到详细的描述。reduction
可调用对象现在对axis=1
而不是axis=0
进行操作,以按系列聚合指标。当用户提供的
historical_forecasts
不符合基于输入series
和last_points_only
值的预期格式时,回测现在将引发错误。
残差:尽管
residuals()
的默认行为保持不变,但该方法现在与backtest()
非常相似,只不过它计算的是historical_forecasts
上任何“按时间步长”的metric
:增加了对多变量
series
的支持。为所有
historical_forecasts()
参数添加了支持,以生成残差计算的历史预测。增加了对预计算历史预测的支持,参数为
historical_forecasts
。增加了对使用Darts的“每时间步”指标计算残差的支
增加了通过参数
metric_kwargs
传递额外指标参数的支持。这允许例如通过n_jobs
并行化指标计算,为缩放指标指定季节性m
等。🔴 基于输入
series
和historical_forecast
的类型,改进了残差输出和一致性。在某些情况下,输出类型与之前的 Darts 版本相比有所变化。您可以在 residuals API 文档 中找到详细描述。
对
TimeSeries
的改进:from_group_dataframe()
现在支持在pandas.DataFrame
组上进行并行创建。这可以通过参数n_jobs
启用。#2292 由 Bohdan Bilonoha 贡献。新方法
slice_intersect_values()
,返回一个序列的切片值,其中时间索引已与另一个序列相交。由 Dennis Bader 在 #2284 中贡献。方法性能提升:
slice_intersect()
,has_same_time_as()
。由 Dennis Bader 在 #2284 中贡献。
改进预测模型:
对
RNNModel
的改进,由 Dennis Bader 在 #2329 中提出:🔴 强制
training_length>input_chunk_length
,因为在训练过程中,如果不这样做,模型在训练时运行的迭代次数将不会与预测时相同。历史预测现在正确推断出未训练和预训练的
RNNModel
的所有可能预测起点。
在执行优化历史预测(``retrain=False``且无自回归)时,为``RegressionModel``添加了进度条,以显示序列级别的进度。#2320 由 Dennis Bader 贡献。
将私有属性
ForecastingModel._is_probabilistic
重命名为公共属性supports_probabilistic_prediction
。#2269 由 Felix Divo 完成。
其他改进:
所有
InvertibleDataTransformer
现在支持对series
进行并行逆变换,其中series
是一个TimeSeries
列表的列表(即Sequence[Sequence[TimeSeries]]
)。这种类型表示在使用last_points_only=False
的情况下,调用historical_forecasts()
时的输出。#2267 由 Alicja Krzeminska-Sciga 贡献。在 Darts 文档中添加了 发布说明。#2333 由 Dennis Bader 提交。
🔴 将工具函数移动到不同位置,以明确区分Darts特定逻辑与非Darts特定逻辑,#2284 由 Dennis Bader 提交
将函数
generate_index()
从darts.utils.timeseries_generation
移动到darts.utils.utils
移动函数
retain_period_common_to_all()
、series2seq()
、seq2series()
、get_single_series()
从darts.utils.utils
到darts.utils.ts_utils
。
固定
修复了在使用特定组件滞后时的特征顺序,使其先按值分组,然后按组件分组(之前是先按组件分组,然后按值分组)。#2272 由 Antoine Madrona 提交。
修复了在使用
TorchForecastingModel
和 pytorch lightning 版本 >= 2.2.0 时,dropout 在训练期间未正确激活的错误。#2312 由 Dennis Bader 完成。修复了在使用未训练的
TorchForecastingModel
进行历史预测并使用协变量时的一个错误,其中历史可预测时间索引的生成没有考虑协变量。#2329 由 Dennis Bader 完成。修复了
quantile_loss
中的一个错误,该错误在所有样本上计算损失,而不是仅在预测的分位数上计算。#2284 由 Dennis Bader 完成。修复了某些用户在导入
LightGBMModel
时遇到的段错误。#2304 由 Dennis Bader 完成。修复了调用
historical_forecasts()
时因_with_sanity_checks
装饰器导致的“意外参数”类型提示警告。现在类型提示已正确配置,以期望任何输入参数并返回执行健全性检查的方法的输出类型。#2286 由 Dennis Bader 提交。
对于库的开发者:¶
通过为
nbsphinx
添加新的依赖lxml_html_clean
修复了文档构建失败的问题。#2303 由 Dennis Bader 完成。将
black
从 24.1.1 升级到 24.3.0。#2308 由 Dennis Bader 完成。将
codecov-action
从 v2 升级到 v4,并在 CI 管道中为 codecov 上传认证添加了 codecov 令牌作为仓库密钥。#2309 和 #2312 由 Dennis Bader 完成。改进了代码检查,从
flake8
切换到 Ruff。#2323 由 Jirka Borovec 提交。
0.28.0 (2024-03-05)¶
对于库的用户:¶
改进
对
GlobalForecastingModel
的改进:🚀🚀🚀 所有全局模型(回归和 torch 模型)现在支持通过模型创建参数
output_chunk_shift
进行偏移预测。这将把训练和预测的输出块向未来偏移output_chunk_shift
步。#2176 由 Dennis Bader 贡献。
对
TimeSeries
的改进,由 Dennis Bader 在 #2196 中完成:🚀🚀🚀 多个
TimeSeries
方法的性能显著提升,使得整个Darts
库的效率得到提高。对于使用“常规”频率(例如每日、每小时等)索引的序列,创建时间最多可加快2倍,而对于使用“特殊”频率(例如“W-MON”等)索引的序列,创建时间可加快100倍以上。影响范围:所有
TimeSeries
创建方法使用整数和时间戳进行切片时的额外提升
通过在整个DataFrame上执行一些繁重的计算,而不是在组级别上迭代执行,为
from_group_dataframe()
提供了额外的提升。
在使用
TimeSeries.from_group_dataframe()
方法时,添加了排除某些group_cols
作为静态协变量的选项,通过参数drop_group_cols
实现。
🚀 新的全局基线模型使用固定的输入和输出块进行预测。这提供了对单变量、多变量、单目标和多目标序列预测、一次性或自回归/移动预测、优化的历史预测、批量预测、从数据集进行预测等的支持。#2261 由 Dennis Bader 贡献。
GlobalNaiveAggregate
: 计算每个目标组件在最近的input_chunk_length
个点上的聚合(使用自定义或内置的torch
函数),并将这些值重复output_chunk_length
次用于预测。根据参数的不同,该模型可以等同于NaiveMean
和NaiveMovingAverage
。GlobalNaiveDrift
: 计算每个目标组件在过去input_chunk_length
个点上的斜率,并在接下来的output_chunk_length
个点上预测趋势。根据参数,该模型可以等同于NaiveDrift
。GlobalNaiveSeasonal
: 获取目标series
结束前第input_chunk_length
个点的目标组件值,并重复该值output_chunk_length
次以进行预测。根据参数,此模型可能等同于NaiveSeasonal
。
对
TorchForecastingModel
的改进:增加了对额外学习率调度器配置参数的支持,以获得更多控制(”interval”、”frequency”、”monitor”、”strict”、”name”)。#2218 由 Dennis Bader 提交。
对
RegressionModel
的改进,由 Antoine Madrona 在 #2246 中提出:添加了一个
get_estimator()
方法以访问底层估计器添加了属性
lagged_label_names
以识别每个估计器的预测步骤和组件更新了
get_multioutout_estimator()
的文档字符串
其他改进:
为
WindowTransformer
和window_transform
添加了keep_names
参数,以指示是否应保留原始组件名称。#2207 由 Antoine Madrona 提供。添加了新的辅助函数
darts.utils.utils.n_steps_between()
,用于高效计算两个点之间的时间步数(周期),给定频率。通过避免使用pd.date_range()
提高了回归模型表格化的效率。#2176 由 Dennis Bader 贡献。🔴 将
ForecastingModel.gridsearch()
中的默认start
值从0.5
改为None
,以使其与historical_forecasts
和其他方法保持一致。#2243 由 Thomas Kientz 贡献。改进
ARIMA
文档:指定了在 statsmodels 中可用的p
、d
、P
、D
、trend
高级选项。增加了对这些参数行为的更多解释。#2142 由 MarcBresson 提交。
固定
修复了在使用
RegressionModel
时,当lags=None
、某些lags_*covariates
以及协变量从第一个可预测时间步或之后开始时,滞后项未从正确索引中提取的错误。#2176 由 Dennis Bader 修复。修复了在具有层次结构的
TimeSeries
上调用window_transform
时的错误。现在,层次结构仅在应用于所有组件的单个变换中保留,否则将被移除。#2207 由 Antoine Madrona 贡献。修复了概率性
LinearRegressionModel.fit()
中的一个错误,其中model
属性没有指向所有底层估计器。#2205 由 Antoine Madrona 提交。当
regression_model
以multi_models=False
创建时,在RegressionEsembleModel
中引发错误(不支持)。#2205 由 Antoine Madrona 提交。修复了
coefficient_of_variation()
中intersect=True
时的错误,该错误导致系数未在交集上计算。#2202 由 Antoine Madrona 提交。修复了
gridsearch()
中use_fitted_values=True
的错误,该错误导致模型未正确实例化以进行健全性检查。#2222 由 Antoine Madrona 提交。修复了
TimeSeries.append/prepend_values()
中的一个错误,该错误导致组件名称和层次结构丢失。#2237 由 Antoine Madrona 提交。修复了
get_multioutput_estimator()
中的一个错误,其中估计器的索引计算不正确。#2246 由 Antoine Madrona 提交。🔴 修复了
datetime_attribute_timeseries()
中的一个错误,该错误导致未正确处理1索引的属性。此外,现在所有生成的编码都强制执行0索引。#2242 由 Antoine Madrona 提交。
依赖项
移除了 PyTorch Lightning 的上限版本 (<=v2.1.2)。#2251 由 Dennis Bader 贡献。
对于库的开发者:¶
使用
pre-commit autoupdate
将预提交钩子更新到最新版本。将pyupgrade
预提交钩子参数更改为--py38-plus
。#2228 由 MarcBresson 提交。将开发依赖项升级至最新版本,#2248 由 Dennis Bader 提交 :
black[jupyter]: 从 22.3.0 到 24.1.1
flake8: 从 4.0.1 到 7.0.0
isort: 从 5.11.5 到 5.13.2
pyupgrade: 从 2.31.0 升级到 v3.15.0
0.27.2 (2024-01-21)¶
对于库的用户:¶
改进
添加了
darts.utils.statistics.plot_ccf
,可用于绘制时间序列(例如目标序列)与另一个时间序列(例如协变量序列)的滞后值之间的互相关。#2122 由 Dennis Bader 贡献。对
TimeSeries
的改进:在使用切片或 pandas DatetimeIndex 作为__getitem__
的键时,改进了时间序列频率推断。#2152 由 DavidKleindienst 完成。
固定
修复了在使用
TorchForecastingModel
并设置use_reversible_instance_norm=True
进行预测时,当n > output_chunk_length
时输入被多次归一化的错误。#2160 由 FourierMourier 提交。
对于库的开发者:¶
0.27.1 (2023-12-10)¶
对于库的用户:¶
改进
🔴 添加了
CustomRNNModule
和CustomBlockRNNModule
用于定义可与RNNModel
和BlockRNNModel
一起使用的自定义 RNN 模块。自定义model
现在必须是这些自定义模块的子类。#2088 由 Dennis Bader 贡献。
固定
修复了历史预测中的一个错误,其中一些
fit/predict_kwargs
没有传递给底层模型的 fit/predict 方法。#2103 由 Dennis Bader 完成。修复了在使用 PyTorch Lightning v<2.0.0 创建
TorchForecastingModel
时出现的导入错误。#2087 由 Eschibli 完成。修复了在使用自定义
model
创建RNNModel
时的错误。#2088 由 Dennis Bader 提交。
对于库的开发者:¶
添加了一个文件夹
docs/generated_api
来定义用于生成文档的自定义 .rst 文件。#2115 由 Dennis Bader 提交。
0.27.0 (2023-11-18)¶
对于库的用户:¶
改进
对
TorchForecastingModel
的改进:🚀🚀 我们优化了
historical_forecasts()
,使得预训练的TorchForecastingModel
运行速度比以前快了20倍(调整批量大小后甚至更快)!。 #2013 由 Dennis Bader 完成。添加了回调
darts.utils.callbacks.TFMProgressBar
以自定义在模型的哪些阶段显示进度条。#2020 由 Dennis Bader 贡献。所有
InferenceDataset
现在支持带参数stride
和bounds
的步幅预测。这些数据集可以与TorchForecastingModel.predict_from_dataset()
一起使用。#2013 由 Dennis Bader 贡献。
对
RegressionModel
的改进:RegressionModels
的新示例笔记本,解释了(组件特定的)滞后、与multi_models
相关的output_chunk_length
、多变量支持等功能。#2039 由 Antoine Madrona 提供。XGBModel
现在利用了 XGBoost 在 2.0.0 版本中发布的原生分位数回归支持,以改进概率预测。#2051 由 Dennis Bader 贡献。
对
LocalForecastingModel
的改进在
ExponentialSmoothing
中添加了可选的关键字参数字典kwargs
,这些参数将被传递给底层statsmodels.tsa.holtwinters.ExponentialSmoothing
模型的构造函数。#2059 由 Antoine Madrona 贡献。
通用模型改进:
新增了
fit_kwargs
和predict_kwargs
参数到historical_forecasts()
、backtest()
和gridsearch()
中,这些参数将被传递给模型的fit()
和/或predict
方法。例如,您现在可以根据模型支持设置批量大小、静态验证序列等。#2050 由 Antoine Madrona 贡献为了透明性,当使用过去协变量进行自回归预测(
n >= output_chunk_length
)时,我们会发出一个(可移除的)警告,以告知用户将访问过去协变量的未来值。#2049 由 Antoine Madrona 提供
其他改进:
在生成/计算节假日和日期时间属性之前,增加了对时间索引时区转换的支持,使用参数
tz
。支持已添加到所有时间轴编码器、独立编码器和预测模型的add_encoders
、时间序列生成实用函数holidays_timeseries()
和datetime_attribute_timeseries()
,以及TimeSeries
方法add_datetime_attribute()
和add_holidays()
。#2054 由 Dennis Bader 贡献。新增数据转换器:
MIDAS
,使用混合数据采样将``TimeSeries``从高频转换为低频(反之亦然)。#1820 由 Boyd Biersteker、Antoine Madrona 和 Dennis Bader 贡献。添加了新数据集
ElectricityConsumptionZurichDataset
: 该数据集包含2015-2022年瑞士苏黎世家庭在不同电网级别的电力消耗数据。我们还添加了苏黎世的天气测量数据,这些数据可以用作建模的协变量。#2039 由 Antoine Madrona 和 Dennis Bader 贡献。调整了示例笔记本,以正确应用数据转换器并避免前瞻性偏差。#2020 由 Samriddhi Singh 完成。
固定
修复了在调用
historical_forecasts()
且overlap_end=False
时,未生成最后一个可能的预测的错误。#2013 由 Dennis Bader 提交。修复了在调用针对具有不同组件特定滞后的
RegressionModel
训练的优化historical_forecasts()
时的一个错误。#2040 由 Antoine Madrona 完成。修复了在使用
RegressionModel
和非均匀间隔频率(例如月初)的序列时使用编码器的错误。在尝试将 pd.Timedelta 除以不明确的频率时,这会在滞后数据创建期间引发错误。#2034 由 Antoine Madrona 提交。修复了加载
TorchForecastingModel
权重时的错误,该模型是在精度不是float64
的情况下训练的。#2046 由 Freddie Hsin-Fu Huang 完成。在
迁移学习
示例笔记本中修复了链接,使用了公开托管的三个数据集版本。#2067 由 Antoine Madrona 完成。修复了在使用
NLinearModel
处理包含协变量的多元序列且normalize=True
时的错误。#2072 由 Antoine Madrona 完成。修复了在使用
DLinearModel
和NLinearModel
处理具有跨组件共享静态协变量的多元序列且use_static_covariates=True
时的错误。#2070 由 Antoine Madrona 完成。
对于库的开发者:¶
无变化。
0.26.0 (2023-09-16)¶
对于库的用户:¶
改进
对
RegressionModel
的改进,由 Antoine Madrona 在 #1962 中提出:🚀🚀 所有模型现在都支持目标、过去和未来协变量序列的组件/列特定滞后。
对
TorchForecastingModel
的改进:🚀 为所有模型(除
RNNModel
外)添加了RINorm``(可逆实例归一化)作为输入归一化选项。通过模型创建参数 ``use_reversible_instance_norm
激活它。#1969 由 Dennis Bader 贡献。🔴 根据模型架构师的建议,为
TiDEModel
添加了过去协变量特征投影功能,并引入了参数temporal_width_past
。参数temporal_width
已重命名为temporal_width_future
。此外,增加了通过设置temporal_width_past/future=0
来绕过特征投影的选项。由 Dennis Bader 在 #1993 中贡献。
对
EnsembleModel
的改进,由 Antoine Madrona 和 Dennis Bader 在 #1815 中完成:🔴 将模型构造函数参数
models
重命名为forecasting_models
。🚀🚀 添加了对预训练的
GlobalForecastingModel
作为forecasting_models
的支持,以避免在集成时重新训练。这要求所有模型都是预训练的全局模型。🚀 增加了对生成
forecasting_model
预测(用于训练集成模型)的支持,使用历史预测而非直接(自回归)预测。在模型创建时通过设置train_using_historical_forecasts=True
来启用。为集成模型添加了一个示例笔记本。
对历史预测、回测和网格搜索的改进,由 Antoine Madrona 在 #1866 中完成。
增加了对负
start
值的支持,以便相对于目标序列的末尾开始历史预测。添加了一个新的参数
start_format
,允许将整数start
用作series
的索引位置或索引值/标签,该series
使用pd.RangeIndex
进行索引。增加了对
TimeSeries
的支持,其RangeIndex
从负整数开始。
其他改进:
减小了 Darts docker 镜像
unit8/darts:latest
的大小,并包含了所有可选模型以及开发需求。#1878 由 Alex Colpitts 完成。在所有模型的docstring中添加了简短的示例,包括协变量的使用和一些模型特定的参数。#1956 由 Antoine Madrona 提交。
添加了方法
TimeSeries.cumsum()
以获取沿时间轴的时间序列的累积和。#1988 由 Eliot Zubkoff 贡献。
固定
修复了在使用
df.columns.name != None
的 pandas.DataFrame 时TimeSeries.from_dataframe()
中的一个错误。#1938 由 Antoine Madrona 完成。修复了在预测模型仅有协变量滞后时,
RegressionEnsembleModel.extreme_lags
中的一个错误。#1942 由 Antoine Madrona 完成。修复了在使用
TFTExplainer
与在 GPU 上运行的TFTModel
时的一个错误。#1949 由 Dennis Bader 完成。修复了
TorchForecastingModel.load_weights()
中的一个错误,该错误在从有效架构加载权重时会引发错误。#1952 由 Antoine Madrona 提交。修复了
NLinearModel
中的一个错误,该错误导致normalize=True
和过去协变量不能同时使用。#1873 由 Eliot Zubkoff 提交。当包含至少一个
LocalForecastingModel
的EnsembleModel
在retrain=False
的情况下调用historical_forecasts
时引发错误。 #1815 由 Antoine Madrona 提交。🔴 在
add_encoders
的“custom”编码器中放弃了对lambda函数的支持,转而使用命名函数,以确保模型可以被导出。#1957 由 Antoine Madrona 提供。
对于库的开发者:¶
改进
重构了所有测试以使用 pytest 代替 unittest。#1950 由 Dennis Bader 完成。
0.25.0 (2023-08-04)¶
对于库的用户:¶
安装
🔴 从PyPI包(
darts
、u8darts
、u8darts[torch]
)和conda-forge包(u8darts
、u8darts-torch
)中移除了Prophet、LightGBM和CatBoost依赖,以避免部分用户遇到的安装问题(如在Apple M1/M2设备上的安装问题等)。由 Julien Herzen 和 Dennis Bader 在 #1589 中完成。模型仍然可以通过按照我们的 安装指南 中描述的方式安装所需的包来获得支持。
Darts 包及其所有依赖项仍然可以通过 PyPI 包
u8darts[all]
或 conda-forge 包u8darts-all
进行安装。添加了新的 PyPI 风格
u8darts[notorch]
,以及 conda-forge 风格u8darts-notorch
,它们等同于旧的u8darts
安装(所有依赖项,除了神经网络)。
🔴 移除了对 Python 3.7 的支持 #1864 由 Dennis Bader 完成。
改进
通用模型改进:
🚀🚀 通过向量化预测,优化了
retrain=False
且forecast_horizon <= output_chunk_length
时的RegressionModel
的historical_forecasts()
。这比以前快了多达700倍!#1885 由 Antoine Madrona 贡献。改进了所有模型的
historical_forecasts()
和backtest()
的效率,对于更多的预测迭代和序列,显著减少了处理时间。#1801 由 Dennis Bader 贡献。🚀🚀 增加了对概率模型直接预测似然参数的支持(适用于回归和torch模型)。在调用
predict()
时设置predict_likelihood_parameters=True
。#1811 由 Antoine Madrona 贡献。🚀🚀 新的预测模型:
TiDEModel
,如 这篇论文 中所提出的。这是一个基于MLP的编码器-解码器模型,据说其性能优于许多基于Transformer的架构。由 Alex Colpitts 在 #1727 中提出。Prophet
现在支持条件性季节性,并且正确处理传递给Prophet.add_seasonality()
和模型创建参数add_seasonalities
的所有参数 #1829 由 Idan Shilon 完成。添加了方法
generate_fit_predict_encodings()
以生成训练和预测所需的编码(从模型创建时的add_encoders
生成)。#1925 由 Dennis Bader 贡献。为所有非深度学习模型的
save()
和load()
函数添加了对PathLike
的支持。#1754 由 Simon Sudrich 贡献。添加了模型属性
ForecastingModel.supports_multivariate
以指示模型是否支持多变量预测。#1848 由 Felix Divo 贡献。
对
EnsembleModel
的改进:模型创建参数
forecasting_models
现在支持LocalForecastingModel
和GlobalForecastingModel
的混合(仅限单个TimeSeries
的训练/推理,由于本地模型)。#1745 由 Antoine Madrona 贡献。现在,即使
forecasting_models
对协变量的支持不同,未来和过去的协变量也可以使用。传递给fit()
/predict()
的协变量仅由支持它的模型使用。#1745 由 Antoine Madrona 贡献。RegressionEnsembleModel
和NaiveEnsembleModel
可以生成概率预测,概率性的forecasting_models
可以被采样以训练regression_model
,更新了文档(堆叠技术)。 #1692 由 Antoine Madrona 提供。
Explainability
模块的改进:🚀🚀 新的预测模型解释器:
TFTExplainer
用于TFTModel
。您现在可以访问和可视化训练模型的特征重要性和自注意力。#1392 由 Sebastian Cattes 和 Dennis Bader 完成。为
ShapeExplainer
添加了静态协变量支持。#1803 由 Anne de Vries 和 Dennis Bader 贡献。
文档改进 #1904 由 Dennis Bader 完成:
在 README.md 中创建了模型部分,通过添加模型链接并将它们重新组织成模型类别,使协变量用户指南和预测模型 API 参考更加用户友好。
添加了动态时间规整(DTW)模块并改进了其外观。
其他改进:
在使用
StaticCovariatesTransformer
和sklearn.preprocessing.OneHotEncoder
时,改进了静态协变量列的命名。#1863 由 Anne de Vries 完成。为
extract_trend_and_seasonality()
添加了MSTL``(使用 LOESS 进行多季节性季节趋势分解)作为 ``method
选项。#1879 由 Alex Colpitts 贡献。新增
RINorm
(可逆实例归一化) 作为TorchForecastingModel
的新输入归一化选项。目前只有TiDEModel
支持它,通过模型创建参数use_reversible_instance_norm
。 #1865 由 Alex Colpitts 贡献。改进了
TimeSeries.plot()
:现在通过参数ax
正确支持自定义轴。现在返回轴以供下游任务使用。#1916 由 Dennis Bader 贡献。
固定
修复了在提供标签前缀时,
TimeSeries.plot()
未考虑原始组件名称的问题。#1783 由 Simon Sudrich 提交。修复了在模型创建时使用类似数组的对象时
ForecastingModel
的字符串表示问题。#1749 由 Antoine Madrona 提交。修复了
TorchForecastingModel.load_from_checkpoint()
未能正确加载损失函数和指标的问题。#1759 由 Antoine Madrona 提交。修复了加载带有编码器或似然的
TorchForecastingModel
权重时的错误。#1744 由 Antoine Madrona 完成。修复了在使用
ShapExplainer
时选择target_components
的错误。#1803 由 Dennis Bader 完成。修复了
TimeSeries.__getitem__()
对于起始值不为0且频率不为1的RangeIndex序列的问题。#1868 由 Dennis Bader 完成。修复了
DTWAlignment.plot_alignment()
无法正确绘制带有 RangeIndex 的序列对齐图的问题。#1880 由 Ahmet Zamanis 和 Dennis Bader 完成。修复了在调用
ARIMA.predict()
且 ``num_samples > 1``(概率预测)时的一个问题,其中模拟的起点没有固定在目标序列的末尾。#1893 由 Dennis Bader 提交。修复了在使用
TFTModel.predict()
并设置full_attention=True
时,注意力掩码未正确应用的问题。#1392 由 Dennis Bader 修复。
对于库的开发者:¶
改进
重构了
ForecastingModelExplainer
和ExplainabilityResult
以简化新解释器的实现。#1392 由 Dennis Bader 完成。已调整所有单元测试以在 M1 设备上成功运行。#1933 由 Dennis Bader 完成。
0.24.0 (2023-04-12)¶
对于库的用户:¶
改进
通用模型改进:
新的基线预测模型
NaiveMovingAverage
。#1557 由 Janek Fidor 提交。来自 Nixtla 的 statsforecasts 库的新模型
StatsForecastAutoCES
和StatsForecastAutoTheta
作为不支持协变量的本地预测模型。AutoTheta 支持概率预测。#1476 由 Boyd Biersteker 贡献。为
StatsForecastAutoETS
添加了对未来协变量和概率预测的支持。#1476 由 Boyd Biersteker 贡献。为
Prophet
添加了对逻辑增长的支持,参数包括growth
、cap
、floor
。由 David Kleindienst 在 #1419 中贡献。改进了模型字符串/对象表示风格,类似于scikit-learn模型。#1590 由 Janek Fidor 完成。
🔴 将
MovingAverage
重命名为MovingAverageFilter
以避免与新的NaiveMovingAverage
模型混淆。#1557 由 Janek Fidor 提交。
对
RegressionModel
的改进:优化了拟合/预测集的滞后数据创建,实现了大幅度的速度提升。#1399 由 Matt Bilton 完成。
为
LightGBMModel
添加了对分类过去/未来/静态协变量的支持,通过模型创建参数categorical_*_covariates
。#1585 由 Rijk van der Meulen 贡献。添加了滞后特征名称以提高可解释性;可通过模型属性
lagged_feature_names
访问。#1679 由 Antoine Madrona 贡献。🔴 所有模型新增
use_static_covariates
选项:当设置为 True(默认)时,模型在拟合时使用静态协变量(如果可用),并确保所有用于训练或预测的目标series
的静态协变量形状相同;当设置为 False 时,模型忽略静态协变量。由 Dennis Bader 在 #1700 中贡献。
对
TorchForecastingModel
的改进:新增方法
load_weights()
和load_weights_from_checkpoint()
用于从手动保存的模型或检查点中仅加载权重。这允许使用不同的优化器或学习率调度器对预训练模型进行微调。#1501 由 Antoine Madrona 提供。新方法
lr_find()
帮助为你的预测问题找到一个好的初始学习率。#1609 由 Levente Szabados 和 Dennis Bader 贡献。改进了 用户指南 并添加了关于保存/加载(检查点、手动保存/加载、仅加载权重)和回调的新章节。#1661 由 Antoine Madrona 完成。
🔴 在保存文件名中用
"_"
替换了":"
以避免在某些操作系统上的问题。对于加载早期 Darts 版本保存的模型,尝试通过将":"
替换为"_"
来重命名文件名。#1501 由 Antoine Madrona 提供。🔴 为
TFTModel
、DLinearModel
和NLinearModel
新增use_static_covariates
选项:当设置为 True(默认)时,模型在拟合时使用静态协变量(如果可用),并确保所有用于训练或预测的目标series
的静态协变量形状一致;当设置为 False 时,模型忽略静态协变量。由 Dennis Bader 在 #1700 中贡献。
对
TimeSeries
的改进:在
from_*
工厂方法中增加了对整数索引输入的支持,如果索引可以转换为 pandas.RangeIndex。#1527 由 Dennis Bader 贡献。增加了对步长(freq)不为1的整数索引输入的支持。#1527 由 Dennis Bader 贡献。
通过
fill_missing_dates=True
优化时间序列创建,实现了大幅速度提升。#1527 由 Dennis Bader 贡献。from_group_dataframe()
现在会在怀疑存在“坏”的时间索引(单调递增)时警告用户。#1628 由 Dennis Bader 提供。
为
WindowTransformer
的转换输出添加了一个参数,以提供自定义函数名称;改进了window
参数的解释。#1676 和 #1666 由 Jing Qiang Goh 提交。在
backtest()
中添加了historical_forecasts
参数,允许使用从historical_forecasts()
预先计算的历史预测。#1597 由 Janek Fidor 贡献。在
ShapExplainabilityResult
中添加了特征值和 SHAP 对象,使用户可以轻松访问所有 SHAP 特定的解释结果。#1545 由 Rijk van der Meulen 贡献。新的
quantile_loss()
(分位数损失) 指标用于概率预测。#1559 由 Janek Fidor 提供。
固定
修复了
BottomUp/TopDownReconciliator
中的一个问题,该问题未考虑序列组件的顺序。#1592 由 David Kleindienst 提交。修复了
DLinearModel
不支持偶数kernel_size
的问题。#1695 由 Antoine Madrona 提交。修复了
RegressionEnsembleModel
在训练期间未使用未来协变量的问题。#1660 由 Rajesh Balakrishnan 提交。修复了
NaiveEnsembleModel
预测未传递序列组件名称的问题。#1602 由 David Kleindienst 完成。修复了
TorchForecastingModel
中的一个问题,该问题阻止了多 GPU 训练的使用。#1509 由 Levente Szabados 完成。修复了当
trend=None
时保存FFT
模型的错误。#1594 由 Antoine Madrona 完成。修复了 PyTorch-Lightning 版本 2.0.0 的一些问题。#1651 由 Dennis Bader 完成。
修复了
QuantileDetector
中的一个错误,该错误在低和高分位数具有相同值时引发错误。#1553 由 Julien Adda 提交。修复了一个阻止
TimeSeries
为空的问题。#1359 由 Antoine Madrona 提交。修复了在多个序列上使用
backtest()
时的问题。#1517 由 Julien Herzen 完成。对
historical_forecasts()
的常规修复修复了
retrain
函数未被正确处理的问题;改进了start
和train_length
参数的处理;通过警告和改进的错误消息提高了可解释性(可以通过show_warnings=False
关闭警告)。由 #1675 由 Antoine Madrona 和 Dennis Bader 完成。修复了多个模型(主要是集成模型和本地模型)中自动
start
不遵守最小所需训练长度的问题。#1616 由 Janek Fidor 和 Dennis Bader 完成。修复了仅使用未来协变量滞后时使用
RegressionModel
的问题。#1685 由 Maxime Dumonal 提交。
对于库的开发者:¶
改进
本地跳过慢速测试的选项:
pytest . --no-cov -m "not slow"
。#1625 由 Blazej Nowicki 提供。对数据转换器进行了重大重构,简化了新转换器的实现。#1409 由 Matt Bilton 完成。
0.23.1 (2023-01-12)¶
补丁发布
固定
修复了
TimeSeries
中的一个问题,使其与 Python 3.7 不兼容。#1449 由 Dennis Bader 完成。修复了在使用
RegressionModel
时,当序列长度不一时静态协变量的问题。#1469 由 Eliane Maalouf 完成。修复了 PyTorch Lightning 训练器处理的问题。#1459 由 Dennis Bader 完成。
修复了
historical_forecasts()
在迭代训练 PyTorch 模型时,而不是从头开始训练的问题。#1465 由 Dennis Bader 提交。修复了在提供
future_covariates
且未指定start
时,historical_forecasts()
在某些情况下无法工作的问题。#1481 由 Maxime Dumonal 提交。修复了整数索引上
slice_n_points
函数的问题。#1482 由 Julien Herzen 提交。
0.23.0 (2022-12-23)¶
对于库的用户:¶
改进
🚀🚀🚀 全新专用于时间序列异常检测的 Darts 模块:
darts.ad
。更多 API 文档信息请访问:https://unit8co.github.io/darts/generated_api/darts.ad.html。#1256 由 Julien Adda 和 Julien Herzen 贡献。新的预测模型:
DLinearModel
和NLinearModel
如 这篇论文 中所提议。#1139 由 Julien Herzen 和 Greg DeVos 贡献。新的预测模型:
XGBModel
实现 XGBoost。#1405 由 Julien Herzen 贡献。所有
RegressionModel
的新multi_models
选项:当设置为 False 时,仅使用一个基础估计器进行多步预测,这可以大幅提高计算效率。#1291 由 Eliane Maalouf 提供。所有 ``RegressionModel``(包括 LightGBM、Catboost、XGBoost、随机森林等)现在支持静态协变量。#1412 由 Eliane Maalouf 贡献。
historical_forecasts()
和backtest()
现在也可以处理多系列数据。#1318 由 Maxime Dumonal 提交。新窗口变换功能:
TimeSeries.window_transform()
和新的WindowTransformer
,允许轻松创建窗口特征。#1269 由 Eliane Maalouf 贡献。🔴 对
TorchForecastingModels
的改进:可以直接将训练在 GPU 上的模型加载到 CPU。减少了保存文件的大小。改进了 PyTorch Lightning Trainer 的处理,修复了几个小问题。移除了已弃用的方法load_model
和save_model
#1371 由 Dennis Bader 完成。编码器改进:通过在模型创建时使用
add_encoders
,为所有支持协变量的模型添加了对编码器的支持。编码器现在为所有模型生成了正确的最小必需协变量时间跨度。#1338 由 Dennis Bader 贡献。darts.datasets
中新增了数据集(ILINetDataset
、ExchangeRateDataset
、TrafficDataset
、WeatherDataset
)`#1298 <https://github.com/unit8co/darts/pull/1298>`_,由 Kamil Wierciak 贡献。#1291,由 Eliane Maalouf 贡献。新的
Diff
转换器,可以进行差异化和“反差异化”操作 #1380 由 Matt Bilton 提供。对 KalmanForecaster 的改进:该模型现在可以接受与用于拟合模型的不同的时间序列进行预测。#1338 由 Dennis Bader 贡献。
回测函数现在可以接受一个度量函数列表 #1333 ,由 Antoine Madrona 提供。
将基线模型扩展到处理多元序列 #1373 由 Błażej Nowicki 完成。
改进
TimeSeries.gaps()
#1265 由 Antoine Madrona 完成。TimeSeries.quantile_timeseries()
方法的加速 #1351 由 @tranquilitysmile 完成。一些难以安装的依赖项(LightGBM、Catboost、XGBoost、Prophet、Statsforecast)不再需要(如果未安装,相应的模型将不可用)`#1360 <https://github.com/unit8co/darts/pull/1360>`_ 由 Antoine Madrona 完成。
移除了
IPython
作为依赖项。#1331 由 Erik Hasse 提交允许创建空的
TimeSeries
#1359 由 Antoine Madrona 完成。
固定
修复了回归模型中ShapExplainer的边缘情况,其中协变量序列 > 目标序列 #1310 由 Rijk van der Meulen 完成
修复了
TimeSeries.resample()
中的一个错误 #1350 由 Antoine Madrona 完成。修复了当分割点不在序列中时的固定分割方法 #1415 由 @DavidKleindienst 完成
修复了
append_values()
和prepend_values()
未能正确扩展RangeIndex
的问题 #1435 由 Matt Bilton 完成。修复了一些时区问题 #1343 由 Antoine Madrona 完成。
在使用
RegressionEnsembleModel
时修复了单个目标系列的一些问题 #1357 由 Dennis Bader 完成。在集成模型中对随机模型的固定处理 #1423 由 Eliane Maalouf 完成。
0.22.0 (2022-10-04)¶
对于库的用户:¶
改进
新的可解释性功能。在
darts.explainability
中的类ShapExplainer
可以提供 Shap 值解释,说明每个滞后项和每个维度在生成RegressionModel
的每个预测滞后项中的重要性。#909 由 Maxime Dumonal 贡献。新模型:
StatsForecastsETS
。与StatsForecastsAutoARIMA
类似,该模型提供了 Nixtla 的statsforecasts
库中的 ETS 模型作为支持未来协变量的本地预测模型。#1171 由 Julien Herzen 贡献。为
residuals()
函数添加了对过去和未来协变量的支持。#1223 由 Eliane Maalouf 贡献。在
ForecastingModel
的historical_forecasts
方法中增加了对每n
次迭代和自定义条件下重新训练模型的支持。#1139 由 Francesco Bruzzesi 完成。在
GaussianLikelihood
中增加了对 beta-NLL 的支持,如 这篇论文 所提议。#1162 由 Julien Herzen 提交。新的 LayerNorm 替代方案,RMSNorm 和 LayerNormNoBias #1113 由 Greg DeVos 提供。
🔴 编码器的改进:改进编码器变换器的拟合行为并解决一些问题。移除对绝对索引编码的支持。#1257 由 Dennis Bader 完成。
为 Catboost 和 LightGBM 覆盖 min_train_series_length #1214 由 Anne de Vries 完成。
新的示例笔记本展示了使用 Optuna 进行超参数优化的端到端示例 #1242 由 Julien Herzen 提供。
关于使用 Optuna 和 Ray Tune 进行超参数优化的新用户指南部分 #1242 由 Julien Herzen 提供。
关于模型保存和加载的文档。 #1210 由 Amadej Kocbek 提供。
🔴
torch_device_str
已从所有 torch 模型中移除,转而使用 Pytorch Lightning 的pl_trainer_kwargs
方法 #1244,由 Greg DeVos 完成。
固定
在
RegressionModel
中,当使用单个目标序列调用 fit/predict 时,add_encoders
存在问题。#1193 由 Dennis Bader 提交。一些与整数索引序列相关的问题。#1191 由 Julien Herzen 提交。
在使用最新版本的 Prophet (>=1.1.1) 时出现的一个错误。#1208 由 Julien Herzen 提交。
在调用
fit_transform()
时出现的问题。#1165 由 Julien Herzen 提交。GaussianLikelihood
对象中的一个错误导致置信区间出现问题。#1162 由 Julien Herzen 修复。一个阻止绘制长度为1的``TimeSeries``的问题。#1206 由 Julien Herzen 解决。
为 ExponentialSmoothing 模型添加类型提示 #1185 由 Rijk van der Meulen 完成
0.21.0 (2022-08-12)¶
对于库的用户:¶
改进
新模型:Catboost,支持
quantile
、poisson
和gaussian
似然。 #1007, #1044 由 Jonas Racine 贡献。扩展了
RegressionModel
的add_encoders
选项。现在可以像 torch 模型一样,直接为这些模型添加基于日历的或自定义的过去或未来协变量。#1093 由 Dennis Bader 贡献。StaticCovariatesTransformer
的介绍,TFTModel
的分类静态协变量支持,静态协变量的示例和用户指南更新。#1081 由 Dennis Bader 提供。ARIMA 和 VARIMA 模型现在支持应用于与训练时使用的新系列不同的系列。#1036 由 Samuele Giuliano Piazzetta 完成。
所有 Darts 预测模型现在都有统一的
save()
和load()
方法。#1070 由 Dustin Brunner 贡献。日志记录的改进。#1034 由 Dustin Brunner 完成。
重新整合 Prophet >= 1.1 到核心依赖中(因为它不再依赖于 PyStan)。#1054 由 Julien Herzen 完成。
新增了
AustralianTourismDataset
。#1141 由 Julien Herzen 贡献。新增了一个展示分层调和的笔记本。#1147 由 Julien Herzen 提交。
在
TimeSeries
中添加了drop_columns()
方法。#1040 由 @shaido987 提供。当不需要类型转换时,加速静态协变量。#1053 由 Julien Herzen 提交。
为 FourTheta 和 Theta 模型实现了 min_train_series_length 方法,当适当的时候,该方法会用 2*seasonal_period 覆盖默认的最小 3 个训练样本。#1101 由 Rijk van der Meulen 完成。
在图表中使默认格式化成为可选。#1056 由 Colin Delahunty <https://github.com/colin99d_> 提交
在
residuals()
方法中引入retrain
选项。#1066 由 Julien Herzen 提交。改进了错误信息。#1066 由 Julien Herzen 完成。
用户指南的可读性改进。#1039, #1046 由 Ryan Russell 完成
固定
修复了加载 torch 预测模型时的错误。#1124 由 Dennis Bader 完成。
🔴 在
TimeSeries.concatenate()
中将ignore_time_axes
重命名为ignore_time_axis
。 #1073 由 Thomas KIENTZ 提交在缺失值填充中传播静态协方差和层次结构。#1076 由 Julien Herzen 提交。
修复了在 NBEATSModel 中使用 num_stacks 而不是 self.num_stacks 的问题。此外,还修正了 API 参考文档中的几个错误。#1103 由 Rijk van der Meulen 提交。
修复了
univariate_component()
方法以传播静态协变量并删除层次结构。#1128 由 Julien Herzen 提交。修复了各种问题。#1106 由 Julien Herzen 完成。
修复了
RNNModel
上的residuals
问题。#1066 由 Julien Herzen 完成。
0.20.0 (2022-06-22)¶
对于库的用户:¶
改进
在
TimeSeries
类中增加了对静态协变量的支持。#966 由 Dennis Bader 提交。在TFT模型中增加了对静态协变量的支持。#966 由 Dennis Bader 提交。
在
TimeSeries
中存储组件的层次结构(考虑到层次化协调)`#1012 <https://github.com/unit8co/darts/pull/1012>`_ 由 Julien Herzen 提供支持。新的预测协调转换器:自底向上、自顶向下和MinT。#1012 由 Julien Herzen 提供。
增加了对蒙特卡洛辍学的支持,作为一种在推理时捕捉torch模型不确定性的方法。#1013 由 Julien Herzen 提供。
新数据集: ETT 和 Electricity。#617 由 Greg DeVos 提供
新数据集, Uber TLC. #1003 由 Greg DeVos 贡献。
模型改进:为 NHiTs 和 NBEATS 添加更改激活函数选项。NBEATS 支持 dropout。NHiTs 支持 AvgPooling1d。#955 由 Greg DeVos 提供。
为基于transformer的模型(transformer和TFT)实现了 “GLU变体改进Transformer”。由 Greg DeVos 在 #959 中实现。
在训练和验证期间增加了对 torch 指标的支持。#996 由 Greg DeVos 贡献。
通过 Dustin Brunner 改进了日志记录 #1010 的处理。
更好地支持 Python 3.10,并移除
prophet
作为依赖项(如果单独安装prophet
包,Prophet
模型仍然有效) #1023 由 Julien Herzen 提供。避免全局matplotlib配置更改的选项。#924 由 Mike Richman 提供。
🔴
HNiTSModel
已重命名为HNiTS
#1000 由 Greg DeVos 完成。
固定
tail()
和head()
的错误 #942 由 Julien Herzen 修复。metric
函数的参数在 gridsearch 和 backtest 中被还原的问题 #989 由 Clara Grotehans 提出。检查全局模型中是否已调用
fit()
的错误 #944 由 Julien Herzen 提交。在较新版本的 sklearn 中发生的 Gaussian Process 过滤器错误 #963 由 Julien Herzen 修复。
对于库的开发者:¶
固定
测试中 LinearLR 调度器的问题。#928 由 Dennis Bader 提交。
0.19.0 (2022-04-13)¶
对于库的用户:¶
改进
新模型:
NHiTS
实现了 N-HiTS 模型。#898 由 Julien Herzen 提交。新模型:
StatsForecastAutoARIMA
实现了 statsforecast 的 (更快的) AutoARIMA 版本。 #893 由 Julien Herzen 贡献。新模型:
Croston
方法。#893 由 Julien Herzen 提交。更好地表示由分位数指定的分布中的随机
TimeSeries
。 #899 由 Gian Wiher 提交。为随机
RegressionModel
提供更好的轨迹采样。#899 由 Gian Wiher 提交。改进了用户指南,增加了更多章节。#905 由 Julien Herzen 提交。
新的笔记本展示了在大规模时间序列数据集上进行迁移学习和训练预测模型。#885 由 Julien Herzen 提交。
固定
PyTorch Lightning >= 1.6.0 的一些问题 #888 由 Julien Herzen 提出。
0.18.0 (2022-03-22)¶
对于库的用户:¶
改进
LinearRegressionModel
和LightGBMModel
现在可以支持概率性回归,包括分位数回归和泊松回归。#831, #853 由 Gian Wiher 贡献。新模型:
BATS
和TBATS
,基于 tbats。#816 由 Julien Herzen 贡献。在基于 PyTorch 的模型中处理随机输入。#833 由 Julien Herzen 提交。
在 PyTorch Lightning 进度条中添加了训练和验证损失。#825 由 Dennis Bader 贡献。
darts.utils.losses
中提供了更多适用于基于PyTorch模型的损失函数:SmapeLoss
、MapeLoss
和MAELoss
。由 Julien Herzen 在 #845 中贡献。对季节性分解的改进 #862. 由 Gian Wiher. 完成。
在预测时移除了不必要的检查点加载。#821 由 Dennis Bader 提交。
验证的默认epoch数从10改为1。#825 由 Dennis Bader 提交。
固定
修复了
fit_from_dataset()
中编码器的一些问题。#829 由 Julien Herzen 提交。修复了
DualCovariatesForecastingModels
的协变量切片问题。#858 由 Dennis Bader 完成。
0.17.1 (2022-02-17)¶
补丁发布
对于库的用户:¶
固定
修复了(现已弃用)``torch_device_str`` 参数的问题,并改进了与使用 PyTorch Lightning 设备相关的文档。#806 由 Dennis Bader 完成。
修复了
ReduceLROnPlateau
的问题。#806 由 Dennis Bader 完成。修复了N-BEATS周期性基函数的问题。#804 由 Vladimir Chernykh 完成。
对
pandas
的要求放宽;从pandas>=1.1.0
改为pandas>=1.0.5
。#800 由 @adelnick 提交。
0.17.0 (2022-02-15)¶
对于库的用户:¶
改进
🚀 支持 PyTorch Lightning:所有深度学习模型现在都使用 PyTorch Lightning 实现。这意味着通过 PyTorch Lightning 训练器的功能,现在可以使用更多功能;例如定制回调或多 GPU 训练。#702 由 Dennis Bader贡献。
RegressionModel
现在接受一个output_chunk_length
参数;这意味着它们可以被训练来预测超过一个时间步长(并且可以自回归地用于在更长的范围内进行预测)。#761 由 Dustin Brunner 贡献。🔴
TimeSeries
的“简单统计”方法(如mean()
、max()
、min()
等)已重构,以原生支持随机TimeSeries
,并可在可配置的轴上操作。#773 由 Gian Wiher 提交。🔴
TimeSeries
现在仅支持 pandasRangeIndex
作为整数索引,不再支持Int64Index
,因为自 pandas 1.4.0 起它已被弃用。这也确保了即使使用整数索引,TimeSeries
也不会有缺失的“日期”。#777 由 Julien Herzen 贡献。新模型:
KalmanForecaster
是一个新的概率模型,适用于多元序列,接受未来协变量,并通过将给定卡尔曼滤波器的状态空间模型运行到未来来工作。fit()
函数使用 N4SID 算法进行系统识别。#743 由 Julien Herzen 提供。KalmanFilter
现在也可以处理包含缺失值的TimeSeries
。#743 由 Julien Herzen 贡献。估计器(预测和过滤模型)现在在调用
fit()
时也会返回它们自己的实例,这允许链式调用。#741 由 Julien Herzen 提交。
固定
修复了当提供
model_name
时,tensorboard 和 gridsearch 的问题。#759 由 @gdevos010 完成。修复了 pip-tools 的问题。#762 由 Tomas Van Pottelbergh 完成。
对于库的开发者:¶
一些代码检查已经被添加到CI流水线中。#749 由 Tomas Van Pottelbergh 提交。
0.16.1 (2022-01-24)¶
补丁发布
对于库的用户:¶
修复了与最新版本Pandas的不兼容问题 (#752),由 Julien Herzen完成。
修复了在GPU上使用lstm_layers > 1时出现的非连续错误。(#740)由 Dennis Bader 完成。
API文档中类型注解的小改进(#744),由 Dustin Brunner完成。
对于库的开发者:¶
在CI管道中添加了flake8测试 (#749, #748, #745),由 Tomas Van Pottelbergh 和 Dennis Bader 完成。
0.16.0 (2022-01-13)¶
对于库的用户:¶
改进
文档页面 已经更新,现在包含了一个全新的快速入门指南,以及一个用户指南部分,该部分将随着时间的推移逐步填充内容。
API 文档 已经进行了修订和改进,特别是使用了
numpydoc
。在
RegressionModel
中,数据集构建过程得到了改进,从而显著提高了速度。
新增
KalmanFilter
现在可以使用fit()
进行系统辨识(使用 nfoursid)。
固定
捕捉集成模型中的 潜在问题案例。
修复了对
ReduceLROnPlateau
调度器的固定支持。
对于库的开发者:¶
我们已经切换到 black 进行代码格式化(这是由CI流水线检查的)。
0.15.0 (2021-12-24)¶
对于库的用户:¶
新增:
在基于Torch的模型中实时编码位置和日历信息。基于Torch的模型现在接受一个
add_encoders
参数选项,指定如何实时使用某些日历和位置信息作为过去和/或未来的协变量。示例:
from darts.dataprocessing.transformers import Scaler add_encoders={ 'cyclic': {'future': ['month']}, 'datetime_attribute': {'past': ['hour', 'dayofweek']}, 'position': {'past': ['absolute'], 'future': ['relative']}, 'custom': {'past': [lambda idx: (idx.year - 1950) / 50]}, 'transformer': Scaler() }
这将添加月份的循环编码作为未来协变量,添加一些日期时间属性作为过去和未来协变量,一个绝对/相对位置(索引),甚至一些自定义的索引映射(例如年份的函数)。一个
Scaler
将被应用于在训练和推理期间拟合/转换所有这些协变量。现在,缩放器也可以应用于随机的
TimeSeries
。现在,Torch 模型
fit()
方法新增了一个参数max_samples_per_ts
,该参数可以通过每个时间序列最多取最近的max_samples_per_ts
个训练样本,来限制底层训练数据集中的样本数量。所有支持协变量的本地预测模型(Prophet、ARIMA、VARIMA、AutoARIMA)现在都能自行处理协变量切片;这意味着您不需要确保协变量具有完全正确的时间跨度。只要它们包含正确的时间跨度,模型就会为您切片。
TimeSeries.map()
和映射器数据转换器现在可以在随机TimeSeries
上工作。格兰杰因果关系函数:
utils.statistics.granger_causality_tests
可以测试一个单变量TimeSeries
是否“格兰杰导致”另一个。新的单变量
TimeSeries
平稳性检验:darts.utils.statistics.stationarity_tests
,darts.utils.statistics.stationarity_test_adf
和darts.utils.statistics.stationarity_test_kpss
。新的测试覆盖率徽章 🦄
固定:
修复了不同笔记本中的各种问题。
修复了处理 Prophet 模型中频率的错误。
修复了一个问题,该问题导致
PastCovariatesTorchModels``(如 ``NBEATSModel
)在n > output_chunk_length
且n
不是output_chunk_length
的倍数时预测失败。修复了回测中的一个问题,该问题导致在
retrain=False
时,未训练的模型在初始窗口上未进行训练。修复了导致基于Torch的模型
residuals()
失败的问题。
对于库的开发者:¶
更新了 贡献指南
单元测试已按照库的子模块结构进行了重新组织。
所有相对导入路径已被移除并替换为绝对路径。
现在使用 pytest 和 pytest-cov 来运行测试并计算覆盖率。
0.14.0 (2021-11-28)¶
对于库的用户:¶
新增:
概率性 N-BEATS:
NBEATSModel
现在可以生成概率性预测,类似于 Darts 中的所有其他深度学习模型(通过指定likelihood
并使用num_samples
>> 1 进行预测)。我们已经改进了基于PyTorch模型的数据加载功能的速度。这应该会加快训练速度,通常提高几个百分点。
在基于PyTorch的模型的``fit()``和``predict()``方法中添加了``num_loader_workers``参数,以便控制PyTorch DataLoaders的``num_workers``。这有时会导致速度大幅提升。
新方法
TimeSeries.astype()
允许轻松转换类型(例如在np.float64
和np.float32
之间)。在时间序列生成模块中添加了
dtype
作为选项。为基于PyTorch的模型添加了一个小的 性能指南。
在TFT模型中指定一个(相对)时间索引作为未来协变量的可能性。使用此功能时,不必指定未来协变量。
新的 TFT 示例笔记本。
较宽松的依赖关系:我们放宽了对所需依赖版本的要求。
固定:
对 Temporal Fusion Transformer
TFTModel
进行了小修复,这应该会提高性能。对某些单元测试的随机状态进行了小修复。
修复了Transformer示例笔记本中的一个拼写错误。
0.13.1 (2021-11-08)¶
对于库的用户:¶
新增:
TimeSeries
中的工厂方法现在为classmethods
,这使得TimeSeries
的继承更加方便。
固定:
一个导致某些版本安装无法工作的问题
0.13.0 (2021-11-07)¶
对于库的用户:¶
新增:
新的预测模型,Temporal Fusion Transformer <https://arxiv.org/abs/1912.09363>`_(``TFTModel`)。一种支持过去和未来协变量的新型深度学习模型。
改进了对Facebook Prophet模型(
Prophet
)的支持:增加了对未来协变量的拟合和预测支持。例如:
model.fit(train, future_covariates=train_covariates)
和model.predict(n=len(test), num_sample=1, future_covariates=test_covariates)
添加了随机预测,例如:
model.predict(n=len(test), num_samples=200)
在模型创建时通过
add_seasonality
关键字参数(如Prophet(add_seasonality=kwargs_dict)
)或在拟合前通过model.add_seasonality(kwargs)
添加用户定义的季节性。有关如何添加季节性的更多信息,参见 Prophet 文档。
增加了使用
model.predict_raw()
预测并返回基础模型的原始输出的功能。请注意,这将返回一个 pd.DataFramepred_df
,该数据框将不支持通过 Darts API 进行进一步处理。但可以使用 Prophet 的方法,例如通过model.model.plot_compenents(pred_df)
进行绘图。
在
gridsearch()
方法中新增了n_random_samples
,它允许指定要尝试的(随机)超参数组合的数量,主要是为了限制网格搜索时间。改进了Torch模型的检查点和保存功能。
现在模型默认不再保存检查点。设置
save_checkpoints=True
以启用它们。模型可以通过
YourTorchModel.save_model(file_path)
手动保存(file_path 指向 .pth.tar 文件)。模型可以通过
YourTorchModel.load_model(file_path)
手动加载,或者使用原始方法YourTorchModel.load_from_checkpoint()
。
在
darts.utils.likelihood_models
中新增了QuantileRegression
似然类。允许应用分位数回归损失,并在所有支持似然的深度学习模型上获得概率预测。默认在时间融合变压器中使用。
已修复:
darts.concatenate()
的一些问题。修复了在多元序列上应用
RegressionModel
时的一些错误。ACF 图中置信区间计算的一个问题。
为某些不支持
historical_forecasts()
中retrain=False
的模型添加了检查。安装说明中的小修正。
示例中项目符号列表的某些渲染问题。
0.12.0 (2021-09-25)¶
对于库的用户:¶
新增:
使用神经网络改进概率预测
现在,所有基于神经网络的预测模型(除了
NBEATSModel
)都支持概率预测,只需在模型的构造方法中提供likelihood
参数即可。darts.utils.likelihood_models
现在包含了更多的分布。可用于训练神经网络基础模型的完整似然列表可在此处获取:https://unit8co.github.io/darts/generated_api/darts.utils.likelihood_models.html许多可用的似然模型现在提供了指定分布参数“先验”的可能性。指定这些先验将使训练损失正则化,以使输出分布更接近由先验参数值指定的分布。
TimeSeries
创建的性能改进。现在创建TimeSeries
的速度显著加快,尤其是在处理大型序列时,填充缺失日期的速度也显著提升。新的 rho-risk 度量用于概率预测。
新方法
darts.utils.statistics.plot_hist()
用于绘制时间序列数据的直方图(例如回测误差)。新增参数
fillna_value
至TimeSeries
工厂方法,允许指定用于填充缺失日期的值(替代np.nan
)。通过
darts.utils.timeseries_generation
方法生成的合成TimeSeries
现在可以是整数索引的(只需为start
参数传递一个整数而不是时间戳)。移除了一些弃用警告
更新后的 conda 安装说明
已修复:
移除了TCN模型中的 额外1x1卷积。
修复了绘制
TimeSeries
时 linewidth 参数的问题。修复了日期时间属性时间序列中的列名问题。
对于库的开发者:¶
我们已经移除了
develop
分支。我们强制使用 sklearn<1.0,因为我们观察到 pmdarima 和 sklearn==1.0 存在问题。
0.11.0 (2021-09-04)¶
对于库的用户:¶
添加:
新模型:
LightGBMModel
是一个新的回归模型。回归模型允许在给定目标的任意滞后值以及过去和/或未来的协变量的情况下,预测目标的未来值。RegressionModel
已经可以与任何 scikit-learn 回归模型一起工作,现在LightGBMModel
也可以与 LightGBM 做同样的事情。如果你想在 Darts 中启用 LightGBM 支持,请仔细阅读 README 上的详细安装说明。为 gridsearch 添加了 stride 支持
已修复:
在带有验证集的GPU上训练时导致问题的错误
RNNModel
中自定义提供的 RNN 模块存在一些问题。在
RegressionModel
的fit
函数中正确处理kwargs
。修复了一个导致与最新版本的 Matplotlib 不兼容的问题。
导致FFT笔记本中出现错误的某个问题
0.10.1 (2021-08-19)¶
对于库的用户:¶
已修复:
一个与内存固定相关的错误,该错误导致在GPU上训练模型时出现问题。
已更改:
在README中明确了conda支持
0.10.0 (2021-08-13)¶
对于库的用户:¶
添加:
🔴 改进协变量支持。之前,一些模型接受
covariates``(或 ``exog
)参数,但并不总是清楚这是代表“过去观测”还是“未来已知”的协变量。我们已经使这一点更加清晰。现在所有支持协变量的模型在其fit()
和predict()
方法中都支持past_covariates
和/或future_covariates
参数,这使得明确使用哪一系列作为过去或未来的协变量。我们推荐 这篇文章 以获取更多信息和示例。🔴
RegressionModel``(包括 ``LinearRegressionModel
和RandomForest
)的显著改进。这些模型现在支持在多个(可能是多元的)时间序列上进行训练。它们还同时支持past_covariates
和future_covariates
。这使得在多个序列上拟合任意回归模型(例如来自 scikit-learn 的模型)变得比以往更容易,可以根据目标序列的任意滞后值以及过去/未来的协变量来预测目标序列的未来。这些模型的签名发生了变化:不再使用 “exog
” 关键字参数,而是使用past_covariates
和future_covariates
代替。动态时间规整(Dynamic Time Warping)。有一个全新的
darts.dataprocessing.dtw
子模块实现了两个TimeSeries
之间的动态时间规整。它还带来了一个新的dtw
度量标准在darts.metrics
中。我们建议查看 新的DTW示例笔记本 以获得新功能的良好概述。Conda forge 安装支持(目前仅完全支持 Python 3.7)。你现在可以
conda install u8darts-all
。TimeSeries.from_csv()
允许直接从CSV文件中获取TimeSeries
。可选的日期时间属性未来协变量的循环编码;例如,现在可以调用
my_series.add_datetime_attribute('weekday', cyclic=True)
,这将添加两列,包含工作日正弦/余弦编码。ExponentialSmoothing
中的默认季节性推断。如果设置为None
,则seasonal_periods
会根据所提供序列的freq
进行推断。各种文档改进。
已修复:
现在,转换和预测保持了
TimeSeries
的列名。生成模块darts.utils.timeseries_generation
也带来了更好的默认列名。我们的Docker构建过程中存在一些问题
GPU 使用中的一个错误
已更改:
对于基于概率的 PyTorch 模型,预测时生成多个样本(和序列)现在已向量化,从而提高了推理性能。
0.9.1 (2021-07-17)¶
对于库的用户:¶
添加:
改进了
GaussianProcessFilter
,现在能够处理缺失值,并且更好地处理由日期时间索引的时间序列。改进的高斯过程笔记本。
已修复:
TimeSeries
现在支持使用pandas.Int64Index
进行索引,而不仅仅是pandas.RangeIndex
,这解决了某些索引问题。我们已经将
TimeSeries
的所有工厂方法的fill_missing_dates
默认设置为False
。这是因为,在某些情况下,推断缺失日期的频率并对序列进行重采样会导致显著的性能开销。修复了回测功能,使其能够处理整数索引的序列。
修复了一个导致某些模型在GPU上推理崩溃的错误。
修复了默认文件夹名称,该名称在Windows系统上引起了问题。
我们对文档渲染进行了轻微改进,并修复了
RNNModel
和BlockRNNModel
文档页面的标题,以区分它们。
已更改:
依赖项不再固定为某些特定版本。
对于库的开发者:¶
我们已经修复了构建过程。
0.9.0 (2021-07-09)¶
对于库的用户:¶
添加:
现在,通过在调用
predict()
时指定num_samples
参数,多个预测模型可以生成概率预测。随机预测通过利用重构的TimeSeries
类中的新samples
维度来存储(参见“更改”部分)。目前支持概率预测的模型有ARIMA
、ExponentialSmoothing
、RNNModel
和TCNModel
。引入了
LikelihoodModel
类,该类被概率性TorchForecastingModel
类使用,以便以不同类型的参数化分布形式进行预测。添加了新的抽象类
TorchParametricProbabilisticForecastingModel
作为概率模型的父类。引入了新的
FilteringModel
抽象类,以及MovingAverage
、KalmanFilter
和GaussianProcessFilter
作为具体实现。当预测范围超过模型的
output_chunk_length
时,TorchForecastingModels
现在会利用未来的协变量。之前,TorchForecastingModel
实例只有在不基于协变量训练的情况下,才能预测超过其output_chunk_length
的范围,即如果它们预测了所有作为输入所需的数据。现在,这一限制已被解除,模型在生成长期预测时不仅会消耗自身的输出,还会利用未来已知的协变量(如果可用)。新增了一个
RNNModel
类,该类利用 RNN 模块作为编码器和解码器。这个新类在预测时原生支持使用最新的未来协变量。详情请参阅文档。在
TorchForecastingModel.predict()
方法中引入了可选的epochs
参数,如果提供,它将覆盖该特定模型实例和训练会话中的n_epochs
属性。增加了对
TimeSeries
的支持,使用pandas.RangeIndex
而不是仅允许pandas.DatetimeIndex
。ForecastingModel.gridsearch
现在使用并行计算。在
TorchForecastingModel.__init__()
中引入了一个新的force_reset
参数,如果设置为 False,将阻止用户使用相同名称和目录覆盖模型数据。
已修复:
修复了在GPU上训练
NBEATSModel
时发生的错误。修复了在
log_tensorboard=True
时运行NBEATSModel
时发生的崩溃问题解决了在使用
batch_size
大于可用训练样本数量时训练TorchForecastingModel
实例时出现的错误。文档中的一些修复,包括添加更多细节
其他次要错误修复
已更改:
🔴
TimeSeries
类已被重构,通过向时间序列添加一个额外的维度,即samples
,来支持随机时间序列表示。现在,时间序列基于一个形状为(n_timesteps, n_components, n_samples)
的 3 维xarray.DataArray
。此次重构还包括构造函数的更改,该更改与旧构造函数不兼容。然而,已添加工厂方法以从多种数据类型(包括pd.DataFrame
)创建TimeSeries
实例。有关更多信息,请参阅TimeSeries
的文档。🔴 旧版本的
RNNModel
已重命名为BlockRNNModel
。ForecastingModel
的historical_forecast()
和backtest()
方法已经通过使用新的包装方法来拟合和预测模型,进行了一些重组。更新了
README.md
以反映库中的新增内容。
0.8.1 (2021-05-22)¶
已修复:
文档中的一些修复
已更改:
实例化数据集类的方式;现在应该像这样使用数据集 .. code-block:
from darts.datasets import AirPassengers ts: TimeSeries = AirPassengers().load()
0.8.0 (2021-05-21)¶
对于库的用户:¶
添加:
RandomForest
算法已实现。使用 scikit-learn 的RandomForestRegressor
从(滞后的)外生变量和目标的滞后值中预测未来值。darts.datasets
是一个新的子模块,允许轻松下载、缓存和导入一些常用的时间序列。更好地支持处理
TimeSeries
序列。Transformers、Pipelines 和 metrics 已经适应于在
TimeSeries
序列上使用(而不是孤立的序列)。序列数据的神经网络推理已得到改进
有一个新的工具函数
darts.utils.model_selection.train_test_split
,它允许将TimeSeries
或一系列TimeSeries
分割为训练集和测试集;可以在样本轴或时间轴上进行分割。它还允许选择性地进行“模型感知”分割,其中分割会尽可能多地为训练集回收数据。我们的N-BEATS实现,即``NBEATSModel``,现在支持多元时间序列以及协变量。
已更改
RegressionModel
现在是一个用户暴露的类。它充当任何具有fit()
和predict()
方法的回归模型的包装器。它支持使用目标变量的滞后值以及多个外生变量的滞后值。lags
参数允许的值为正整数或正整数列表,指示在训练和预测期间应使用哪些滞后值,例如lags=12
表示使用目标变量的最后12个滞后值进行训练。lags=[1, 4, 8, 12]
表示使用前一个值、滞后4、滞后8和滞后12的值进行训练。🔴
StandardRegressionModel
现在被称为LinearRegressionModel
。它实现了来自sklearn.linear_model.LinearRegression
的线性回归模型。仍然需要使用以前的StandardRegressionModel
与另一个 sklearn 模型的用户现在应该使用RegressionModel
。
固定
我们已经修复了当使用多个缩放器时出现的一个错误。
我们在TCN架构中修复了一个小问题,这使得我们的实现更接近原始论文。
对于库的开发者:¶
添加:
我们已经添加了一些 贡献指南。
0.7.0 (2021-04-14)¶
对于库的用户:¶
添加:
darts
Pypi 包。现在可以通过pip install darts
进行安装。旧名称u8darts
仍然被维护,并提供了不同版本的轻量级安装。新预测模型可用:VARIMA(向量自回归移动平均)。
在ARIMA、AutoARIMA和VARIMA中支持外生变量(在``fit()``和``predict()``方法中的可选``exog``参数)。
为
TimeSeries
创建新增参数dummy_index
。如果一个序列仅由一系列没有时间戳的数字组成,设置此标志将允许创建一个在后台使用“虚拟时间索引”的TimeSeries
。这简化了在这种情况下创建TimeSeries
的过程,并使得除了那些明确依赖日期的模型之外,所有预测模型都可以使用。新方法
TimeSeries.diff()
返回差分的TimeSeries
。在介绍笔记本中添加了
RegressionEnsembleModel
的示例。
已更改:
改进的 N-BEATS 示例笔记本。
方法
TimeSeries.split_before()
和split_after()
现在也接受整数或浮点数参数(除了时间戳之外)作为分割点(例如,指定 0.8 以获得 80%/20% 的分割)。在从
DataFrame
创建TimeSeries
时,如果不需要,不再必须提供参数value_cols
。更新依赖需求到更近期的版本。
已修复:
修复32位架构上的MAX_TORCH_SEED_VALUE问题(https://github.com/unit8co/darts/issues/235)。
修正了TCN推理中的一个错误,这应该会提高准确性。
修复历史预测不返回最后一个点的问题。
修复了在非规则时间频率上调用
TimeSeries.gaps()
函数时的错误。许多小的错误修复。
0.6.0 (2021-02-02)¶
对于库的用户:¶
添加:
Pipeline.invertible()
是一个获取器,用于返回管道是否可逆。TimeSeries.to_json()
和TimeSeries.from_json()
方法用于将TimeSeries
转换为JSON
字符串或从JSON
字符串转换。所有支持在多个时间序列以及协变量上进行训练的模型现在都有一个新的基类
GlobalForecastingModel
。所有 PyTorch 模型现在都是GlobalForecastingModel
。因此,PyTorch 模型(所有神经网络)的
fit()
函数可以选择性地使用时间序列序列(而不是单个时间序列)来调用。同样地,这些模型的
predict()
函数也接受一个指定应预测哪些序列的规范一个新的
TrainingDataset
基类。一些
TrainingDataset
的实现包含了一些切片逻辑,用于在多个时间序列上训练神经网络。一个新的
TimeSeriesInferenceDataset
基类。SimpleInferenceDataset
是TimeSeriesInferenceDataset
的一个实现。所有 PyTorch 模型都有一个新的
fit_from_dataset()
方法,该方法允许直接从指定的TrainingDataset
实例中拟合模型(而不是通过fit()
方法使用默认实例)。一个新的全球模型解释笔记本:https://github.com/unit8co/darts/blob/master/examples/02-multi-time-series-and-covariates.ipynb
已更改:
🔴 在
ForecastingModel
中移除了参数training_series
和target_series
。请查阅预测模型的API文档以查看新的签名。🔴 移除了
UnivariateForecastingModel
和MultivariateForecastingModel
基类。这种区分不再存在。取而代之的是,现在一些模型是“全局”的(可以训练在多个序列上)或“局部”的(它们不能)。所有GlobalForecastingModel
的实现都支持开箱即用的多元时间序列,除了 N-BEATS。改进了文档和README。
重新排序了示例笔记本,以改善示例的流程。
已修复:
许多小的错误修复。
单元测试速度提升约15倍。
0.5.0 (2020-11-09)¶
对于库的用户:¶
添加:
集成模型,一种新的
ForecastingModel
,允许集成多个模型进行预测:EnsembleModel
是集成模型的抽象基类。从EnsembleModel
派生的类必须实现ensemble()
方法,该方法接收来自组成模型的预测列表List[TimeSeries]
,并返回集成预测(一个单一的TimeSeries
对象)。RegressionEnsembleModel
,EnsembleModel
的具体实现,允许指定任何回归模型(提供fit()
和predict()
方法)来集成组成模型的预测结果。
TorchForecastingModel
的新方法:untrained_model()
返回模型最初创建时的状态,允许从头开始重新训练完全相同的模型。无论是否指定random_state
,此方法均适用。新的
ForecastingModel.backtest()
和RegressionModel.backtest()
函数,默认情况下会从模型将生成的历史预测中计算出一个单一的误差分数。一个新的
reduction
参数允许指定是计算误差的均值/中位数/… 还是(当reduction
设置为None
时)返回一个历史误差列表。之前的
backtest()
功能仍然存在,但已被重命名为historical_forecasts()
为
historical_forecasts()
、backtest()
和gridsearch()
添加了新的last_points_only
参数
已更改:
🔴 将
backtest()
重命名为historical_forecasts()
fill_missing_values()
和MissingValuesFiller
在使用fill='auto'
时不再移除变量名。修改了默认的绘图样式,以增加对比度并使图表更轻便。
已修复:
NaiveDrift
模型实现中的一个小错误,导致第一个预测值重复了最后一个训练值。
对于库的开发者:¶
已更改:
@random_method
装饰器现在总是为被装饰的方法分配一个_random_instance
字段(使用随机种子初始化)。这不会改变观察到的行为,但允许通过在创建时保存_random_instance
以及模型的其他参数来确定性地“重置”TorchForecastingModel
。
0.4.0 (2020-10-28)¶
对于库的用户:¶
添加:
使用
DataTransformer
、Pipeline
进行数据(预)处理能力:DataTransformer
提供了一个统一的接口来对TimeSeries
应用变换,使用它们的transform()
方法Pipeline
:允许
DataTransformers
的链式操作提供
fit()
、transform()
、fit_transform()
和inverse_transform()
方法。
实现你自己的数据转换器:
需要先拟合的数据转换器应继承自
FittableDataTransformer
基类并实现fit()
方法。可拟合的转换器还提供了一个fit_transform()
方法,该方法通过一次调用拟合并转换数据。执行可逆变换的数据转换器应从
InvertibleDataTransformer
基类派生,并实现inverse_transform()
方法。既不可拟合也不可逆的数据转换器应从
BaseDataTransformer
基类派生所有数据转换器都必须实现一个
transform()
方法。
具体的
DataTransformer
实现:MissingValuesFiller
包装了fill_missing_value()
,并允许使用常数值或pd.interpolate()
方法填充缺失值。Mapper
和InvertibleMapper
允许轻松地对 TimeSeries 执行map()
函数等效操作,并且可以成为Pipeline
的一部分。BoxCox
允许对数据应用 BoxCox 变换
扩展了
TimeSeries
上的map()
以接受使用值及其时间戳来计算新值的函数,例如f(timestamp, datapoint) = new_datapoint
两种新的预测模型:
TransformerModel
,基于Vaswani等人(2017)在 Attention Is All You Need 中描述的架构实现。NBEATSModel
,基于Boris N. Oreshkin等人(2019)在 N-BEATS: 神经基扩展分析用于可解释的时间序列预测 中描述的N-BEATS架构的实现。
已更改:
🔴 从
map()
中移除了cols
参数。建议使用TimeSeries
上的索引。# Assuming a multivariate TimeSeries named series with 3 columns or variables. # To apply fn to columns with names '0' and '2': #old syntax series.map(fn, cols=['0', '2']) # returned a time series with 3 columns #new syntax series[['0', '2']].map(fn) # returns a time series with only 2 columns
🔴 将
ScalerWrapper
重命名为Scaler
🔴 将
preprocessing
模块重命名为dataprocessing
🔴 将
auto_fillna()
和fillna()
统一为一个fill_missing_value()
函数#old syntax fillna(series, fill=0) #new syntax fill_missing_values(series, fill=0) #old syntax auto_fillna(series, **interpolate_kwargs) #new syntax fill_missing_values(series, fill='auto', **interpolate_kwargs) fill_missing_values(series, **interpolate_kwargs) # fill='auto' by default
对于库的开发者¶
已更改:
GitHub发布工作流程现在从仓库的GitHub“Actions”标签手动触发,提供一个``#major``、
#minor
或``#patch``参数。#211(有限数量的)笔记本示例现在作为 GitHub PR 工作流程的一部分运行。
0.3.0 (2020-10-05)¶
对于库的用户:¶
添加:
在 TimeSeries 上更好的索引(支持列/组件索引) #150
进一步改进了回测功能 #111:
增加了对多元时间序列和模型的支持
添加了
retrain
和stride
参数
matplotlib 绘图的自定义样式 #191
sMAPE 指标 #129
在模型创建时指定
random_state
选项,使用@random_method
装饰器在神经网络模型上,以允许结果的可重复性 #118
已更改:
🔴 重构回测 #184
将回测功能移至
ForecastingModel
和RegressionModel
内部# old syntax: backtest_forecasting(forecasting_model, *args, **kwargs) # new syntax: forecasting_model.backtest(*args, **kwargs) # old syntax: backtest_regression(regression_model, *args, **kwargs) # new syntax: regression_model.backtest(*args, **kwargs)
因此移除了
backtesting
模块
🔴
ForecastingModel
fit()
方法语法 使用时间序列索引而不是额外参数 #161# old syntax: multivariate_model.fit(multivariate_series, target_indices=[0, 1]) # new syntax: multivariate_model.fit(multivariate_series, multivariate_series[["0", "1"]]) # old syntax: univariate_model.fit(multivariate_series, component_index=2) # new syntax: univariate_model.fit(multivariate_series["2"])
已修复:
对于库的开发者¶
添加:
已更改:
已修复:
在所有生成 TimeSeries 的函数中,将
freq
参数传递给TimeSeries
构造函数 #157