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 在并行化后关闭

      并行化后性能下降。

    • “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_pasty_true

总体而言,使用如上所述的 y_trainy_pasty_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” = 拟合第一个训练窗口,然后重复使用而不进行拟合或更新

返回:
该预测器的基准测试结果字典
run(output_file: str, force_rerun: str | list[str] ='none')[source]#

对所有任务和估计器运行基准测试。

参数:
output_filestr

保存结果的路径。

force_rerunUnion[str, list[str]], 可选 (默认值=”none”)

如果为“none”,则如果结果已存在将跳过验证。如果为“all”,则将对所有任务和模型运行验证。如果为 str 列表,则将对列表中的任务和模型运行验证。