指标

一些用于比较时间序列的指标。

darts.metrics.metrics.ae(actual_series, pred_series, intersect=True, *, time_reduction=None, component_reduction=<function nanmean>, series_reduction=None, n_jobs=1, verbose=False)[源代码]

绝对误差 (AE)。

对于长度为 \(T\) 的真实序列 \(y\) 和预测序列 \(\hat{y}\),它是按组件/列和时间步 \(t\) 计算的:

\[|y_t - \hat{y}_t|\]

如果序列中的任何一个包含多个样本(即随机),\(\hat{y}_t\) 是时间步 \(t\) 所有样本的中位数。

参数
  • actual_series (Union[TimeSeries, Sequence[TimeSeries]]) – 实际系列(的序列)。

  • pred_series (Union[TimeSeries, Sequence[TimeSeries]]) – 预测序列(的序列)。

  • intersect (bool) – 对于在时间上重叠但没有相同时间索引的时间序列,设置 True 将仅考虑它们在共同时间间隔(时间交集)内的值。

  • time_reduction (Optional[Callable[…, ndarray], None]) – 可选地,一个用于在时间轴上聚合指标的函数。它必须将形状为 (t, c)np.ndarray 缩减为形状为 (c,)np.ndarray。该函数以 np.ndarray 和一个名为 axis 的参数作为输入,并返回缩减后的数组。axis 接收值 0,对应于时间轴。如果为 None,将返回每个时间步的指标。

  • component_reduction (Optional[Callable[[ndarray], float], None]) – 可选地,一个用于在组件/列轴上聚合指标的函数。它必须将形状为 (t, c)np.ndarray 减少为形状为 (t,)np.ndarray。该函数以一个 np.ndarray 和一个名为 axis 的参数作为输入,并返回减少后的数组。axis 接收值 1,对应于组件轴。如果为 None,将返回每个组件的指标。

  • series_reduction (Optional[Callable[[ndarray], Union[float, ndarray]], None]) – 可选地,一个用于在序列轴上聚合指标的函数。它必须将形状为 (s, t, c)np.ndarray 减少为形状为 (t, c)np.ndarray。该函数以 np.ndarray 和名为 axis 的参数作为输入,并返回减少后的数组。axis 接收值 0,对应于序列轴。如果为 None,将返回每个序列的指标。

  • series_reduction – 可选地,一个以 np.ndarray 为输入并返回标量值或 np.ndarray 的函数。此函数用于在指标在多个序列上评估时(例如,在 Sequence[TimeSeries] 上)聚合指标。默认情况下,返回每个序列的指标。示例:series_reduction=np.nanmean,将返回所有序列指标的平均值。

  • n_jobs (int) – 要并行运行的作业数量。只有在输入为 Sequence[TimeSeries] 时才会创建并行作业,并行处理不同的 TimeSeries。默认为 1`(顺序执行)。将参数设置为 `-1 表示使用所有可用的处理器。

  • verbose (bool) – 可选地,是否打印操作进度

返回类型

Union[float, List[float], ndarray, List[ndarray]]

返回

  • float – 一个单一的指标评分:

    • 单变量序列。

    • 带有 component_reduction 的单变量序列。

    • 一个包含 series_reductioncomponent_reductiontime_reduction 的单/多变量序列(列表)。

  • np.ndarray – 一个包含指标分数的 numpy 数组。该数组的形状为 (n 时间步长, n 组件),不包括时间和组件的减少。对于:

    • 单变量或多变量序列,且至少 component_reduction=None

    • 单变量/多变量序列,且至少 time_reduction=None

    • 包括 series_reduction 在内的单变量/多变量序列,并且至少有一个 component_reduction=Nonetime_reduction=None

  • List[float] – 与类型 float 相同,但适用于一系列序列。

  • List[np.ndarray] – 与类型 np.ndarray 相同,但适用于一系列序列。

darts.metrics.metrics.ape(actual_series, pred_series, intersect=True, *, time_reduction=None, component_reduction=<function nanmean>, series_reduction=None, n_jobs=1, verbose=False)[源代码]

绝对百分比误差 (APE)。

对于真实序列 \(y\) 和预测序列 \(\hat{y}\) ,长度为 \(T\) ,它是按每个分量/列和时间步 \(t\) 计算的百分比值:

\[100 \cdot \left| \frac{y_t - \hat{y}_t}{y_t} \right|\]

请注意,如果对于某些 \(t\)\(y_t = 0\),它将引发 ValueError。在这些情况下,考虑使用绝对缩放误差(ase())。

如果序列中的任何一个包含多个样本(即随机),\(\hat{y}_t\) 是时间步 \(t\) 所有样本的中位数。

参数
  • actual_series (Union[TimeSeries, Sequence[TimeSeries]]) – 实际系列(的序列)。

  • pred_series (Union[TimeSeries, Sequence[TimeSeries]]) – 预测序列(的序列)。

  • intersect (bool) – 对于在时间上重叠但没有相同时间索引的时间序列,设置 True 将仅考虑它们在共同时间间隔(时间交集)内的值。

  • time_reduction (Optional[Callable[…, ndarray], None]) – 可选地,一个用于在时间轴上聚合指标的函数。它必须将形状为 (t, c)np.ndarray 缩减为形状为 (c,)np.ndarray。该函数以 np.ndarray 和一个名为 axis 的参数作为输入,并返回缩减后的数组。axis 接收值 0,对应于时间轴。如果为 None,将返回每个时间步的指标。

  • component_reduction (Optional[Callable[[ndarray], float], None]) – 可选地,一个用于在组件/列轴上聚合指标的函数。它必须将形状为 (t, c)np.ndarray 减少为形状为 (t,)np.ndarray。该函数以一个 np.ndarray 和一个名为 axis 的参数作为输入,并返回减少后的数组。axis 接收值 1,对应于组件轴。如果为 None,将返回每个组件的指标。

  • series_reduction (Optional[Callable[[ndarray], Union[float, ndarray]], None]) – 可选地,一个用于在序列轴上聚合指标的函数。它必须将形状为 (s, t, c)np.ndarray 减少为形状为 (t, c)np.ndarray。该函数以 np.ndarray 和名为 axis 的参数作为输入,并返回减少后的数组。axis 接收值 0,对应于序列轴。如果为 None,将返回每个序列的指标。

  • n_jobs (int) – 要并行运行的作业数量。只有在输入为 Sequence[TimeSeries] 时才会创建并行作业,并行处理不同的 TimeSeries。默认为 1`(顺序执行)。将参数设置为 `-1 表示使用所有可用的处理器。

  • verbose (bool) – 可选地,是否打印操作进度

引发

ValueError – 如果 actual_series 包含一些零。

返回类型

Union[float, List[float], ndarray, List[ndarray]]

返回

  • float – 一个单一的指标评分:

    • 单变量序列。

    • 带有 component_reduction 的单变量序列。

    • 一个包含 series_reductioncomponent_reductiontime_reduction 的单/多变量序列(列表)。

  • np.ndarray – 一个包含指标分数的 numpy 数组。该数组的形状为 (n 时间步长, n 组件),不包括时间和组件的减少。对于:

    • 单变量或多变量序列,且至少 component_reduction=None

    • 单变量/多变量序列,且至少 time_reduction=None

    • 包括 series_reduction 在内的单变量/多变量序列,并且至少有一个 component_reduction=Nonetime_reduction=None

  • List[float] – 与类型 float 相同,但适用于一系列序列。

  • List[np.ndarray] – 与类型 np.ndarray 相同,但适用于一系列序列。

darts.metrics.metrics.arre(actual_series, pred_series, intersect=True, *, time_reduction=None, component_reduction=<function nanmean>, series_reduction=None, n_jobs=1, verbose=False)[源代码]

绝对范围相对误差 (ARRE)。

对于真实序列 \(y\) 和预测序列 \(\hat{y}\) ,长度为 \(T\) ,它是按每个分量/列和时间步 \(t\) 计算的百分比值:

\[100 \cdot \left| \frac{y_t - \hat{y}_t} {\max_t{y_t} - \min_t{y_t}} \right|\]

如果序列中的任何一个包含多个样本(即随机),\(\hat{y}_t\) 是时间步 \(t\) 所有样本的中位数。

参数
  • actual_series (Union[TimeSeries, Sequence[TimeSeries]]) – 实际系列(的序列)。

  • pred_series (Union[TimeSeries, Sequence[TimeSeries]]) – 预测序列(的序列)。

  • intersect (bool) – 对于在时间上重叠但没有相同时间索引的时间序列,设置 True 将仅考虑它们在共同时间间隔(时间交集)内的值。

  • time_reduction (Optional[Callable[…, ndarray], None]) – 可选地,一个用于在时间轴上聚合指标的函数。它必须将形状为 (t, c)np.ndarray 缩减为形状为 (c,)np.ndarray。该函数以 np.ndarray 和一个名为 axis 的参数作为输入,并返回缩减后的数组。axis 接收值 0,对应于时间轴。如果为 None,将返回每个时间步的指标。

  • component_reduction (Optional[Callable[[ndarray], float], None]) – 可选地,一个用于在组件/列轴上聚合指标的函数。它必须将形状为 (t, c)np.ndarray 减少为形状为 (t,)np.ndarray。该函数以一个 np.ndarray 和一个名为 axis 的参数作为输入,并返回减少后的数组。axis 接收值 1,对应于组件轴。如果为 None,将返回每个组件的指标。

  • series_reduction (Optional[Callable[[ndarray], Union[float, ndarray]], None]) – 可选地,一个用于在序列轴上聚合指标的函数。它必须将形状为 (s, t, c)np.ndarray 减少为形状为 (t, c)np.ndarray。该函数以 np.ndarray 和名为 axis 的参数作为输入,并返回减少后的数组。axis 接收值 0,对应于序列轴。如果为 None,将返回每个序列的指标。

  • n_jobs (int) – 要并行运行的作业数量。只有在输入为 Sequence[TimeSeries] 时才会创建并行作业,并行处理不同的 TimeSeries。默认为 1`(顺序执行)。将参数设置为 `-1 表示使用所有可用的处理器。

  • verbose (bool) – 可选地,是否打印操作进度

引发

ValueError – 如果 \(\max_t{y_t} = \min_t{y_t}\)

返回类型

Union[float, List[float], ndarray, List[ndarray]]

返回

  • float – 一个单一的指标评分:

    • 单变量序列。

    • 带有 component_reduction 的单变量序列。

    • 一个包含 series_reductioncomponent_reductiontime_reduction 的单/多变量序列(列表)。

  • np.ndarray – 一个包含指标分数的 numpy 数组。该数组的形状为 (n 时间步长, n 组件),不包括时间和组件的减少。对于:

    • 单变量或多变量序列,且至少 component_reduction=None

    • 单变量/多变量序列,且至少 time_reduction=None

    • 包括 series_reduction 在内的单变量/多变量序列,并且至少有一个 component_reduction=Nonetime_reduction=None

  • List[float] – 与类型 float 相同,但适用于一系列序列。

  • List[np.ndarray] – 与类型 np.ndarray 相同,但适用于一系列序列。

darts.metrics.metrics.ase(actual_series, pred_series, insample, m=1, intersect=True, *, time_reduction=None, component_reduction=<function nanmean>, series_reduction=None, n_jobs=1, verbose=False)[源代码]

绝对缩放误差 (ASE) (有关缩放预测误差的更多信息,请参见 [1] )。

它是绝对误差(AE)按朴素m季节性预测的平均绝对误差(MAE)进行缩放。

对于长度为 \(T\) 的真实序列 \(y\) 和预测序列 \(\hat{y}\),它是按组件/列和时间步 \(t\) 计算的:

\[$\frac{AE(y_{t_p+1:t_p+T}, \hat{y}_{t_p+1:t_p+T})}{E_m}$,\]

其中 \(t_p\) 是预测时间(在第一个预测点之前的一步),\(AE\) 是绝对误差(ae()),而 \(E_m\)insample 系列 \(y_{0:t_p}\) 结束的真实系列)上的朴素 m-季节性预测的平均绝对误差(MAE):

