class_docstr: Base class for probabilistic forecasting error metrics in sktime.
  
  Extends sktime's BaseMetric to the forecasting interface. Forecasting error
  metrics measure the error (loss) between forecasts and true values. Lower
  values are better.
  
  Parameters
  ----------
  multioutput : {'raw_values', 'uniform_average'}  or array-like of shape             (n_outputs,), default='uniform_average'
      Defines how to aggregate metric for multivariate (multioutput) data.
      If array-like, values used as weights to average the errors.
      If 'raw_values', returns a full set of errors in case of multioutput input.
      If 'uniform_average', errors of all outputs are averaged with uniform weight.
  score_average : bool, optional, default=True
      for interval and quantile losses only
          if True, metric/loss is averaged by upper/lower and/or quantile
          if False, metric/loss is not averaged by upper/lower and/or quantile
class_docstr_tok: ["Base","class","for","probabilistic","forecasting","error","metrics","in","sktime",".","Extends","sktime","'s","BaseMetric","to","the","forecasting","interface",".","Forecasting","error","metrics","measure","the","error","(","loss",")","between","forecasts","and","true","values",".","Lower","values","are","better",".","Parameters","--","--","--","--","--","multioutput",":","{","'raw_values","'",",","'uniform_average","'","}","or","array-like","of","shape","(","n_outputs",",",")",",","default='uniform_average'","Defines","how","to","aggregate","metric","for","multivariate","(","multioutput",")","data",".","If","array-like",",","values","used","as","weights","to","average","the","errors",".","If","'raw_values","'",",","returns","a","full","set","of","errors","in","case","of","multioutput","input",".","If","'uniform_average","'",",","errors","of","all","outputs","are","averaged","with","uniform","weight",".","score_average",":","bool",",","optional",",","default=True","for","interval","and","quantile","losses","only","if","True",",","metric\/loss","is","averaged","by","upper\/lower","and\/or","quantile","if","False",",","metric\/loss","is","not","averaged","by","upper\/lower","and\/or","quantile"]
docstr: Evaluate the desired metric on given inputs.
  
  Parameters
  ----------
  y_true : pd.Series, pd.DataFrame or np.array of shape (fh,) or                 (fh, n_outputs) where fh is the forecasting horizon
      Ground truth (correct) target values.
  
  y_pred : return object of probabilistic predictition method scitype:y_pred
      must be at fh and for variables equal to those in y_true
  
  multioutput : string "uniform_average" or "raw_values" determines how            multioutput results will be treated.
  
  Returns
  -------
  loss : float or 1-column pd.DataFrame with calculated metric value(s)
      metric is always averaged (arithmetic) over fh values
      if multioutput = "raw_values",
          will have a column level corresponding to variables in y_true
      if multioutput = multioutput = "uniform_average" or or array-like
          entries will be averaged over output variable column
      if score_average = False,
          will have column levels corresponding to quantiles/intervals
      if score_average = True,
          entries will be averaged over quantiles/interval column
docstr_tok: ["Evaluate","the","desired","metric","on","given","inputs",".","Parameters","--","--","--","--","--","y_true",":","pd.Series",",","pd.DataFrame","or","np.array","of","shape","(","fh",",",")","or","(","fh",",","n_outputs",")","where","fh","is","the","forecasting","horizon","Ground","truth","(","correct",")","target","values",".","y_pred",":","return","object","of","probabilistic","predictition","method","scitype",":","y_pred","must","be","at","fh","and","for","variables","equal","to","those","in","y_true","multioutput",":","string","``","uniform_average","''","or","``","raw_values","''","determines","how","multioutput","results","will","be","treated",".","Returns","--","--","--","-","loss",":","float","or","1-column","pd.DataFrame","with","calculated","metric","value","(","s",")","metric","is","always","averaged","(","arithmetic",")","over","fh","values","if","multioutput","=","``","raw_values","''",",","will","have","a","column","level","corresponding","to","variables","in","y_true","if","multioutput","=","multioutput","=","``","uniform_average","''","or","or","array-like","entries","will","be","averaged","over","output","variable","column","if","score_average","=","False",",","will","have","column","levels","corresponding","to","quantiles\/intervals","if","score_average","=","True",",","entries","will","be","averaged","over","quantiles\/interval","column"]
code: def evaluate(self, y_true, y_pred, multioutput=None, **kwargs):
      """Evaluate the desired metric on given inputs.
  
          Parameters
          ----------
          y_true : pd.Series, pd.DataFrame or np.array of shape (fh,) or \
                  (fh, n_outputs) where fh is the forecasting horizon
              Ground truth (correct) target values.
  
          y_pred : return object of probabilistic predictition method scitype:y_pred
              must be at fh and for variables equal to those in y_true
  
          multioutput : string "uniform_average" or "raw_values" determines how\
              multioutput results will be treated.
  
          Returns
          -------
          loss : float or 1-column pd.DataFrame with calculated metric value(s)
              metric is always averaged (arithmetic) over fh values
              if multioutput = "raw_values",
                  will have a column level corresponding to variables in y_true
              if multioutput = multioutput = "uniform_average" or or array-like
                  entries will be averaged over output variable column
              if score_average = False,
                  will have column levels corresponding to quantiles/intervals
              if score_average = True,
                  entries will be averaged over quantiles/interval column
          """
      # Input checks and conversions
      y_true_inner, y_pred_inner, multioutput = self._check_ys(
          y_true, y_pred, multioutput
      )
  
      # Don't want to include scores for 0 width intervals, makes no sense
      if 0 in y_pred_inner.columns.get_level_values(1):
          y_pred_inner = y_pred_inner.drop(0, axis=1, level=1)
          warning(
              "Dropping 0 width interval, don't include 0.5 quantile\
              for interval metrics."
          )
  
      # pass to inner function
      out = self._evaluate(
          y_true_inner, y_pred_inner, multioutput, **kwargs
      )
  
      if isinstance(multioutput, str):
          if self.score_average and multioutput == "uniform_average":
              out = out.mean(axis=1).iloc[0]  # average over all
          if self.score_average and multioutput == "raw_values":
              out = (
                  out.T.groupby(level=0).mean().T
              )  # average over scores
          if (
              not self.score_average
              and multioutput == "uniform_average"
          ):
              out = (
                  out.T.groupby(level=1).mean().T
              )  # average over variables
          if not self.score_average and multioutput == "raw_values":
              out = out  # don't average
      else:  # is np.array with weights
          if self.score_average:
              out_raw = out.T.groupby(level=0).mean().T
              out = out_raw.dot(multioutput)[0]
          else:
              out = _groupby_dot(out, multioutput)
  
      if isinstance(out, pd.DataFrame):
          out = out.squeeze(axis=0)
  
      return out
  
imports: from logging import warning
  import numpy
  import pandas
  from pandas.api.types import is_numeric_dtype
  from sklearn.utils import check_array, check_consistent_length
  from sktime.datatypes import check_is_scitype, convert, convert_to
  from sktime.performance_metrics.forecasting._classes import BaseForecastingErrorMetric
  from sktime.performance_metrics.forecasting._coerce import _coerce_to_scalar
label_desc: Use image node_id 3 for calling the _BaseProbaForecastingErrorMetric obj's underlying member method code with example usage: obj.evaluate(y_true, y_pred, multioutput) and returns: out