来源

evaluate

 evaluate (df:~AnyDFType, metrics:List[Callable],
           models:Optional[List[str]]=None,
           train_df:Optional[~AnyDFType]=None,
           level:Optional[List[int]]=None, id_col:str='unique_id',
           time_col:str='ds', target_col:str='y',
           agg_fn:Optional[str]=None)

使用不同指标评估预测结果。

类型默认值详情
dfAnyDFType要评估的预测结果。
必须包含 id_coltime_coltarget_col 以及模型的预测结果。
metricsList带有参数 dfmodelsid_coltarget_col 以及可选参数 train_df 的函数。
models可选None要评估的模型名称。
如果为 None,将使用 dataframe 中移除 id、时间 和 目标列后的所有列。
train_df可选None训练集。用于评估如 mase 等指标。
level可选None预测区间级别。用于计算依赖于分位数的损失。
id_colstrunique_id标识每个时间序列的列。
time_colstrds标识每个时间步的列,其值可以是时间戳或整数。
target_colstry包含目标值的列。
agg_fn可选None按id计算得分的统计量,将其汇总为单个数值。
返回值AnyDFType指标结果,每行表示一个 (id, metric) 组合,每列表示一个模型。
如果 agg_fn 不为 None,则每种指标只有一行结果。
from functools import partial

import numpy as np
import pandas as pd

from utilsforecast.losses import *
from utilsforecast.data import generate_series
series = generate_series(10, n_models=2, level=[80, 95])
series['unique_id'] = series['unique_id'].astype('int')
models = ['model0', 'model1']
metrics = [
    mae,
    mse,
    rmse,
    mape,
    smape,
    partial(mase, seasonality=7),
    quantile_loss,
    mqloss,
    coverage,
    calibration,
    scaled_crps,
]
evaluation = evaluate(
    series,
    metrics=metrics,
    models=models,
    train_df=series,
    level=[80, 95],
)
evaluation
unique_idmetricmodel0model1
00mae0.1581080.163246
11mae0.1601090.143805
22mae0.1598150.170510
33mae0.1685370.161595
44mae0.1701820.163329
1755scaled_crps0.0342020.035472
1766scaled_crps0.0348800.033610
1777scaled_crps0.0343370.034745
1788scaled_crps0.0333360.032459
1799scaled_crps0.0347660.035243
summary = evaluation.drop(columns='unique_id').groupby('metric').mean().reset_index()
summary
metricmodel0model1
0calibration_q0.0250.0000000.000000
1calibration_q0.10.0000000.000000
2calibration_q0.90.8339930.815833
3calibration_q0.9750.8539910.836949
4coverage_level800.8339930.815833
5coverage_level950.8539910.836949
6mae0.1612860.162281
7mape0.0488940.049624
8mase0.9668460.975354
9mqloss0.0569040.056216
10mse0.0486530.049198
11quantile_loss_q0.0250.0199900.019474
12quantile_loss_q0.10.0673150.065781
13quantile_loss_q0.90.0955100.093841
14quantile_loss_q0.9750.0448030.045767
15rmse0.2203570.221543
16scaled_crps0.0350030.034576
17smape0.0244750.024902