\[E_m = MAE(y_{m:t_p}, y_{0:t_p - m})。\]

如果序列中的任何一个包含多个样本(即随机),\(\hat{y}_t\) 是时间步 \(t\) 所有样本的中位数。

参数
  • actual_series (Union[TimeSeries, Sequence[TimeSeries]]) – 实际系列(的序列)。

  • pred_series (Union[TimeSeries, Sequence[TimeSeries]]) – 预测序列(的序列)。

  • insample (Union[TimeSeries, Sequence[TimeSeries]]) – 用于预测 pred_series 的训练系列。该系列用于计算在训练数据上朴素预测器所获得误差的尺度。

  • m (int) – 用于计算误差尺度 \(E_m\) 的差分季节性(如指标描述中所述)。\(m=1\) 对应于非季节性的 \(E_m\) 对应于季节性的 \(E_m\)

  • intersect (bool) – 对于在时间上重叠但没有相同时间索引的时间序列,设置 True 将仅考虑它们在共同时间间隔(时间交集)内的值。

  • time_reduction (Optional[Callable[…, ndarray], None]) – 可选地,一个用于在时间轴上聚合指标的函数。它必须将形状为 (t, c)np.ndarray 缩减为形状为 (c,)np.ndarray。该函数以 np.ndarray 和一个名为 axis 的参数作为输入,并返回缩减后的数组。axis 接收值 0,对应于时间轴。如果为 None,将返回每个时间步的指标。

  • component_reduction (Optional[Callable[[ndarray], float], None]) – 可选地,一个用于在组件/列轴上聚合指标的函数。它必须将形状为 (t, c)np.ndarray 减少为形状为 (t,)np.ndarray。该函数以一个 np.ndarray 和一个名为 axis 的参数作为输入,并返回减少后的数组。axis 接收值 1,对应于组件轴。如果为 None,将返回每个组件的指标。

  • series_reduction (Optional[Callable[[ndarray], Union[float, ndarray]], None]) – 可选地,一个用于在序列轴上聚合指标的函数。它必须将形状为 (s, t, c)np.ndarray 减少为形状为 (t, c)np.ndarray。该函数以 np.ndarray 和名为 axis 的参数作为输入,并返回减少后的数组。axis 接收值 0,对应于序列轴。如果为 None,将返回每个序列的指标。

  • n_jobs (int) – 要并行运行的作业数量。只有在输入为 Sequence[TimeSeries] 时才会创建并行作业,并行处理不同的 TimeSeries。默认为 1`(顺序执行)。将参数设置为 `-1 表示使用所有可用的处理器。

  • verbose (bool) – 可选地,是否打印操作进度

引发

ValueError – 如果 insample 序列是周期性的( \(y_t = y_{t-m}\) ),或者 insample 中的任何序列在相应的 pred_series 预测开始前一个时间步长结束。

返回类型

Union[float, List[float], ndarray, List[ndarray]]

返回

  • float – 一个单一的指标评分:

    • 单变量序列。

    • 带有 component_reduction 的单变量序列。

    • 一个包含 series_reductioncomponent_reductiontime_reduction 的单/多变量序列(列表)。

  • np.ndarray – 一个包含指标分数的 numpy 数组。该数组的形状为 (n 时间步长, n 组件),不包括时间和组件的减少。对于:

    • 单变量或多变量序列,且至少 component_reduction=None

    • 单变量/多变量序列,且至少 time_reduction=None

    • 包括 series_reduction 在内的单变量/多变量序列,并且至少有一个 component_reduction=Nonetime_reduction=None

  • List[float] – 与类型 float 相同,但适用于一系列序列。

  • List[np.ndarray] – 与类型 np.ndarray 相同,但适用于一系列序列。

引用

1

https://www.pmorgan.com.au/tutorials/mae%2C-mape%2C-mase-and-the-scaled-rmse/

darts.metrics.metrics.coefficient_of_variation(actual_series, pred_series, intersect=True, *, component_reduction=<function nanmean>, series_reduction=None, n_jobs=1, verbose=False)[源代码]

变异系数 (百分比)。

对于真实序列 \(y\) 和预测序列 \(\hat{y}\),长度为 \(T\),它是按组件/列计算的百分比值,公式如下:

\[100 \cdot \text{RMSE}(y_t, \hat{y}_t) / \bar{y},\]

其中 \(RMSE\) 是均方根误差 (rmse()),而 \(\bar{y}\)\(y\) 在所有时间步上的平均值。

如果序列中的任何一个包含多个样本(即随机),\(\hat{y}_t\) 是时间步 \(t\) 所有样本的中位数。

参数
  • actual_series (Union[TimeSeries, Sequence[TimeSeries]]) – 实际系列(的序列)。

  • pred_series (Union[TimeSeries, Sequence[TimeSeries]]) – 预测序列(的序列)。

  • intersect (bool) – 对于在时间上重叠但没有相同时间索引的时间序列,设置 True 将仅考虑它们在共同时间间隔(时间交集)内的值。

  • component_reduction (Optional[Callable[[ndarray], float], None]) – 可选地,一个用于在组件/列轴上聚合指标的函数。它必须将形状为 (t, c)np.ndarray 减少为形状为 (t,)np.ndarray。该函数以一个 np.ndarray 和一个名为 axis 的参数作为输入,并返回减少后的数组。axis 接收值 1,对应于组件轴。如果为 None,将返回每个组件的指标。

  • series_reduction (Optional[Callable[[ndarray], Union[float, ndarray]], None]) – 可选地,一个用于在序列轴上聚合指标的函数。它必须将形状为 (s, t, c)np.ndarray 减少为形状为 (t, c)np.ndarray。该函数以 np.ndarray 和名为 axis 的参数作为输入,并返回减少后的数组。axis 接收值 0,对应于序列轴。如果为 None,将返回每个序列的指标。

  • n_jobs (int) – 要并行运行的作业数量。只有在输入为 Sequence[TimeSeries] 时才会创建并行作业,并行处理不同的 TimeSeries。默认为 1`(顺序执行)。将参数设置为 `-1 表示使用所有可用的处理器。

  • verbose (bool) – 可选地,是否打印操作进度

返回类型

Union[float, List[float], ndarray, List[ndarray]]

返回

  • float – 一个单一的指标评分:

    • 单变量序列。

    • 带有 component_reduction 的单变量序列。

    • 包含 series_reductioncomponent_reduction 的单变量/多变量序列(列表)。

  • np.ndarray – 一个包含指标分数的 numpy 数组。该数组的形状为 (n 个组件,),没有组件减少。

    • 单变量或多变量序列,且至少 component_reduction=None

    • 包括 series_reductioncomponent_reduction=None 的单变量/多变量序列序列。

  • List[float] – 与类型 float 相同,但适用于一系列序列。

  • List[np.ndarray] – 与类型 np.ndarray 相同,但适用于一系列序列。

darts.metrics.metrics.dtw_metric(actual_series, pred_series, metric=<function mae>, *, component_reduction=<function nanmean>, series_reduction=None, n_jobs=1, verbose=False, **kwargs)[源代码]

在将 actual_seriespred_series 传递给指标之前,应用动态时间规整(Dynamic Time Warping)。这使得可以比较不同长度、相位和时间索引的序列。

默认使用 mae() 作为评估指标。

更多支持的参数请参见 dtw()

参数
  • actual_series (Union[TimeSeries, Sequence[TimeSeries]]) – 实际系列(的序列)。

  • pred_series (Union[TimeSeries, Sequence[TimeSeries]]) – 预测序列(的序列)。

  • metric (Callable[[Union[TimeSeries, Sequence[TimeSeries]], Union[TimeSeries, Sequence[TimeSeries]]], Union[float, List[float], ndarray, List[ndarray]]]) – 选定的带有签名 ‘[[TimeSeries, TimeSeries], float]’ 的指标。默认:mae

  • component_reduction (Optional[Callable[[ndarray], float], None]) – 可选地,一个用于在组件/列轴上聚合指标的函数。它必须将形状为 (t, c)np.ndarray 减少为形状为 (t,)np.ndarray。该函数以一个 np.ndarray 和一个名为 axis 的参数作为输入,并返回减少后的数组。axis 接收值 1,对应于组件轴。如果为 None,将返回每个组件的指标。

  • series_reduction (Optional[Callable[[ndarray], Union[float, ndarray]], None]) – 可选地,一个用于在序列轴上聚合指标的函数。它必须将形状为 (s, t, c)np.ndarray 减少为形状为 (t, c)np.ndarray。该函数以 np.ndarray 和名为 axis 的参数作为输入,并返回减少后的数组。axis 接收值 0,对应于序列轴。如果为 None,将返回每个序列的指标。

  • n_jobs (int) – 要并行运行的作业数量。只有在输入为 Sequence[TimeSeries] 时才会创建并行作业,并行处理不同的 TimeSeries。默认为 1`(顺序执行)。将参数设置为 `-1 表示使用所有可用的处理器。

  • verbose (bool) – 可选地,是否打印操作进度

返回类型

Union[float, List[float], ndarray, List[ndarray]]

返回

  • float – 一个单一的指标评分:

    • 单变量序列。

    • 带有 component_reduction 的单变量序列。

    • 包含 series_reductioncomponent_reduction 的单变量/多变量序列(列表)。

  • np.ndarray – 一个包含指标分数的 numpy 数组。该数组的形状为 (n 个组件,),没有组件减少。

    • 单变量或多变量序列,且至少 component_reduction=None

    • 包括 series_reductioncomponent_reduction=None 的单变量/多变量序列序列。

  • List[float] – 与类型 float 相同,但适用于一系列序列。

  • List[np.ndarray] – 与类型 np.ndarray 相同,但适用于一系列序列。

darts.metrics.metrics.err(actual_series, pred_series, intersect=True, *, time_reduction=None, component_reduction=<function nanmean>, series_reduction=None, n_jobs=1, verbose=False)[源代码]

错误 (ERR)。

对于长度为 \(T\) 的真实序列 \(y\) 和预测序列 \(\hat{y}\),它是按组件/列和时间步 \(t\) 计算的:

\[y_t - \hat{y}_t\]

如果序列中的任何一个包含多个样本(即随机),\(\hat{y}_t\) 是时间步 \(t\) 所有样本的中位数。

参数
  • actual_series (Union[TimeSeries, Sequence[TimeSeries]]) – 实际系列(的序列)。

  • pred_series (Union[TimeSeries, Sequence[TimeSeries]]) – 预测序列(的序列)。

  • intersect (bool) – 对于在时间上重叠但没有相同时间索引的时间序列,设置 True 将仅考虑它们在共同时间间隔(时间交集)内的值。

  • time_reduction (Optional[Callable[…, ndarray], None]) – 可选地,一个用于在时间轴上聚合指标的函数。它必须将形状为 (t, c)np.ndarray 缩减为形状为 (c,)np.ndarray。该函数以 np.ndarray 和一个名为 axis 的参数作为输入,并返回缩减后的数组。axis 接收值 0,对应于时间轴。如果为 None,将返回每个时间步的指标。

  • component_reduction (Optional[Callable[[ndarray], float], None]) – 可选地,一个用于在组件/列轴上聚合指标的函数。它必须将形状为 (t, c)np.ndarray 减少为形状为 (t,)np.ndarray。该函数以一个 np.ndarray 和一个名为 axis 的参数作为输入,并返回减少后的数组。axis 接收值 1,对应于组件轴。如果为 None,将返回每个组件的指标。

  • series_reduction (Optional[Callable[[ndarray], Union[float, ndarray]], None]) – 可选地,一个用于在序列轴上聚合指标的函数。它必须将形状为 (s, t, c)np.ndarray 减少为形状为 (t, c)np.ndarray。该函数以 np.ndarray 和名为 axis 的参数作为输入,并返回减少后的数组。axis 接收值 0,对应于序列轴。如果为 None,将返回每个序列的指标。

  • n_jobs (int) – 要并行运行的作业数量。只有在输入为 Sequence[TimeSeries] 时才会创建并行作业,并行处理不同的 TimeSeries。默认为 1`(顺序执行)。将参数设置为 `-1 表示使用所有可用的处理器。

  • verbose (bool) – 可选地,是否打印操作进度

