ForecastingBenchmark#
- class ForecastingBenchmark(id_format: str | None = None, backend=None, backend_params=None, return_data=False)[source]#
预测基准测试。
针对通过数据集加载器、交叉验证分割策略和性能指标定义的一系列任务,运行一系列预测器,并将结果作为 df 返回(并保存到文件)。
- 参数:
- id_format: str, 可选 (默认值=None)
用于强制任务/估计器 ID 匹配特定格式的正则表达式
- backendstring, 默认为 “None”。
用于运行的并行化后端。
“None”:按顺序执行循环,简单的列表推导
“loky”、“multiprocessing” 和 “threading”:使用
joblib.Parallel
循环“joblib”:自定义和第三方
joblib
后端,例如spark
“dask”:使用
dask
,需要环境中安装dask
包“dask_lazy”:与 “dask” 相同,
但将返回类型更改为(惰性)
dask.dataframe.DataFrame
。 - “ray”:使用ray
,需要环境中安装ray
包建议:并行评估使用“dask”或“loky”。由于 GIL 和“dask”和“loky”的序列化后端 (
cloudpickle
) 通常比“multiprocessing”中使用的标准pickle
库更稳定,因此“threading”不太可能看到速度提升。- backend_paramsdict, 可选
作为配置传递给后端的附加参数。直接传递给
utils.parallel.parallelize
。有效键取决于backend
的值“None”:没有附加参数,
backend_params
被忽略“loky”、“multiprocessing” 和 “threading”:默认的
joblib
后端
这里可以传递
joblib.Parallel
的任何有效键,例如n_jobs
,但backend
除外,它由backend
直接控制。如果未传递n_jobs
,则默认为-1
,其他参数将默认为joblib
的默认值。 - “joblib”:自定义和第三方joblib
后端,例如spark
。这里可以传递joblib.Parallel
的任何有效键,例如n_jobs
,在这种情况下,backend
必须作为backend_params
的键传递。如果未传递n_jobs
,则默认为-1
,其他参数将默认为joblib
的默认值。 - “dask”:可以传递dask.compute
的任何有效键,例如scheduler
“ray”:可以传递以下键
“ray_remote_args”:
ray.init
的有效键字典- “shutdown_ray”:bool,默认为 True;False 会阻止
ray
在并行化后关闭 并行化后性能下降。
- “shutdown_ray”:bool,默认为 True;False 会阻止
“logger_name”:str,默认为“ray”;要使用的日志记录器的名称。
“mute_warnings”:bool,默认为 False;如果为 True,则抑制警告
- return_databool, 可选 (默认值=False)
是否在结果中返回预测和真实数据。
方法
add_estimator
(estimator[, estimator_id])向基准测试注册一个估计器。
add_task
(dataset_loader, cv_splitter, scorers)向基准测试注册一个预测任务。
run
(output_file[, force_rerun])对所有任务和估计器运行基准测试。
- add_estimator(estimator: BaseEstimator, estimator_id: str | None = None)[source]#
向基准测试注册一个估计器。
- 参数:
- estimatorDict, List 或 BaseEstimator 对象
要添加到基准测试的估计器。如果为 Dict,则键是用于自定义标识符 ID 的 estimator_ids,值是估计器。如果为 List,则每个元素都是一个估计器。estimator_ids 使用估计器的类名自动生成。
- estimator_idstr, 可选 (默认值=None)
估计器的标识符。如果未提供,则使用估计器的类名。
- add_task(dataset_loader: Callable | tuple, cv_splitter: BaseSplitter, scorers: list[BaseMetric], task_id: str | None = None, cv_global: BaseSplitter | None = None, error_score: str ='raise', strategy: str ='refit')[source]#
向基准测试注册一个预测任务。
- 参数:
- dataUnion[Callable, tuple]
可以是 - 一个返回数据集的函数,例如来自 sktime.datasets。 - 包含两个与 sktime 兼容的数据容器的元组。 - 与 sktime 兼容的单个数据容器(仅内生数据)。
- cv_splitterBaseSplitter 对象
用于生成验证折叠的分割器。
- scorersBaseMetric 对象列表
每个 BaseMetric 输出都将包含在结果中。
- task_idstr, 可选 (默认值=None)
基准测试任务的标识符。如果未提供,则使用数据集加载器名称与 cv_splitter 类名组合。
- cv_global: sklearn 分割器,或 sktime 实例分割器,默认为 None
如果传递了
cv_global
,则应用全局基准测试,如下所示1. 使用
cv_global
分割器在实例级别分割数据,分为全局训练集y_train
和全局测试集y_test_global
。 2. 估计器拟合全局训练集y_train
。 3. 然后cv_splitter
在时间上分割全局测试集y_test_global
,以获得时间分割y_past
和y_true
。总体而言,使用如上所述的
y_train
、y_past
、y_true
,将应用以下评估forecaster.fit(y=y_train, fh=cv.fh) y_pred = forecaster.predict(y=y_past) metric(y_true, y_pred)
- error_score“raise” 或 numeric,默认为 np.nan
如果估计器拟合时发生异常,则分配给分数的数值。如果设置为“raise”,则抛出异常。如果给出数值,则抛出 FitFailedWarning。
- strategy{“refit”, “update”, “no-update_params”}, 可选, 默认为 “refit”
定义当窗口扩展时预测器看到新数据时的摄取模式:“refit” = 预测器重新拟合每个训练窗口 “update” = 预测器使用提供的顺序更新训练窗口数据 “no-update_params” = 拟合第一个训练窗口,然后重复使用而不进行拟合或更新
- 返回:
- 该预测器的基准测试结果字典