gluonts.evaluation 包#
- class gluonts.evaluation.Evaluator(quantiles: typing.Iterable[typing.Union[float, str]] = (0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9), seasonality: typing.Optional[int] = None, alpha: float = 0.05, calculate_owa: bool = False, custom_eval_fn: typing.Optional[typing.Dict] = None, num_workers: typing.Optional[int] = 4, chunk_size: int = 32, aggregation_strategy: typing.Callable = <function aggregate_no_nan>, ignore_invalid_values: bool = True, allow_nan_forecast: bool = False)[source]#
基类:
object
Evaluator 类,用于通过比较观测值和预测值来计算准确性指标。
- 参数
quantiles – 分位数水平列表,形式为 'p10' 的字符串或 [0, 1] 范围内的浮点数
seasonality – 用于 seasonal_error 的季节性周期。如果未传入,则使用 get_seasonality 返回的给定时间序列频率的默认季节性周期。
alpha – MSIS 指标的参数,来自 M4 竞赛,用于定义预测区间。alpha=0.05(默认值)时,指标考虑 95% 的预测区间,更多关于 MSIS 的详情请参阅 https://www.m4.unic.ac.cy/wp-content/uploads/2018/03/M4-Competitors-Guide.pdf
calculate_owa – 确定是否也计算 OWA 指标,该指标计算开销大,会显著降低评估速度。默认为 False。
custom_eval_fn – 可选包含自定义评估指标。期望输入为一个字典,键为自定义指标的名称,值为一个包含三个元素的列表。第一个元素是可调用的函数,输入为 target 和 forecast,返回评估指标。第二个元素是字符串,指定跨所有时间序列的聚合指标,例如 “mean”,“sum”。第三个元素为 “mean” 或 “median”,指定传递给自定义评估函数的是均值预测还是中位数预测。例如:{“RMSE”: [rmse, “mean”, “median”]}
num_workers – 用于并行处理数据的多进程工作进程数量。默认为 multiprocessing.cpu_count()。设置为 0 或 None 表示不使用多进程。
chunk_size – 控制每个工作进程一次处理的大致块大小。默认为 32。
ignore_invalid_values – 计算指标时忽略时间序列中的 NaN 和 inf 值。
aggregation_strategy – 用于聚合每个时间序列指标的函数。可用选项有:aggregate_valid | aggregate_all | aggregate_no_nan。默认函数是 aggregate_no_nan。
allow_nan_forecast – 是否允许预测值中包含 NaN 值。如果为 False,当预测值包含 NaN 时会引发错误。默认为 False。
- default_quantiles = (0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9)#
- static extract_past_data(time_series: Union[pandas.core.series.Series, pandas.core.frame.DataFrame], forecast: gluonts.model.forecast.Forecast) numpy.ndarray [source]#
- 参数
time_series –
forecast –
- 返回
不包含预测日期的时间序列
- 返回类型
np.ndarray
- static extract_pred_target(time_series: Union[pandas.core.series.Series, pandas.core.frame.DataFrame], forecast: gluonts.model.forecast.Forecast) numpy.ndarray [source]#
- 参数
time_series –
forecast –
- 返回
在 Forecast 对象日期处截断的时间序列
- 返回类型
np.ndarray
- get_aggregate_metrics(metric_per_ts: pandas.core.frame.DataFrame) Tuple[Dict[str, float], pandas.core.frame.DataFrame] [source]#
- get_base_metrics(forecast: gluonts.model.forecast.Forecast, pred_target, mean_fcst, median_fcst, seasonal_error) Dict[str, Optional[Union[float, str]]] [source]#
- get_metrics_per_ts(time_series: Union[pandas.core.series.Series, pandas.core.frame.DataFrame], forecast: gluonts.model.forecast.Forecast) Mapping[str, Union[float, str, None, numpy.ma.core.MaskedConstant]] [source]#
- class gluonts.evaluation.MultivariateEvaluator(quantiles: Iterable[Union[float, str]] = array([0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9]), seasonality: Optional[int] = None, alpha: float = 0.05, eval_dims: Optional[List[int]] = None, target_agg_funcs: Dict[str, Callable] = {}, custom_eval_fn: Optional[dict] = None, num_workers: Optional[int] = None)[source]#
基类:
gluonts.evaluation._base.Evaluator
MultivariateEvaluator 类评估多元或多维观测值的预测结果。
对单个维度的评估结果将以相应的维度前缀存储,并包含仅针对该维度计算的指标。使用简单指标名称的指标对应于对所有维度计算的指标。此外,用户可以提供自定义聚合函数,这些函数首先对维度上的目标和预测进行聚合,然后计算指标。这些指标将以前缀 m_<聚合函数名称>_ 开头。
评估维度可由用户设置。
示例
{‘0_MSE’: 0.004307240342677687, # 维度 0 的 MSE ‘0_abs_error’: 1.6246897801756859, ‘1_MSE’: 0.003949341769475723, # 维度 1 的 MSE ‘1_abs_error’: 1.5052175521850586, ‘MSE’: 0.004128291056076705, # 所有维度的 MSE ‘abs_error’: 3.1299073323607445, ‘m_sum_MSE’: 0.02 # 聚合目标和聚合预测的 MSE(如果设置了 target_agg_funcs)。 ‘m_sum_abs_error’: 4.2}
- calculate_aggregate_multivariate_metrics(ts_iterator: Iterator[pandas.core.frame.DataFrame], forecast_iterator: Iterator[gluonts.model.forecast.Forecast], agg_fun: Callable) Dict[str, float] [source]#
- 参数
ts_iterator – 时间序列的迭代器
forecast_iterator – 预测值的迭代器
agg_fun – 聚合函数
- 返回
包含聚合数据集指标的字典
- 返回类型
Dict[str, float]
- calculate_aggregate_vector_metrics(all_agg_metrics: Dict[str, float], all_metrics_per_ts: pandas.core.frame.DataFrame) Dict[str, float] [source]#
- 参数
all_agg_metrics – 包含各维度聚合指标的字典
all_metrics_per_ts – 包含所有评估维度中所有时间序列指标的 DataFrame
- 返回
包含聚合指标(包括单个(评估的)维度和整个向量)的字典
- 返回类型
Dict[str, float]
- static extract_aggregate_forecast(forecast_iterator: Iterator[gluonts.model.forecast.Forecast], agg_fun: Callable) Iterator[gluonts.model.forecast.Forecast] [source]#
- static extract_aggregate_target(it_iterator: Iterator[pandas.core.frame.DataFrame], agg_fun: Callable) Iterator[pandas.core.frame.DataFrame] [source]#
- static extract_forecast_by_dim(forecast_iterator: Iterator[gluonts.model.forecast.Forecast], dim: int) Iterator[gluonts.model.forecast.Forecast] [source]#
- static extract_target_by_dim(it_iterator: Iterator[pandas.core.frame.DataFrame], dim: int) Iterator[pandas.core.frame.DataFrame] [source]#
- static get_target_dimensionality(forecast: gluonts.model.forecast.Forecast) int [source]#
- gluonts.evaluation.aggregate_all(metric_per_ts: pandas.core.frame.DataFrame, agg_funs: Dict[str, str]) Dict[str, float] [source]#
未应用过滤。
聚合指标中可能包含 nan 和 inf。
- gluonts.evaluation.aggregate_no_nan(metric_per_ts: pandas.core.frame.DataFrame, agg_funs: Dict[str, str]) Dict[str, float] [source]#
过滤所有 nan 但保留 inf。
只有当一个指标对应的所有时间序列结果都是 nan 时,聚合指标才可能出现 nan。
- gluonts.evaluation.aggregate_valid(metric_per_ts: pandas.core.frame.DataFrame, agg_funs: Dict[str, str]) Dict[str, Union[float, numpy.ma.core.MaskedConstant]] [source]#
从 metric_per_ts 中过滤掉所有 nan 和 inf 值。
如果 metric_per_ts 的某一列中的所有指标均为 nan 或 inf,则该列的结果将为 np.ma.masked。
- gluonts.evaluation.backtest_metrics(test_dataset: gluonts.dataset.Dataset, predictor: gluonts.model.predictor.Predictor, evaluator=<gluonts.evaluation._base.Evaluator object>, num_samples: int = 100, logging_file: typing.Optional[str] = None) Tuple[dict, pandas.core.frame.DataFrame] [source]#
- 参数
test_dataset – 用于测试的数据集。
predictor – 要测试的预测器。
evaluator – 要使用的评估器。
num_samples – 生成基于样本的预测时使用的样本数量。仅基于采样模型会使用此参数。
logging_file – 如果指定,回测信息将重定向到此文件。
- 返回
一个元组,包含通过在 train_dataset 上训练 forecaster 并在 test_dataset 上评估提供的 evaluator 获得的聚合指标和每个时间序列的指标。
- 返回类型
Tuple[dict, pd.DataFrame]
- gluonts.evaluation.make_evaluation_predictions(dataset: gluonts.dataset.Dataset, predictor: gluonts.model.predictor.Predictor, num_samples: int = 100) Tuple[Iterator[gluonts.model.forecast.Forecast], Iterator[pandas.core.series.Series]] [source]#
使用给定的预测器,返回给定时间序列末尾 prediction_length 个观测值的预测结果。
预测器将使用不包含末尾 prediction_length 个观测值的给定时间序列作为输入。
- 参数
dataset – 进行评估的数据集。进行预测时,仅使用不包含 prediction_length 部分的数据。
predictor – 用于生成预测的模型。
num_samples – 在评估时,从模型中抽取的样本数量。仅基于采样模型会使用此参数。
- 返回
一对迭代器,第一个生成预测值,第二个生成相应的真实值序列。
- 返回类型
Tuple[Iterator[Forecast], Iterator[pd.Series]]