返回类型

Union[float, List[float], ndarray, List[ndarray]]

返回

  • float – 一个单一的指标评分:

    • 单变量序列。

    • 带有 component_reduction 的单变量序列。

    • 一个包含 series_reductioncomponent_reductiontime_reduction 的单/多变量序列(列表)。

  • np.ndarray – 一个包含指标分数的 numpy 数组。该数组的形状为 (n 时间步长, n 组件),不包括时间和组件的减少。对于:

    • 单变量或多变量序列,且至少 component_reduction=None

    • 单变量/多变量序列,且至少 time_reduction=None

    • 包括 series_reduction 在内的单变量/多变量序列,并且至少有一个 component_reduction=Nonetime_reduction=None

  • List[float] – 与类型 float 相同,但适用于一系列序列。

  • List[np.ndarray] – 与类型 np.ndarray 相同,但适用于一系列序列。

darts.metrics.metrics.mae(actual_series, pred_series, intersect=True, *, component_reduction=<function nanmean>, series_reduction=None, n_jobs=1, verbose=False)[源代码]

平均绝对误差 (MAE)。

对于长度为 \(T\) 的真实序列 \(y\) 和预测序列 \(\hat{y}\),它是按组件/列计算的:

\[\frac{1}{T}\sum_{t=1}^T{|y_t - \hat{y}_t|}\]

如果序列中的任何一个包含多个样本(即随机),\(\hat{y}_t\) 是时间步 \(t\) 所有样本的中位数。

参数
  • actual_series (Union[TimeSeries, Sequence[TimeSeries]]) – 实际系列(的序列)。

  • pred_series (Union[TimeSeries, Sequence[TimeSeries]]) – 预测序列(的序列)。

  • intersect (bool) – 对于在时间上重叠但没有相同时间索引的时间序列,设置 True 将仅考虑它们在共同时间间隔(时间交集)内的值。

  • component_reduction (Optional[Callable[[ndarray], float], None]) – 可选地,一个用于在组件/列轴上聚合指标的函数。它必须将形状为 (t, c)np.ndarray 减少为形状为 (t,)np.ndarray。该函数以一个 np.ndarray 和一个名为 axis 的参数作为输入,并返回减少后的数组。axis 接收值 1,对应于组件轴。如果为 None,将返回每个组件的指标。

  • series_reduction (Optional[Callable[[ndarray], Union[float, ndarray]], None]) – 可选地,一个用于在序列轴上聚合指标的函数。它必须将形状为 (s, t, c)np.ndarray 减少为形状为 (t, c)np.ndarray。该函数以 np.ndarray 和名为 axis 的参数作为输入,并返回减少后的数组。axis 接收值 0,对应于序列轴。如果为 None,将返回每个序列的指标。

  • series_reduction – 可选地,一个以 np.ndarray 为输入并返回标量值或 np.ndarray 的函数。此函数用于在指标在多个序列上评估时(例如,在 Sequence[TimeSeries] 上)聚合指标。默认情况下,返回每个序列的指标。示例:series_reduction=np.nanmean,将返回所有序列指标的平均值。

  • n_jobs (int) – 要并行运行的作业数量。只有在输入为 Sequence[TimeSeries] 时才会创建并行作业,并行处理不同的 TimeSeries。默认为 1`(顺序执行)。将参数设置为 `-1 表示使用所有可用的处理器。

  • verbose (bool) – 可选地,是否打印操作进度

返回类型

Union[float, List[float], ndarray, List[ndarray]]

返回

  • float – 一个单一的指标评分:

    • 单变量序列。

    • 带有 component_reduction 的单变量序列。

    • 包含 series_reductioncomponent_reduction 的单变量/多变量序列(列表)。

  • np.ndarray – 一个包含指标分数的 numpy 数组。该数组的形状为 (n 个组件,),没有组件减少。

    • 单变量或多变量序列,且至少 component_reduction=None

    • 包括 series_reductioncomponent_reduction=None 的单变量/多变量序列序列。

  • List[float] – 与类型 float 相同,但适用于一系列序列。

  • List[np.ndarray] – 与类型 np.ndarray 相同,但适用于一系列序列。

darts.metrics.metrics.mape(actual_series, pred_series, intersect=True, *, component_reduction=<function nanmean>, series_reduction=None, n_jobs=1, verbose=False)[源代码]

平均绝对百分比误差 (MAPE)。

对于真实序列 \(y\) 和预测序列 \(\hat{y}\),长度为 \(T\),它是按每个分量/列计算的百分比值:

\[100 \cdot \frac{1}{T} \sum_{t=1}^{T}{\left| \frac{y_t - \hat{y}_t}{y_t} \right|}\]

注意,如果对于某些 \(t\)\(y_t = 0\),它将引发 ValueError。在这些情况下,考虑使用平均绝对缩放误差(mase())。

如果序列中的任何一个包含多个样本(即随机),\(\hat{y}_t\) 是时间步 \(t\) 所有样本的中位数。

参数
  • actual_series (Union[TimeSeries, Sequence[TimeSeries]]) – 实际系列(的序列)。

  • pred_series (Union[TimeSeries, Sequence[TimeSeries]]) – 预测序列(的序列)。

  • intersect (bool) – 对于在时间上重叠但没有相同时间索引的时间序列,设置 True 将仅考虑它们在共同时间间隔(时间交集)内的值。

  • component_reduction (Optional[Callable[[ndarray], float], None]) – 可选地,一个用于在组件/列轴上聚合指标的函数。它必须将形状为 (t, c)np.ndarray 减少为形状为 (t,)np.ndarray。该函数以一个 np.ndarray 和一个名为 axis 的参数作为输入,并返回减少后的数组。axis 接收值 1,对应于组件轴。如果为 None,将返回每个组件的指标。

  • series_reduction (Optional[Callable[[ndarray], Union[float, ndarray]], None]) – 可选地,一个用于在序列轴上聚合指标的函数。它必须将形状为 (s, t, c)np.ndarray 减少为形状为 (t, c)np.ndarray。该函数以 np.ndarray 和名为 axis 的参数作为输入,并返回减少后的数组。axis 接收值 0,对应于序列轴。如果为 None,将返回每个序列的指标。

  • n_jobs (int) – 要并行运行的作业数量。只有在输入为 Sequence[TimeSeries] 时才会创建并行作业,并行处理不同的 TimeSeries。默认为 1`(顺序执行)。将参数设置为 `-1 表示使用所有可用的处理器。

  • verbose (bool) – 可选地,是否打印操作进度

引发

ValueError – 如果 actual_series 包含一些零。

返回类型

Union[float, List[float], ndarray, List[ndarray]]

返回

  • float – 一个单一的指标评分:

    • 单变量序列。

    • 带有 component_reduction 的单变量序列。

    • 包含 series_reductioncomponent_reduction 的单变量/多变量序列(列表)。

  • np.ndarray – 一个包含指标分数的 numpy 数组。该数组的形状为 (n 个组件,),没有组件减少。

    • 单变量或多变量序列,且至少 component_reduction=None

    • 包括 series_reductioncomponent_reduction=None 的单变量/多变量序列序列。

  • List[float] – 与类型 float 相同,但适用于一系列序列。

  • List[np.ndarray] – 与类型 np.ndarray 相同,但适用于一系列序列。

darts.metrics.metrics.marre(actual_series, pred_series, intersect=True, *, component_reduction=<function nanmean>, series_reduction=None, n_jobs=1, verbose=False)[源代码]

平均绝对范围相对误差 (MARRE)。

对于真实序列 \(y\) 和预测序列 \(\hat{y}\),长度为 \(T\),它是按每个分量/列计算的百分比值:

\[100 \cdot \frac{1}{T} \sum_{t=1}^{T} {\left| \frac{y_t - \hat{y_t}} {\max_t{y_t} - \min_t{y_t}} \right|}\]

如果序列中的任何一个包含多个样本(即随机),\(\hat{y}_t\) 是时间步 \(t\) 所有样本的中位数。

参数
  • actual_series (Union[TimeSeries, Sequence[TimeSeries]]) – 实际系列(的序列)。

  • pred_series (Union[TimeSeries, Sequence[TimeSeries]]) – 预测序列(的序列)。

  • intersect (bool) – 对于在时间上重叠但没有相同时间索引的时间序列,设置 True 将仅考虑它们在共同时间间隔(时间交集)内的值。

  • component_reduction (Optional[Callable[[ndarray], float], None]) – 可选地,一个用于在组件/列轴上聚合指标的函数。它必须将形状为 (t, c)np.ndarray 减少为形状为 (t,)np.ndarray。该函数以一个 np.ndarray 和一个名为 axis 的参数作为输入,并返回减少后的数组。axis 接收值 1,对应于组件轴。如果为 None,将返回每个组件的指标。

  • series_reduction (Optional[Callable[[ndarray], Union[float, ndarray]], None]) – 可选地,一个用于在序列轴上聚合指标的函数。它必须将形状为 (s, t, c)np.ndarray 减少为形状为 (t, c)np.ndarray。该函数以 np.ndarray 和名为 axis 的参数作为输入,并返回减少后的数组。axis 接收值 0,对应于序列轴。如果为 None,将返回每个序列的指标。

  • n_jobs (int) – 要并行运行的作业数量。只有在输入为 Sequence[TimeSeries] 时才会创建并行作业,并行处理不同的 TimeSeries。默认为 1`(顺序执行)。将参数设置为 `-1 表示使用所有可用的处理器。

  • verbose (bool) – 可选地,是否打印操作进度

引发
  • ValueError – 如果 \(\max_t{y_t} = \min_t{y_t}\)

  • float – 单一指标评分用于: - 单一单变量序列。 - 单一多变量序列,使用 component_reduction。 - 序列(列表)的单/多变量序列,使用 series_reductioncomponent_reduction

  • np.ndarray – 一个包含指标分数的 numpy 数组。数组的形状为 (n 个组件,),没有组件减少。对于: - 单个多元时间序列和至少 component_reduction=None。 - 包括 series_reductioncomponent_reduction=None 的单变量/多元时间序列序列。

  • List[float] – 与类型 float 相同,但适用于一系列序列。

  • List[np.ndarray] – 与类型 np.ndarray 相同,但对于一系列序列。

返回类型

Union[float, List[float], ndarray, List[ndarray]]

darts.metrics.metrics.mase(actual_series, pred_series, insample, m=1, intersect=True, *, component_reduction=<function nanmean>, series_reduction=None, n_jobs=1, verbose=False)[源代码]

平均绝对缩放误差 (MASE) (有关缩放预测误差的更多信息,请参见 [1] )。

它是均绝对误差(MAE)按朴素m季节性预测的MAE进行缩放。

对于长度为 \(T\) 的真实序列 \(y\) 和预测序列 \(\hat{y}\),它是按组件/列计算的:

\[$\frac{MAE(y_{t_p+1:t_p+T}, \hat{y}_{t_p+1:t_p+T})}{E_m}$,\]

其中 \(t_p\) 是预测时间(在第一个预测点之前的一步),\(MAE\) 是平均绝对误差(mae()),而 \(E_m\)insample 系列 \(y_{0:t_p}\) 结束的真实系列)上的朴素 m-季节性预测的 MAE:

\[E_m = MAE(y_{m:t_p}, y_{0:t_p - m})。\]

如果序列中的任何一个包含多个样本(即随机),\(\hat{y}_t\) 是时间步 \(t\) 所有样本的中位数。

