def calc_metrics()

in afa/core.py [0:0]


def calc_metrics(Y, Ycv, metric="smape"):
    """Note, this operates on 2D arrays of sliding window values.

    """

    assert Y.ndim == Ycv.ndim == 2
    assert Y.shape == Ycv.shape

    # calc. error metrics
    df_metrics = pd.DataFrame()

    metric_aggs = [
        ("mean", np.nanmean),
        ("median", np.nanmedian),
        ("std", np.nanstd)
    ]

    if metric == "smape":
        metric_func = calc_smape
    elif metric == "wape":
        metric_func = calc_wape
    else:
        raise NotImplementedError

    df_metrics[metric] = [metric_func(Y, Ycv)]

    for agg, agg_func in metric_aggs:
        df_metrics[f"{metric}_{agg}"] = \
            df_metrics[metric].apply(agg_func).round(4)

    assert(len(df_metrics) == 1)

    return df_metrics