etna.metrics.Metric#
- class Metric(metric_fn: MetricFunction, mode: str = 'per-segment', metric_fn_signature: str = 'array_to_scalar', **kwargs)[source]#
- Bases: - BaseMetric- Base class for all the multi-segment metrics. - How it works: Metric computes - metric_fnvalue for each segment in given forecast dataset and aggregates it according to mode.- Init Metric. - Parameters:
- metric_fn (MetricFunction) – functional metric 
- mode (str) – - “macro” or “per-segment”, way to aggregate metric values over segments: - if “macro” computes average value 
- if “per-segment” – does not aggregate metrics 
 
- metric_fn_signature (str) – type of signature of - metric_fn(see- MetricFunctionSignature)
- kwargs – functional metric’s params 
 
- Raises:
- NotImplementedError: – If non-existent - modeis used.
- NotImplementedError: – If non-existent - metric_fn_signatureis used.
 
 - Methods - set_params(**params)- Return new object instance with modified parameters. - to_dict()- Collect all information about etna object in dict. - __call__(y_true, y_pred)- Compute metric's value with - y_trueand- y_pred.- Attributes - This class stores its - __init__parameters as attributes.- Whether higher metric value is better. - Name of the metric for representation. - __call__(y_true: TSDataset, y_pred: TSDataset) float | None | Dict[str, float | None][source]#
- Compute metric’s value with - y_trueand- y_pred.- Notes - Note that if - y_trueand- y_predare not sorted Metric will sort it anyway
 - set_params(**params: dict) Self[source]#
- Return new object instance with modified parameters. - Method also allows to change parameters of nested objects within the current object. For example, it is possible to change parameters of a - modelin a- Pipeline.- Nested parameters are expected to be in a - <component_1>.<...>.<parameter>form, where components are separated by a dot.- Parameters:
- **params (dict) – Estimator parameters 
- Returns:
- New instance with changed parameters 
- Return type:
- Self 
 - Examples - >>> from etna.pipeline import Pipeline >>> from etna.models import NaiveModel >>> from etna.transforms import AddConstTransform >>> model = NaiveModel(lag=1) >>> transforms = [AddConstTransform(in_column="target", value=1)] >>> pipeline = Pipeline(model, transforms=transforms, horizon=3) >>> pipeline.set_params(**{"model.lag": 3, "transforms.0.value": 2}) Pipeline(model = NaiveModel(lag = 3, ), transforms = [AddConstTransform(in_column = 'target', value = 2, inplace = True, out_column = None, )], horizon = 3, )