参数
  • actual_series (Union[TimeSeries, Sequence[TimeSeries]]) – 实际系列(的序列)。

  • pred_series (Union[TimeSeries, Sequence[TimeSeries]]) – 预测序列(的序列)。

  • insample (Union[TimeSeries, Sequence[TimeSeries]]) – 用于预测 pred_series 的训练系列。该系列用于计算在训练数据上朴素预测器所获得误差的尺度。

  • m (int) – 用于计算误差尺度 \(E_m\) 的差分季节性(如指标描述中所述)。\(m=1\) 对应于非季节性的 \(E_m\) 对应于季节性的 \(E_m\)

  • intersect (bool) – 对于在时间上重叠但没有相同时间索引的时间序列,设置 True 将仅考虑它们在共同时间间隔(时间交集)内的值。

  • component_reduction (Optional[Callable[[ndarray], float], None]) – 可选地,一个用于在组件/列轴上聚合指标的函数。它必须将形状为 (t, c)np.ndarray 减少为形状为 (t,)np.ndarray。该函数以一个 np.ndarray 和一个名为 axis 的参数作为输入,并返回减少后的数组。axis 接收值 1,对应于组件轴。如果为 None,将返回每个组件的指标。

  • series_reduction (Optional[Callable[[ndarray], Union[float, ndarray]], None]) – 可选地,一个用于在序列轴上聚合指标的函数。它必须将形状为 (s, t, c)np.ndarray 减少为形状为 (t, c)np.ndarray。该函数以 np.ndarray 和名为 axis 的参数作为输入,并返回减少后的数组。axis 接收值 0,对应于序列轴。如果为 None,将返回每个序列的指标。

  • n_jobs (int) – 要并行运行的作业数量。只有在输入为 Sequence[TimeSeries] 时才会创建并行作业,并行处理不同的 TimeSeries。默认为 1`(顺序执行)。将参数设置为 `-1 表示使用所有可用的处理器。

  • verbose (bool) – 可选地,是否打印操作进度

引发

ValueError – 如果 insample 序列是周期性的( \(y_t = y_{t-m}\) ),或者 insample 中的任何序列在相应的 pred_series 预测开始前一个时间步长结束。

返回类型

Union[float, List[float], ndarray, List[ndarray]]

返回

  • float – 一个单一的指标评分:

    • 单变量序列。

    • 带有 component_reduction 的单变量序列。

    • 包含 series_reductioncomponent_reduction 的单变量/多变量序列(列表)。

  • np.ndarray – 一个包含指标分数的 numpy 数组。该数组的形状为 (n 个组件,),没有组件减少。

    • 单变量或多变量序列,且至少 component_reduction=None

    • 包括 series_reductioncomponent_reduction=None 的单变量/多变量序列序列。

  • List[float] – 与类型 float 相同,但适用于一系列序列。

  • List[np.ndarray] – 与类型 np.ndarray 相同,但适用于一系列序列。

引用

1

https://www.pmorgan.com.au/tutorials/mae%2C-mape%2C-mase-and-the-scaled-rmse/

darts.metrics.metrics.merr(actual_series, pred_series, intersect=True, *, component_reduction=<function nanmean>, series_reduction=None, n_jobs=1, verbose=False)[源代码]

平均误差 (MERR)。

对于长度为 \(T\) 的真实序列 \(y\) 和预测序列 \(\hat{y}\),它是按组件/列计算的:

\[\frac{1}{T}\sum_{t=1}^T{(y_t - \hat{y}_t)}\]

如果序列中的任何一个包含多个样本(即随机),\(\hat{y}_t\) 是时间步 \(t\) 所有样本的中位数。

参数
  • actual_series (Union[TimeSeries, Sequence[TimeSeries]]) – 实际系列(的序列)。

  • pred_series (Union[TimeSeries, Sequence[TimeSeries]]) – 预测序列(的序列)。

  • intersect (bool) – 对于在时间上重叠但没有相同时间索引的时间序列,设置 True 将仅考虑它们在共同时间间隔(时间交集)内的值。

  • component_reduction (Optional[Callable[[ndarray], float], None]) – 可选地,一个用于在组件/列轴上聚合指标的函数。它必须将形状为 (t, c)np.ndarray 减少为形状为 (t,)np.ndarray。该函数以一个 np.ndarray 和一个名为 axis 的参数作为输入,并返回减少后的数组。axis 接收值 1,对应于组件轴。如果为 None,将返回每个组件的指标。

  • series_reduction (Optional[Callable[[ndarray], Union[float, ndarray]], None]) – 可选地,一个用于在序列轴上聚合指标的函数。它必须将形状为 (s, t, c)np.ndarray 减少为形状为 (t, c)np.ndarray。该函数以 np.ndarray 和名为 axis 的参数作为输入,并返回减少后的数组。axis 接收值 0,对应于序列轴。如果为 None,将返回每个序列的指标。

  • n_jobs (int) – 要并行运行的作业数量。只有在输入为 Sequence[TimeSeries] 时才会创建并行作业,并行处理不同的 TimeSeries。默认为 1`(顺序执行)。将参数设置为 `-1 表示使用所有可用的处理器。

  • verbose (bool) – 可选地,是否打印操作进度

返回类型

Union[float, List[float], ndarray, List[ndarray]]

返回

  • float – 一个单一的指标评分:

    • 单变量序列。

    • 带有 component_reduction 的单变量序列。

    • 包含 series_reductioncomponent_reduction 的单变量/多变量序列(列表)。

  • np.ndarray – 一个包含指标分数的 numpy 数组。该数组的形状为 (n 个组件,),没有组件减少。

    • 单变量或多变量序列,且至少 component_reduction=None

    • 包括 series_reductioncomponent_reduction=None 的单变量/多变量序列序列。

  • List[float] – 与类型 float 相同,但适用于一系列序列。

  • List[np.ndarray] – 与类型 np.ndarray 相同,但适用于一系列序列。

darts.metrics.metrics.mql(actual_series, pred_series, q=0.5, intersect=True, *, component_reduction=<function nanmean>, series_reduction=None, n_jobs=1, verbose=False)[源代码]

平均分位数损失 (MQL)。

也称为弹球损失。QL 是一种量化随机/概率 pred_series 中包含 N 个样本的预测值分布中特定分位数 \(q\) 准确性的指标。

MQL 首先计算所有样本值和每个时间步的损失的分位数,然后在时间轴上取平均值。

对于真实的序列 \(y\) 和预测的随机/概率序列(包含 N 个样本) \(\hat{y}\) ,其形状为 \(T \times N\) ,它是按列/分量计算的:

\[2 \frac{1}{T}\sum_{t=1}^T{\max((q - 1) (y_t - \hat{y}_{t,q}), q (y_t - \hat{y}_{t,q}))},\]

其中 \(\hat{y}_{t,q}\) 是时间 \(t\) 时所有预测样本值的分位数 \(q\)。因子 2 使得损失更具可解释性,因为对于 q=0.5,损失与平均绝对误差(mae())相同。

参数
  • actual_series (Union[TimeSeries, Sequence[TimeSeries]]) – 实际系列(的序列)。

  • pred_series (Union[TimeSeries, Sequence[TimeSeries]]) – 预测序列(的序列)。

  • q (float) – 损失感兴趣的分位数(浮点数 [0, 1])。

  • intersect (bool) – 对于在时间上重叠但没有相同时间索引的时间序列,设置 True 将仅考虑它们在共同时间间隔(时间交集)内的值。

  • component_reduction (Optional[Callable[[ndarray], float], None]) – 可选地,一个用于在组件/列轴上聚合指标的函数。它必须将形状为 (t, c)np.ndarray 减少为形状为 (t,)np.ndarray。该函数以一个 np.ndarray 和一个名为 axis 的参数作为输入,并返回减少后的数组。axis 接收值 1,对应于组件轴。如果为 None,将返回每个组件的指标。

  • series_reduction (Optional[Callable[[ndarray], Union[float, ndarray]], None]) – 可选地,一个用于在序列轴上聚合指标的函数。它必须将形状为 (s, t, c)np.ndarray 减少为形状为 (t, c)np.ndarray。该函数以 np.ndarray 和名为 axis 的参数作为输入,并返回减少后的数组。axis 接收值 0,对应于序列轴。如果为 None,将返回每个序列的指标。

  • n_jobs (int) – 要并行运行的作业数量。只有在输入为 Sequence[TimeSeries] 时才会创建并行作业,并行处理不同的 TimeSeries。默认为 1`(顺序执行)。将参数设置为 `-1 表示使用所有可用的处理器。

  • verbose (bool) – 可选地,是否打印操作进度

返回类型

Union[float, List[float], ndarray, List[ndarray]]

返回

  • float – 一个单一的指标评分:

    • 单变量序列。

    • 带有 component_reduction 的单变量序列。

    • 包含 series_reductioncomponent_reduction 的单变量/多变量序列(列表)。

  • np.ndarray – 一个包含指标分数的 numpy 数组。该数组的形状为 (n 个组件,),没有组件减少。

    • 单变量或多变量序列,且至少 component_reduction=None

    • 包括 series_reductioncomponent_reduction=None 的单变量/多变量序列序列。

  • List[float] – 与类型 float 相同,但适用于一系列序列。

  • List[np.ndarray] – 与类型 np.ndarray 相同,但适用于一系列序列。

darts.metrics.metrics.mse(actual_series, pred_series, intersect=True, *, component_reduction=<function nanmean>, series_reduction=None, n_jobs=1, verbose=False)[源代码]

均方误差 (MSE)。

对于长度为 \(T\) 的真实序列 \(y\) 和预测序列 \(\hat{y}\),它是按组件/列计算的:

\[\frac{1}{T}\sum_{t=1}^T{(y_t - \hat{y}_t)^2}.\]

如果序列中的任何一个包含多个样本(即随机),\(\hat{y}_t\) 是时间步 \(t\) 所有样本的中位数。

参数
  • actual_series (Union[TimeSeries, Sequence[TimeSeries]]) – 实际系列(的序列)。

  • pred_series (Union[TimeSeries, Sequence[TimeSeries]]) – 预测序列(的序列)。

  • intersect (bool) – 对于在时间上重叠但没有相同时间索引的时间序列,设置 True 将仅考虑它们在共同时间间隔(时间交集)内的值。

  • component_reduction (Optional[Callable[[ndarray], float], None]) – 可选地,一个用于在组件/列轴上聚合指标的函数。它必须将形状为 (t, c)np.ndarray 减少为形状为 (t,)np.ndarray。该函数以一个 np.ndarray 和一个名为 axis 的参数作为输入,并返回减少后的数组。axis 接收值 1,对应于组件轴。如果为 None,将返回每个组件的指标。

  • series_reduction (Optional[Callable[[ndarray], Union[float, ndarray]], None]) – 可选地,一个用于在序列轴上聚合指标的函数。它必须将形状为 (s, t, c)np.ndarray 减少为形状为 (t, c)np.ndarray。该函数以 np.ndarray 和名为 axis 的参数作为输入,并返回减少后的数组。axis 接收值 0,对应于序列轴。如果为 None,将返回每个序列的指标。

  • n_jobs (int) – 要并行运行的作业数量。只有在输入为 Sequence[TimeSeries] 时才会创建并行作业,并行处理不同的 TimeSeries。默认为 1`(顺序执行)。将参数设置为 `-1 表示使用所有可用的处理器。

  • verbose (bool) – 可选地,是否打印操作进度

返回类型

Union[float, List[float], ndarray, List[ndarray]]

返回

  • float – 一个单一的指标评分:

    • 单变量序列。

    • 带有 component_reduction 的单变量序列。

    • 包含 series_reductioncomponent_reduction 的单变量/多变量序列(列表)。

  • np.ndarray – 一个包含指标分数的 numpy 数组。该数组的形状为 (n 个组件,),没有组件减少。

    • 单变量或多变量序列,且至少 component_reduction=None

    • 包括 series_reductioncomponent_reduction=None 的单变量/多变量序列序列。

  • List[float] – 与类型 float 相同,但适用于一系列序列。

  • List[np.ndarray] – 与类型 np.ndarray 相同,但适用于一系列序列。

darts.metrics.metrics.msse(actual_series, pred_series, insample, m=1, intersect=True, *, component_reduction=<function nanmean>, series_reduction=None, n_jobs=1, verbose=False)[源代码]

