class_docstr: Mean absolute percentage error.
  
  .. math::
  
      \operatorname{MAPE} = \frac{1}{N} \frac{1}{H} \sum_{i=1}^{N} \sum_{t=T+1}^{T+H} \frac{ |y_{i,t} - f_{i,t}|}{|y_{i,t}|}
  
  Properties:
  
  - should only be used if all time series have positive values
  - undefined for time series that contain zero values
  - penalizes overprediction more heavily than underprediction
  
  References
  ----------
  - `Wikipedia <https://en.wikipedia.org/wiki/Mean_absolute_percentage_error>`_
  - `Forecasting: Principles and Practice <https://otexts.com/fpp3/accuracy.html#percentage-errors>`_
code: def compute_metric(
      self,
      data_future: TimeSeriesDataFrame,
      predictions: TimeSeriesDataFrame,
      target: str = "target",
      **kwargs,
  ) -> float:
      y_true, y_pred = self._get_point_forecast_score_inputs(
          data_future, predictions, target=target
      )
      return self._safemean((y_true - y_pred).abs() / y_true.abs())
  
imports: import logging
  from typing import Optional
  import numpy
  import pandas
  from autogluon.timeseries import TimeSeriesDataFrame
  from autogluon.timeseries.dataset.ts_dataframe import ITEMID
  from .abstract import TimeSeriesScorer
  from .utils import _in_sample_abs_seasonal_error, _in_sample_squared_seasonal_error
label_desc: Use image node_id 1 for calling the MAPE obj's underlying member method code with example usage: obj.compute_metric(data_future, predictions, target) and returns: self