均方缩放误差 (MSSE) (有关缩放预测误差的更多信息,请参见 [1] )。

它是均方误差(MSE)按朴素m季节性预测的MSE进行缩放的结果。

对于长度为 \(T\) 的真实序列 \(y\) 和预测序列 \(\hat{y}\),它是按组件/列计算的:

\[\frac{MSE(y_{t_p+1:t_p+T}, \hat{y}_{t_p+1:t_p+T})}{E_m},\]

其中 \(t_p\) 是预测时间(在第一个预测点之前的一步),\(MSE\) 是均方误差(mse()),而 \(E_m\) 是在 insample 系列 \(y_{0:t_p}\) 结尾的真实系列)上进行朴素 m-季节性预测的均方误差:

\[E_m = MSE(y_{m:t_p}, y_{0:t_p - m})。\]

如果序列中的任何一个包含多个样本(即随机),\(\hat{y}_t\) 是时间步 \(t\) 所有样本的中位数。

参数
  • actual_series (Union[TimeSeries, Sequence[TimeSeries]]) – 实际系列(的序列)。

  • pred_series (Union[TimeSeries, Sequence[TimeSeries]]) – 预测序列(的序列)。

  • insample (Union[TimeSeries, Sequence[TimeSeries]]) – 用于预测 pred_series 的训练系列。该系列用于计算在训练数据上朴素预测器所获得误差的尺度。

  • m (int) – 用于计算误差尺度 \(E_m\) 的差分季节性(如指标描述中所述)。\(m=1\) 对应于非季节性的 \(E_m\) 对应于季节性的 \(E_m\)

  • intersect (bool) – 对于在时间上重叠但没有相同时间索引的时间序列,设置 True 将仅考虑它们在共同时间间隔(时间交集)内的值。

  • component_reduction (Optional[Callable[[ndarray], float], None]) – 可选地,一个用于在组件/列轴上聚合指标的函数。它必须将形状为 (t, c)np.ndarray 减少为形状为 (t,)np.ndarray。该函数以一个 np.ndarray 和一个名为 axis 的参数作为输入,并返回减少后的数组。axis 接收值 1,对应于组件轴。如果为 None,将返回每个组件的指标。

  • series_reduction (Optional[Callable[[ndarray], Union[float, ndarray]], None]) – 可选地,一个用于在序列轴上聚合指标的函数。它必须将形状为 (s, t, c)np.ndarray 减少为形状为 (t, c)np.ndarray。该函数以 np.ndarray 和名为 axis 的参数作为输入,并返回减少后的数组。axis 接收值 0,对应于序列轴。如果为 None,将返回每个序列的指标。

  • n_jobs (int) – 要并行运行的作业数量。只有在输入为 Sequence[TimeSeries] 时才会创建并行作业,并行处理不同的 TimeSeries。默认为 1`(顺序执行)。将参数设置为 `-1 表示使用所有可用的处理器。

  • verbose (bool) – 可选地,是否打印操作进度

引发

ValueError – 如果 insample 序列是周期性的( \(y_t = y_{t-m}\) ),或者 insample 中的任何序列在相应的 pred_series 预测开始前一个时间步长结束。

返回类型

Union[float, List[float], ndarray, List[ndarray]]

返回

  • float – 一个单一的指标评分:

    • 单变量序列。

    • 带有 component_reduction 的单变量序列。

    • 包含 series_reductioncomponent_reduction 的单变量/多变量序列(列表)。

  • np.ndarray – 一个包含指标分数的 numpy 数组。该数组的形状为 (n 个组件,),没有组件减少。

    • 单变量或多变量序列,且至少 component_reduction=None

    • 包括 series_reductioncomponent_reduction=None 的单变量/多变量序列序列。

  • List[float] – 与类型 float 相同,但适用于一系列序列。

  • List[np.ndarray] – 与类型 np.ndarray 相同,但适用于一系列序列。

引用

1

https://www.pmorgan.com.au/tutorials/mae%2C-mape%2C-mase-and-the-scaled-rmse/

darts.metrics.metrics.multi_ts_support(func)[源代码]

这个装饰器进一步适应了那些以两个(或三个,对于带有 insample 的比例指标)单变量/多变量 TimeSeries 实例作为输入的指标,增加了对等长 TimeSeries 序列的支持。装饰器计算具有相同索引的 TimeSeries 的成对指标,并返回一个浮点值,该值是根据所有成对指标使用作为指标函数参数传递的 series_reduction 子程序计算得出的。

如果输入的是 ‘Sequence[TimeSeries]’,此装饰器还提供了关于不同 TimeSeries 的指标评估的并行化(如果 n_jobs 参数未设置为 1)。

返回类型

Callable[…, Union[float, List[float], ndarray, List[ndarray]]]

darts.metrics.metrics.multivariate_support(func)[源代码]

这个装饰器将一个输入为两个单变量 TimeSeries 实例的度量函数转换为一个输入为两个等大小多变量 TimeSeries 实例的函数,计算具有相同索引的组件之间的成对单变量度量,并返回一个浮点值,该值是使用作为度量函数参数传递的 component_reduction 子例程对所有单变量度量进行函数计算的结果。

返回类型

Callable[…, Union[float, List[float], ndarray, List[ndarray]]]

darts.metrics.metrics.ope(actual_series, pred_series, intersect=True, *, component_reduction=<function nanmean>, series_reduction=None, n_jobs=1, verbose=False)[源代码]

总体百分比误差 (OPE)。

对于真实序列 \(y\) 和预测序列 \(\hat{y}\),长度为 \(T\),它是按每个分量/列计算的百分比值:

\[100 \cdot \left| \frac{\sum_{t=1}^{T}{y_t} - \sum_{t=1}^{T}{\hat{y}_t}}{\sum_{t=1}^{T}{y_t}} \right|.\]

如果序列中的任何一个包含多个样本(即随机),\(\hat{y}_t\) 是时间步 \(t\) 所有样本的中位数。

参数
  • actual_series (Union[TimeSeries, Sequence[TimeSeries]]) – 实际系列(的序列)。

  • pred_series (Union[TimeSeries, Sequence[TimeSeries]]) – 预测序列(的序列)。

  • intersect (bool) – 对于在时间上重叠但没有相同时间索引的时间序列,设置 True 将仅考虑它们在共同时间间隔(时间交集)内的值。

  • component_reduction (Optional[Callable[[ndarray], float], None]) – 可选地,一个用于在组件/列轴上聚合指标的函数。它必须将形状为 (t, c)np.ndarray 减少为形状为 (t,)np.ndarray。该函数以一个 np.ndarray 和一个名为 axis 的参数作为输入,并返回减少后的数组。axis 接收值 1,对应于组件轴。如果为 None,将返回每个组件的指标。

  • series_reduction (Optional[Callable[[ndarray], Union[float, ndarray]], None]) – 可选地,一个用于在序列轴上聚合指标的函数。它必须将形状为 (s, t, c)np.ndarray 减少为形状为 (t, c)np.ndarray。该函数以 np.ndarray 和名为 axis 的参数作为输入,并返回减少后的数组。axis 接收值 0,对应于序列轴。如果为 None,将返回每个序列的指标。

  • n_jobs (int) – 要并行运行的作业数量。只有在输入为 Sequence[TimeSeries] 时才会创建并行作业,并行处理不同的 TimeSeries。默认为 1`(顺序执行)。将参数设置为 `-1 表示使用所有可用的处理器。

  • verbose (bool) – 可选地,是否打印操作进度

引发

ValueError – 如果 \(\sum_{t=1}^{T}{y_t} = 0\)

返回类型

Union[float, List[float], ndarray, List[ndarray]]

返回

  • float – 一个单一的指标评分:

    • 单变量序列。

    • 带有 component_reduction 的单变量序列。

    • 包含 series_reductioncomponent_reduction 的单变量/多变量序列(列表)。

  • np.ndarray – 一个包含指标分数的 numpy 数组。该数组的形状为 (n 个组件,),没有组件减少。

    • 单变量或多变量序列,且至少 component_reduction=None

    • 包括 series_reductioncomponent_reduction=None 的单变量/多变量序列序列。

  • List[float] – 与类型 float 相同,但适用于一系列序列。

  • List[np.ndarray] – 与类型 np.ndarray 相同,但适用于一系列序列。

darts.metrics.metrics.ql(actual_series, pred_series, q=0.5, intersect=True, *, time_reduction=None, component_reduction=<function nanmean>, series_reduction=None, n_jobs=1, verbose=False)[源代码]

分位数损失 (QL)。

也称为弹球损失。QL 是一种量化随机/概率 pred_series 中包含 N 个样本的预测值分布中特定分位数 \(q\) 准确性的指标。

QL 计算所有样本值的分位数以及每个时间步的损失。

对于真实序列 \(y\) 和预测的随机/概率序列(包含 N 个样本) \(\hat{y}\),其形状为 \(T \times N\),它是按列/分量和时间步 \(t\) 计算的:

\[ \begin{align}\begin{aligned}2 \max((q - 1) (y_t - \hat{y}_{t,q}), q (y_t - \hat{y}_{t,q})),\\2 \max((q - 1) (y_t - \hat{y}_{t,q}), q (y_t - \hat{y}_{t,q})),\end{aligned}\end{align} \]

其中 \(\hat{y}_{t,q}\) 是时间 \(t\) 时所有预测样本值的分位数 \(q\)。因子 2 使得损失更具可解释性,因为对于 q=0.5,损失与绝对误差 (ae()) 相同。

参数
  • actual_series (Union[TimeSeries, Sequence[TimeSeries]]) – 实际系列(的序列)。

  • pred_series (Union[TimeSeries, Sequence[TimeSeries]]) – 预测序列(的序列)。

  • q (float) – 损失感兴趣的分位数(浮点数 [0, 1])。

  • intersect (bool) – 对于在时间上重叠但没有相同时间索引的时间序列,设置 True 将仅考虑它们在共同时间间隔(时间交集)内的值。

  • component_reduction (Optional[Callable[[ndarray], float], None]) – 可选地,一个用于在组件/列轴上聚合指标的函数。它必须将形状为 (t, c)np.ndarray 减少为形状为 (t,)np.ndarray。该函数以一个 np.ndarray 和一个名为 axis 的参数作为输入,并返回减少后的数组。axis 接收值 1,对应于组件轴。如果为 None,将返回每个组件的指标。

  • time_reduction (Optional[Callable[…, ndarray], None]) – 可选地,一个用于在时间轴上聚合指标的函数。它必须将形状为 (t, c)np.ndarray 缩减为形状为 (c,)np.ndarray。该函数以 np.ndarray 和一个名为 axis 的参数作为输入,并返回缩减后的数组。axis 接收值 0,对应于时间轴。如果为 None,将返回每个时间步的指标。

  • series_reduction (Optional[Callable[[ndarray], Union[float, ndarray]], None]) – 可选地,一个用于在序列轴上聚合指标的函数。它必须将形状为 (s, t, c)np.ndarray 减少为形状为 (t, c)np.ndarray。该函数以 np.ndarray 和名为 axis 的参数作为输入,并返回减少后的数组。axis 接收值 0,对应于序列轴。如果为 None,将返回每个序列的指标。

  • n_jobs (int) – 要并行运行的作业数量。只有在输入为 Sequence[TimeSeries] 时才会创建并行作业,并行处理不同的 TimeSeries。默认为 1`(顺序执行)。将参数设置为 `-1 表示使用所有可用的处理器。

  • verbose (bool) – 可选地,是否打印操作进度

返回类型

Union[float, List[float], ndarray, List[ndarray]]

返回

  • float – 一个单一的指标评分:

    • 单变量序列。

    • 带有 component_reduction 的单变量序列。

    • 一个包含 series_reductioncomponent_reductiontime_reduction 的单/多变量序列(列表)。

  • np.ndarray – 一个包含指标分数的 numpy 数组。该数组的形状为 (n 时间步长, n 组件),不包括时间和组件的减少。对于:

    • 单变量或多变量序列,且至少 component_reduction=None

    • 单变量/多变量序列,且至少 time_reduction=None

    • 包括 series_reduction 在内的单变量/多变量序列,并且至少有一个 component_reduction=Nonetime_reduction=None

  • List[float] – 与类型 float 相同,但适用于一系列序列。

  • List[np.ndarray] – 与类型 np.ndarray 相同,但适用于一系列序列。

darts.metrics.metrics.qr(actual_series, pred_series, q=0.5, intersect=True, *, component_reduction=<function nanmean>, series_reduction=None, n_jobs=1, verbose=False)[源代码]

分位数风险 (QR)

QR 是一个度量标准,用于量化随机/概率 pred_series 中包含 N 个样本的预测值分布中特定分位数 \(q\) 的准确性。

与分位数损失(QL)的主要区别在于,分位数回归(QR)计算的是沿时间轴汇总的所有样本值总和的分位数和损失(QL 计算的是每个时间步的分位数和损失)。

对于真实的序列 \(y\) 和预测的随机/概率序列(包含 N 个样本) \(\hat{y}\) ,其形状为 \(T \times N\) ,它是按列/分量计算的:

\[2 \frac{QL(Z, \hat{Z}_q)}{Z},\]

其中 \(QL\) 是分位数损失(ql()),\(Z = \sum_{t=1}^{T} y_t\) 是所有目标/实际值的总和,\(\hat{Z} = \sum_{t=1}^{T} \hat{y}_t\) 是沿时间轴所有预测样本的总和,而 \(\hat{Z}_q\) 是该总和的分位数 \(q\)

参数
  • actual_series (Union[TimeSeries, Sequence[TimeSeries]]) – 实际系列(的序列)。

  • pred_series (Union[TimeSeries, Sequence[TimeSeries]]) – 预测序列(的序列)。

  • q (float) – 风险评估中感兴趣的分位数(浮点数 [0, 1])。

  • intersect (bool) – 对于在时间上重叠但没有相同时间索引的时间序列,设置 True 将仅考虑它们在共同时间间隔(时间交集)内的值。

  • component_reduction (Optional[Callable[[ndarray], float], None]) – 可选地,一个用于在组件/列轴上聚合指标的函数。它必须将形状为 (t, c)np.ndarray 减少为形状为 (t,)np.ndarray。该函数以一个 np.ndarray 和一个名为 axis 的参数作为输入,并返回减少后的数组。axis 接收值 1,对应于组件轴。如果为 None,将返回每个组件的指标。

  • series_reduction (Optional[Callable[[ndarray], Union[float, ndarray]], None]) – 可选地,一个用于在序列轴上聚合指标的函数。它必须将形状为 (s, t, c)np.ndarray 减少为形状为 (t, c)np.ndarray。该函数以 np.ndarray 和名为 axis 的参数作为输入,并返回减少后的数组。axis 接收值 0,对应于序列轴。如果为 None,将返回每个序列的指标。

  • n_jobs (int) – 要并行运行的作业数量。只有在输入为 Sequence[TimeSeries] 时才会创建并行作业,并行处理不同的 TimeSeries。默认为 1`(顺序执行)。将参数设置为 `-1 表示使用所有可用的处理器。

  • verbose (bool) – 可选地,是否打印操作进度

返回类型

Union[float, List[float], ndarray, List[ndarray]]

返回

  • float – 一个单一的指标评分:

    • 单变量序列。

    • 带有 component_reduction 的单变量序列。

    • 包含 series_reductioncomponent_reduction 的单变量/多变量序列(列表)。

  • np.ndarray – 一个包含指标分数的 numpy 数组。该数组的形状为 (n 个组件,),没有组件减少。

    • 单变量或多变量序列,且至少 component_reduction=None

    • 包括 series_reductioncomponent_reduction=None 的单变量/多变量序列序列。

  • List[float] – 与类型 float 相同,但适用于一系列序列。

  • List[np.ndarray] – 与类型 np.ndarray 相同,但适用于一系列序列。

darts.metrics.metrics.r2_score(actual_series, pred_series, intersect=True, *, component_reduction=<function nanmean>, series_reduction=None, n_jobs=1, verbose=False)[源代码]

决定系数 \(R^2\) (详见 [1] )。

对于长度为 \(T\) 的真实序列 \(y\) 和预测序列 \(\hat{y}\),它是按组件/列计算的:

\[1 - \frac{\sum_{t=1}^T{(y_t - \hat{y}_t)^2}}{\sum_{t=1}^T{(y_t - \bar{y})^2}},\]

其中 \(\bar{y}\)\(y\) 在所有时间步上的均值。

这个指标不是对称的。

如果序列中的任何一个包含多个样本(即随机),\(\hat{y}_t\) 是时间步 \(t\) 所有样本的中位数。

参数
  • actual_series (Union[TimeSeries, Sequence[TimeSeries]]) – 实际系列(的序列)。

  • pred_series (Union[TimeSeries, Sequence[TimeSeries]]) – 预测序列(的序列)。

  • intersect (bool) – 对于在时间上重叠但没有相同时间索引的时间序列,设置 True 将仅考虑它们在共同时间间隔(时间交集)内的值。

  • component_reduction (Optional[Callable[[ndarray], float], None]) – 可选地,一个用于在组件/列轴上聚合指标的函数。它必须将形状为 (t, c)np.ndarray 减少为形状为 (t,)np.ndarray。该函数以一个 np.ndarray 和一个名为 axis 的参数作为输入,并返回减少后的数组。axis 接收值 1,对应于组件轴。如果为 None,将返回每个组件的指标。

  • series_reduction (Optional[Callable[[ndarray], Union[float, ndarray]], None]) – 可选地,一个用于在序列轴上聚合指标的函数。它必须将形状为 (s, t, c)np.ndarray 减少为形状为 (t, c)np.ndarray。该函数以 np.ndarray 和名为 axis 的参数作为输入,并返回减少后的数组。axis 接收值 0,对应于序列轴。如果为 None,将返回每个序列的指标。

  • n_jobs (int) – 要并行运行的作业数量。只有在输入为 Sequence[TimeSeries] 时才会创建并行作业,并行处理不同的 TimeSeries。默认为 1`(顺序执行)。将参数设置为 `-1 表示使用所有可用的处理器。

  • verbose (bool) – 可选地,是否打印操作进度

返回类型

Union[float, List[float], ndarray, List[ndarray]]

返回

  • float – 一个单一的指标评分:

    • 单变量序列。

    • 带有 component_reduction 的单变量序列。

    • 包含 series_reductioncomponent_reduction 的单变量/多变量序列(列表)。

  • np.ndarray – 一个包含指标分数的 numpy 数组。该数组的形状为 (n 个组件,),没有组件减少。

    • 单变量或多变量序列,且至少 component_reduction=None

    • 包括 series_reductioncomponent_reduction=None 的单变量/多变量序列序列。

  • List[float] – 与类型 float 相同,但适用于一系列序列。

  • List[np.ndarray] – 与类型 np.ndarray 相同,但适用于一系列序列。

引用

1

https://en.wikipedia.org/wiki/决定系数

darts.metrics.metrics.rmse(actual_series, pred_series, intersect=True, *, component_reduction=<function nanmean>, series_reduction=None, n_jobs=1, verbose=False)[源代码]

均方根误差 (RMSE)。

对于长度为 \(T\) 的真实序列 \(y\) 和预测序列 \(\hat{y}\),它是按组件/列计算的:

\[$\sqrt{\frac{1}{T}\sum_{t=1}^T{(y_t - \hat{y}_t)^2}}$\]

如果序列中的任何一个包含多个样本(即随机),\(\hat{y}_t\) 是时间步 \(t\) 所有样本的中位数。

参数
  • actual_series (Union[TimeSeries, Sequence[TimeSeries]]) – 实际系列(的序列)。

  • pred_series (Union[TimeSeries, Sequence[TimeSeries]]) – 预测序列(的序列)。

  • intersect (bool) – 对于在时间上重叠但没有相同时间索引的时间序列,设置 True 将仅考虑它们在共同时间间隔(时间交集)内的值。

  • component_reduction (Optional[Callable[[ndarray], float], None]) – 可选地,一个用于在组件/列轴上聚合指标的函数。它必须将形状为 (t, c)np.ndarray 减少为形状为 (t,)np.ndarray。该函数以一个 np.ndarray 和一个名为 axis 的参数作为输入,并返回减少后的数组。axis 接收值 1,对应于组件轴。如果为 None,将返回每个组件的指标。

  • series_reduction (Optional[Callable[[ndarray], Union[float, ndarray]], None]) – 可选地,一个用于在序列轴上聚合指标的函数。它必须将形状为 (s, t, c)np.ndarray 减少为形状为 (t, c)np.ndarray。该函数以 np.ndarray 和名为 axis 的参数作为输入,并返回减少后的数组。axis 接收值 0,对应于序列轴。如果为 None,将返回每个序列的指标。

  • n_jobs (int) – 要并行运行的作业数量。只有在输入为 Sequence[TimeSeries] 时才会创建并行作业,并行处理不同的 TimeSeries。默认为 1`(顺序执行)。将参数设置为 `-1 表示使用所有可用的处理器。

  • verbose (bool) – 可选地,是否打印操作进度

返回类型

Union[float, List[float], ndarray, List[ndarray]]

返回

  • float – 一个单一的指标评分:

    • 单变量序列。

    • 带有 component_reduction 的单变量序列。

    • 包含 series_reductioncomponent_reduction 的单变量/多变量序列(列表)。

  • np.ndarray – 一个包含指标分数的 numpy 数组。该数组的形状为 (n 个组件,),没有组件减少。

    • 单变量或多变量序列,且至少 component_reduction=None

    • 包括 series_reductioncomponent_reduction=None 的单变量/多变量序列序列。

  • List[float] – 与类型 float 相同,但适用于一系列序列。

  • List[np.ndarray] – 与类型 np.ndarray 相同,但适用于一系列序列。

darts.metrics.metrics.rmsle(actual_series, pred_series, intersect=True, *, component_reduction=<function nanmean>, series_reduction=None, n_jobs=1, verbose=False)[源代码]

均方根对数误差 (RMSLE)。

对于长度为 \(T\) 的真实序列 \(y\) 和预测序列 \(\hat{y}\),它是按组件/列计算的:

\[$\sqrt{\frac{1}{T}\sum_{t=1}^T{\left(\log{(y_t + 1)} - \log{(\hat{y}_t + 1)}\right)^2}}$\]

使用自然对数。

如果序列中的任何一个包含多个样本(即随机),\(\hat{y}_t\) 是时间步 \(t\) 所有样本的中位数。

参数
  • actual_series (Union[TimeSeries, Sequence[TimeSeries]]) – 实际系列(的序列)。

  • pred_series (Union[TimeSeries, Sequence[TimeSeries]]) – 预测序列(的序列)。

  • intersect (bool) – 对于在时间上重叠但没有相同时间索引的时间序列,设置 True 将仅考虑它们在共同时间间隔(时间交集)内的值。

  • component_reduction (Optional[Callable[[ndarray], float], None]) – 可选地,一个用于在组件/列轴上聚合指标的函数。它必须将形状为 (t, c)np.ndarray 减少为形状为 (t,)np.ndarray。该函数以一个 np.ndarray 和一个名为 axis 的参数作为输入,并返回减少后的数组。axis 接收值 1,对应于组件轴。如果为 None,将返回每个组件的指标。

  • series_reduction (Optional[Callable[[ndarray], Union[float, ndarray]], None]) – 可选地,一个用于在序列轴上聚合指标的函数。它必须将形状为 (s, t, c)np.ndarray 减少为形状为 (t, c)np.ndarray。该函数以 np.ndarray 和名为 axis 的参数作为输入,并返回减少后的数组。axis 接收值 0,对应于序列轴。如果为 None,将返回每个序列的指标。

  • n_jobs (int) – 要并行运行的作业数量。只有在输入为 Sequence[TimeSeries] 时才会创建并行作业,并行处理不同的 TimeSeries。默认为 1`(顺序执行)。将参数设置为 `-1 表示使用所有可用的处理器。

  • verbose (bool) – 可选地,是否打印操作进度

返回类型

Union[float, List[float], ndarray, List[ndarray]]

返回

  • float – 一个单一的指标评分:

    • 单变量序列。

    • 带有 component_reduction 的单变量序列。

    • 包含 series_reductioncomponent_reduction 的单变量/多变量序列(列表)。

  • np.ndarray – 一个包含指标分数的 numpy 数组。该数组的形状为 (n 个组件,),没有组件减少。

    • 单变量或多变量序列,且至少 component_reduction=None

    • 包括 series_reductioncomponent_reduction=None 的单变量/多变量序列序列。

  • List[float] – 与类型 float 相同,但适用于一系列序列。

  • List[np.ndarray] – 与类型 np.ndarray 相同,但适用于一系列序列。

darts.metrics.metrics.rmsse(actual_series, pred_series, insample, m=1, intersect=True, *, component_reduction=<function nanmean>, series_reduction=None, n_jobs=1, verbose=False)[源代码]

均方根尺度误差 (RMSSE) (有关尺度预测误差的更多信息,请参见 [1] )。

它是均方根误差(RMSE)按朴素m季节性预测的RMSE进行缩放的结果。

对于长度为 \(T\) 的真实序列 \(y\) 和预测序列 \(\hat{y}\),它是按组件/列计算的:

\[\frac{RMSE(y_{t_p+1:t_p+T}, \hat{y}_{t_p+1:t_p+T})}{E_m},\]

其中 \(t_p\) 是预测时间(在第一个预测点之前的一步),\(RMSE\) 是均方根误差(rmse()),而 \(E_m\)insample 系列 \(y_{0:t_p}\) 结束的真实系列)上的朴素 m-季节性预测的 RMSE:

\[E_m = RMSE(y_{m:t_p}, y_{0:t_p - m})。\]

如果序列中的任何一个包含多个样本(即随机),\(\hat{y}_t\) 是时间步 \(t\) 所有样本的中位数。

参数
  • actual_series (Union[TimeSeries, Sequence[TimeSeries]]) – 实际系列(的序列)。

  • pred_series (Union[TimeSeries, Sequence[TimeSeries]]) – 预测序列(的序列)。

  • insample (Union[TimeSeries, Sequence[TimeSeries]]) – 用于预测 pred_series 的训练系列。该系列用于计算在训练数据上朴素预测器所获得误差的尺度。

  • m (int) – 用于计算误差尺度 \(E_m\) 的差分季节性(如指标描述中所述)。\(m=1\) 对应于非季节性的 \(E_m\) 对应于季节性的 \(E_m\)

  • intersect (bool) – 对于在时间上重叠但没有相同时间索引的时间序列,设置 True 将仅考虑它们在共同时间间隔(时间交集)内的值。

  • component_reduction (Optional[Callable[[ndarray], float], None]) – 可选地,一个用于在组件/列轴上聚合指标的函数。它必须将形状为 (t, c)np.ndarray 减少为形状为 (t,)np.ndarray。该函数以一个 np.ndarray 和一个名为 axis 的参数作为输入,并返回减少后的数组。axis 接收值 1,对应于组件轴。如果为 None,将返回每个组件的指标。

  • series_reduction (Optional[Callable[[ndarray], Union[float, ndarray]], None]) – 可选地,一个用于在序列轴上聚合指标的函数。它必须将形状为 (s, t, c)np.ndarray 减少为形状为 (t, c)np.ndarray。该函数以 np.ndarray 和名为 axis 的参数作为输入,并返回减少后的数组。axis 接收值 0,对应于序列轴。如果为 None,将返回每个序列的指标。

  • n_jobs (int) – 要并行运行的作业数量。只有在输入为 Sequence[TimeSeries] 时才会创建并行作业,并行处理不同的 TimeSeries。默认为 1`(顺序执行)。将参数设置为 `-1 表示使用所有可用的处理器。

  • verbose (bool) – 可选地,是否打印操作进度

引发

ValueError – 如果 insample 序列是周期性的( \(y_t = y_{t-m}\) ),或者 insample 中的任何序列在相应的 pred_series 预测开始前一个时间步长结束。

返回类型

Union[float, List[float], ndarray, List[ndarray]]

返回

  • float – 一个单一的指标评分:

    • 单变量序列。

    • 带有 component_reduction 的单变量序列。

    • 包含 series_reductioncomponent_reduction 的单变量/多变量序列(列表)。

  • np.ndarray – 一个包含指标分数的 numpy 数组。该数组的形状为 (n 个组件,),没有组件减少。

    • 单变量或多变量序列,且至少 component_reduction=None

    • 包括 series_reductioncomponent_reduction=None 的单变量/多变量序列序列。

  • List[float] – 与类型 float 相同,但适用于一系列序列。

  • List[np.ndarray] – 与类型 np.ndarray 相同,但适用于一系列序列。

引用

1

https://www.pmorgan.com.au/tutorials/mae%2C-mape%2C-mase-and-the-scaled-rmse/

darts.metrics.metrics.sape(actual_series, pred_series, intersect=True, *, time_reduction=None, component_reduction=<function nanmean>, series_reduction=None, n_jobs=1, verbose=False)[源代码]

对称绝对百分比误差 (sAPE)。

对于真实序列 \(y\) 和预测序列 \(\hat{y}\) ,长度为 \(T\) ,它是按每个分量/列和时间步 \(t\) 计算的百分比值:

\[200 \cdot \frac{\left| y_t - \hat{y}_t \right|}{\left| y_t \right| + \left| \hat{y}_t \right|}\]

注意,如果对于某些 \(t\)\(\left| y_t \right| + \left| \hat{y}_t \right| = 0\),它将引发 ValueError。在这些情况下,考虑使用绝对缩放误差(ase())。

如果序列中的任何一个包含多个样本(即随机),\(\hat{y}_t\) 是时间步 \(t\) 所有样本的中位数。

参数
  • actual_series (Union[TimeSeries, Sequence[TimeSeries]]) – 实际系列(的序列)。

  • pred_series (Union[TimeSeries, Sequence[TimeSeries]]) – 预测序列(的序列)。

  • intersect (bool) – 对于在时间上重叠但没有相同时间索引的时间序列,设置 True 将仅考虑它们在共同时间间隔(时间交集)内的值。

  • time_reduction (Optional[Callable[…, ndarray], None]) – 可选地,一个用于在时间轴上聚合指标的函数。它必须将形状为 (t, c)np.ndarray 缩减为形状为 (c,)np.ndarray。该函数以 np.ndarray 和一个名为 axis 的参数作为输入,并返回缩减后的数组。axis 接收值 0,对应于时间轴。如果为 None,将返回每个时间步的指标。

  • component_reduction (Optional[Callable[[ndarray], float], None]) – 可选地,一个用于在组件/列轴上聚合指标的函数。它必须将形状为 (t, c)np.ndarray 减少为形状为 (t,)np.ndarray。该函数以一个 np.ndarray 和一个名为 axis 的参数作为输入,并返回减少后的数组。axis 接收值 1,对应于组件轴。如果为 None,将返回每个组件的指标。

  • series_reduction (Optional[Callable[[ndarray], Union[float, ndarray]], None]) – 可选地,一个用于在序列轴上聚合指标的函数。它必须将形状为 (s, t, c)np.ndarray 减少为形状为 (t, c)np.ndarray。该函数以 np.ndarray 和名为 axis 的参数作为输入,并返回减少后的数组。axis 接收值 0,对应于序列轴。如果为 None,将返回每个序列的指标。

  • n_jobs (int) – 要并行运行的作业数量。只有在输入为 Sequence[TimeSeries] 时才会创建并行作业,并行处理不同的 TimeSeries。默认为 1`(顺序执行)。将参数设置为 `-1 表示使用所有可用的处理器。

  • verbose (bool) – 可选地,是否打印操作进度

引发

ValueError – 如果 actual_seriespred_series 在同一时间索引处包含一些零。

返回类型

Union[float, List[float], ndarray, List[ndarray]]

返回

  • float – 一个单一的指标评分:

    • 单变量序列。

    • 带有 component_reduction 的单变量序列。

    • 一个包含 series_reductioncomponent_reductiontime_reduction 的单/多变量序列(列表)。

  • np.ndarray – 一个包含指标分数的 numpy 数组。该数组的形状为 (n 时间步长, n 组件),不包括时间和组件的减少。对于:

    • 单变量或多变量序列,且至少 component_reduction=None

    • 单变量/多变量序列,且至少 time_reduction=None

    • 包括 series_reduction 在内的单变量/多变量序列,并且至少有一个 component_reduction=Nonetime_reduction=None

  • List[float] – 与类型 float 相同,但适用于一系列序列。

  • List[np.ndarray] – 与类型 np.ndarray 相同,但适用于一系列序列。

darts.metrics.metrics.se(actual_series, pred_series, intersect=True, *, time_reduction=None, component_reduction=<function nanmean>, series_reduction=None, n_jobs=1, verbose=False)[源代码]

平方误差 (SE)。

对于长度为 \(T\) 的真实序列 \(y\) 和预测序列 \(\hat{y}\),它是按组件/列和时间步 \(t\) 计算的:

\[(y_t - \hat{y}_t)^2.\]

如果序列中的任何一个包含多个样本(即随机),\(\hat{y}_t\) 是时间步 \(t\) 所有样本的中位数。

参数
  • actual_series (Union[TimeSeries, Sequence[TimeSeries]]) – 实际系列(的序列)。

  • pred_series (Union[TimeSeries, Sequence[TimeSeries]]) – 预测序列(的序列)。

  • intersect (bool) – 对于在时间上重叠但没有相同时间索引的时间序列,设置 True 将仅考虑它们在共同时间间隔(时间交集)内的值。

  • time_reduction (Optional[Callable[…, ndarray], None]) – 可选地,一个用于在时间轴上聚合指标的函数。它必须将形状为 (t, c)np.ndarray 缩减为形状为 (c,)np.ndarray。该函数以 np.ndarray 和一个名为 axis 的参数作为输入,并返回缩减后的数组。axis 接收值 0,对应于时间轴。如果为 None,将返回每个时间步的指标。

  • component_reduction (Optional[Callable[[ndarray], float], None]) – 可选地,一个用于在组件/列轴上聚合指标的函数。它必须将形状为 (t, c)np.ndarray 减少为形状为 (t,)np.ndarray。该函数以一个 np.ndarray 和一个名为 axis 的参数作为输入,并返回减少后的数组。axis 接收值 1,对应于组件轴。如果为 None,将返回每个组件的指标。

  • series_reduction (Optional[Callable[[ndarray], Union[float, ndarray]], None]) – 可选地,一个用于在序列轴上聚合指标的函数。它必须将形状为 (s, t, c)np.ndarray 减少为形状为 (t, c)np.ndarray。该函数以 np.ndarray 和名为 axis 的参数作为输入,并返回减少后的数组。axis 接收值 0,对应于序列轴。如果为 None,将返回每个序列的指标。

  • n_jobs (int) – 要并行运行的作业数量。只有在输入为 Sequence[TimeSeries] 时才会创建并行作业,并行处理不同的 TimeSeries。默认为 1`(顺序执行)。将参数设置为 `-1 表示使用所有可用的处理器。

  • verbose (bool) – 可选地,是否打印操作进度

返回类型

Union[float, List[float], ndarray, List[ndarray]]

返回

  • float – 一个单一的指标评分:

    • 单变量序列。

    • 带有 component_reduction 的单变量序列。

    • 一个包含 series_reductioncomponent_reductiontime_reduction 的单/多变量序列(列表)。

  • np.ndarray – 一个包含指标分数的 numpy 数组。该数组的形状为 (n 时间步长, n 组件),不包括时间和组件的减少。对于:

    • 单变量或多变量序列,且至少 component_reduction=None

    • 单变量/多变量序列,且至少 time_reduction=None

    • 包括 series_reduction 在内的单变量/多变量序列,并且至少有一个 component_reduction=Nonetime_reduction=None

  • List[float] – 与类型 float 相同,但适用于一系列序列。

  • List[np.ndarray] – 与类型 np.ndarray 相同,但适用于一系列序列。

darts.metrics.metrics.sle(actual_series, pred_series, intersect=True, *, time_reduction=None, component_reduction=<function nanmean>, series_reduction=None, n_jobs=1, verbose=False)[源代码]

平方对数误差 (SLE)。

对于长度为 \(T\) 的真实序列 \(y\) 和预测序列 \(\hat{y}\),它是按组件/列和时间步 \(t\) 计算的:

\[\begin{split}\\left(\\log{(y_t + 1)} - \\log{(\\hat{y} + 1)}\\right)^2\end{split}\]

使用自然对数。

如果序列中的任何一个包含多个样本(即随机),\(\hat{y}_t\) 是时间步 \(t\) 所有样本的中位数。

参数
  • actual_series (Union[TimeSeries, Sequence[TimeSeries]]) – 实际系列(的序列)。

  • pred_series (Union[TimeSeries, Sequence[TimeSeries]]) – 预测序列(的序列)。

  • intersect (bool) – 对于在时间上重叠但没有相同时间索引的时间序列,设置 True 将仅考虑它们在共同时间间隔(时间交集)内的值。

  • time_reduction (Optional[Callable[…, ndarray], None]) – 可选地,一个用于在时间轴上聚合指标的函数。它必须将形状为 (t, c)np.ndarray 缩减为形状为 (c,)np.ndarray。该函数以 np.ndarray 和一个名为 axis 的参数作为输入,并返回缩减后的数组。axis 接收值 0,对应于时间轴。如果为 None,将返回每个时间步的指标。

  • component_reduction (Optional[Callable[[ndarray], float], None]) – 可选地,一个用于在组件/列轴上聚合指标的函数。它必须将形状为 (t, c)np.ndarray 减少为形状为 (t,)np.ndarray。该函数以一个 np.ndarray 和一个名为 axis 的参数作为输入,并返回减少后的数组。axis 接收值 1,对应于组件轴。如果为 None,将返回每个组件的指标。

  • series_reduction (Optional[Callable[[ndarray], Union[float, ndarray]], None]) – 可选地,一个用于在序列轴上聚合指标的函数。它必须将形状为 (s, t, c)np.ndarray 减少为形状为 (t, c)np.ndarray。该函数以 np.ndarray 和名为 axis 的参数作为输入,并返回减少后的数组。axis 接收值 0,对应于序列轴。如果为 None,将返回每个序列的指标。

  • n_jobs (int) – 要并行运行的作业数量。只有在输入为 Sequence[TimeSeries] 时才会创建并行作业,并行处理不同的 TimeSeries。默认为 1`(顺序执行)。将参数设置为 `-1 表示使用所有可用的处理器。

  • verbose (bool) – 可选地,是否打印操作进度

返回类型

Union[float, List[float], ndarray, List[ndarray]]

返回

  • float – 一个单一的指标评分:

    • 单变量序列。

    • 带有 component_reduction 的单变量序列。

    • 一个包含 series_reductioncomponent_reductiontime_reduction 的单/多变量序列(列表)。

  • np.ndarray – 一个包含指标分数的 numpy 数组。该数组的形状为 (n 时间步长, n 组件),不包括时间和组件的减少。对于:

    • 单变量或多变量序列,且至少 component_reduction=None

    • 单变量/多变量序列,且至少 time_reduction=None

    • 包括 series_reduction 在内的单变量/多变量序列,并且至少有一个 component_reduction=Nonetime_reduction=None

  • List[float] – 与类型 float 相同,但适用于一系列序列。

  • List[np.ndarray] – 与类型 np.ndarray 相同,但适用于一系列序列。

darts.metrics.metrics.smape(actual_series, pred_series, intersect=True, *, component_reduction=<function nanmean>, series_reduction=None, n_jobs=1, verbose=False)[源代码]

对称平均绝对百分比误差 (sMAPE)。

对于真实序列 \(y\) 和预测序列 \(\hat{y}\),长度为 \(T\),它是按每个分量/列计算的百分比值:

\[ \begin{align}\begin{aligned}200 \cdot \frac{1}{T} \sum_{t=1}^{T}{\frac{\left| y_t - \hat{y}_t \right|}{\left| y_t \right| + \left| \hat{y}_t \right|} }\\200 \cdot \frac{1}{T} \sum_{t=1}^{T}{\frac{\left| y_t - \hat{y}_t \right|}{\left| y_t \right| + \left| \hat{y}_t \right|} }\end{aligned}\end{align} \]

注意,如果对于某些 \(t\)\(\left| y_t \right| + \left| \hat{y}_t \right| = 0\),则会引发 ValueError。在这些情况下,请考虑使用平均绝对缩放误差(mase())。

如果序列中的任何一个包含多个样本(即随机),\(\hat{y}_t\) 是时间步 \(t\) 所有样本的中位数。

参数
  • actual_series (Union[TimeSeries, Sequence[TimeSeries]]) – 实际系列(的序列)。

  • pred_series (Union[TimeSeries, Sequence[TimeSeries]]) – 预测序列(的序列)。

  • intersect (bool) – 对于在时间上重叠但没有相同时间索引的时间序列,设置 True 将仅考虑它们在共同时间间隔(时间交集)内的值。

  • component_reduction (Optional[Callable[[ndarray], float], None]) – 可选地,一个用于在组件/列轴上聚合指标的函数。它必须将形状为 (t, c)np.ndarray 减少为形状为 (t,)np.ndarray。该函数以一个 np.ndarray 和一个名为 axis 的参数作为输入,并返回减少后的数组。axis 接收值 1,对应于组件轴。如果为 None,将返回每个组件的指标。

  • series_reduction (Optional[Callable[[ndarray], Union[float, ndarray]], None]) – 可选地,一个用于在序列轴上聚合指标的函数。它必须将形状为 (s, t, c)np.ndarray 减少为形状为 (t, c)np.ndarray。该函数以 np.ndarray 和名为 axis 的参数作为输入,并返回减少后的数组。axis 接收值 0,对应于序列轴。如果为 None,将返回每个序列的指标。

  • n_jobs (int) – 要并行运行的作业数量。只有在输入为 Sequence[TimeSeries] 时才会创建并行作业,并行处理不同的 TimeSeries。默认为 1`(顺序执行)。将参数设置为 `-1 表示使用所有可用的处理器。

  • verbose (bool) – 可选地,是否打印操作进度

引发

ValueError – 如果 actual_seriespred_series 在同一时间索引处包含一些零。

返回类型

Union[float, List[float], ndarray, List[ndarray]]

返回

  • float – 一个单一的指标评分:

    • 单变量序列。

    • 带有 component_reduction 的单变量序列。

    • 包含 series_reductioncomponent_reduction 的单变量/多变量序列(列表)。

  • np.ndarray – 一个包含指标分数的 numpy 数组。该数组的形状为 (n 个组件,),没有组件减少。

    • 单变量或多变量序列,且至少 component_reduction=None

    • 包括 series_reductioncomponent_reduction=None 的单变量/多变量序列序列。

  • List[float] – 与类型 float 相同,但适用于一系列序列。

  • List[np.ndarray] – 与类型 np.ndarray 相同,但适用于一系列序列。

darts.metrics.metrics.sse(actual_series, pred_series, insample, m=1, intersect=True, *, time_reduction=None, component_reduction=<function nanmean>, series_reduction=None, n_jobs=1, verbose=False)[源代码]

平方缩放误差 (SSE) (有关缩放预测误差的更多信息,请参见 [1] )。

它是平方误差(SE)按朴素m季节性预测的均方误差(MSE)缩放的结果。

对于长度为 \(T\) 的真实序列 \(y\) 和预测序列 \(\hat{y}\),它是按组件/列和时间步 \(t\) 计算的:

\[\frac{SE(y_{t_p+1:t_p+T}, \hat{y}_{t_p+1:t_p+T})}{E_m},\]

其中 \(t_p\) 是预测时间(在第一个预测点之前的一步),\(SE\) 是平方误差(se()),而 \(E_m\)insample 系列 \(y_{0:t_p}\) 结束的真实系列)上的朴素 m-季节性预测的均方误差(MSE)。

\[E_m = MSE(y_{m:t_p}, y_{0:t_p - m})。\]

如果序列中的任何一个包含多个样本(即随机),\(\hat{y}_t\) 是时间步 \(t\) 所有样本的中位数。

参数
  • actual_series (Union[TimeSeries, Sequence[TimeSeries]]) – 实际系列(的序列)。

  • pred_series (Union[TimeSeries, Sequence[TimeSeries]]) – 预测序列(的序列)。

  • insample (Union[TimeSeries, Sequence[TimeSeries]]) – 用于预测 pred_series 的训练系列。该系列用于计算在训练数据上朴素预测器所获得误差的尺度。

  • m (int) – 用于计算误差尺度 \(E_m\) 的差分季节性(如指标描述中所述)。\(m=1\) 对应于非季节性的 \(E_m\) 对应于季节性的 \(E_m\)

  • intersect (bool) – 对于在时间上重叠但没有相同时间索引的时间序列,设置 True 将仅考虑它们在共同时间间隔(时间交集)内的值。

  • time_reduction (Optional[Callable[…, ndarray], None]) – 可选地,一个用于在时间轴上聚合指标的函数。它必须将形状为 (t, c)np.ndarray 缩减为形状为 (c,)np.ndarray。该函数以 np.ndarray 和一个名为 axis 的参数作为输入,并返回缩减后的数组。axis 接收值 0,对应于时间轴。如果为 None,将返回每个时间步的指标。

  • component_reduction (Optional[Callable[[ndarray], float], None]) – 可选地,一个用于在组件/列轴上聚合指标的函数。它必须将形状为 (t, c)np.ndarray 减少为形状为 (t,)np.ndarray。该函数以一个 np.ndarray 和一个名为 axis 的参数作为输入,并返回减少后的数组。axis 接收值 1,对应于组件轴。如果为 None,将返回每个组件的指标。

  • series_reduction (Optional[Callable[[ndarray], Union[float, ndarray]], None]) – 可选地,一个用于在序列轴上聚合指标的函数。它必须将形状为 (s, t, c)np.ndarray 减少为形状为 (t, c)np.ndarray。该函数以 np.ndarray 和名为 axis 的参数作为输入,并返回减少后的数组。axis 接收值 0,对应于序列轴。如果为 None,将返回每个序列的指标。

  • n_jobs (int) – 要并行运行的作业数量。只有在输入为 Sequence[TimeSeries] 时才会创建并行作业,并行处理不同的 TimeSeries。默认为 1`(顺序执行)。将参数设置为 `-1 表示使用所有可用的处理器。

  • verbose (bool) – 可选地,是否打印操作进度

引发

ValueError – 如果 insample 序列是周期性的( \(y_t = y_{t-m}\) ),或者 insample 中的任何序列在相应的 pred_series 预测开始前一个时间步长结束。

返回类型

Union[float, List[float], ndarray, List[ndarray]]

返回

  • float – 一个单一的指标评分:

    • 单变量序列。

    • 带有 component_reduction 的单变量序列。

    • 一个包含 series_reductioncomponent_reductiontime_reduction 的单/多变量序列(列表)。

  • np.ndarray – 一个包含指标分数的 numpy 数组。该数组的形状为 (n 时间步长, n 组件),不包括时间和组件的减少。对于:

    • 单变量或多变量序列,且至少 component_reduction=None

    • 单变量/多变量序列,且至少 time_reduction=None

    • 包括 series_reduction 在内的单变量/多变量序列,并且至少有一个 component_reduction=Nonetime_reduction=None

  • List[float] – 与类型 float 相同,但适用于一系列序列。

  • List[np.ndarray] – 与类型 np.ndarray 相同,但适用于一系列序列。

引用

1

https://www.pmorgan.com.au/tutorials/mae%2C-mape%2C-mase-and-the-scaled-rmse/