class_docstr: Abstract base class for ensemble models.
  Ensemble models take in a list of forecasting models and ensemble their predictions
  to make a single one according to the rule defined by their `ensemble()` method.
  
  If `future_covariates` or `past_covariates` are provided at training or inference time,
  they will be passed only to the models supporting them.
  
  Parameters
  ----------
  forecasting_models
      List of forecasting models whose predictions to ensemble
  
      .. note::
              if all the models are probabilistic, the `EnsembleModel` will also be probabilistic.
      ..
  train_num_samples
      Number of prediction samples from each forecasting model for multi-level ensembles. The n_samples
      dimension will be reduced using the `train_samples_reduction` method.
  train_samples_reduction
      If `forecasting_models` are probabilistic and `train_num_samples` > 1, method used to reduce the
      samples dimension to 1. Possible values: "mean", "median" or float value corresponding to the
      desired quantile.
  retrain_forecasting_models
      If set to `False`, the `forecasting_models` are not retrained when calling `fit()` (only supported
      if all the `forecasting_models` are pretrained `GlobalForecastingModels`). Default: ``True``.
  show_warnings
      Whether to show warnings related to models covariates support.
class_docstr_tok: ["Abstract","base","class","for","ensemble","models",".","Ensemble","models","take","in","a","list","of","forecasting","models","and","ensemble","their","predictions","to","make","a","single","one","according","to","the","rule","defined","by","their","`","ensemble","(",")","`","method",".","If","`","future_covariates","`","or","`","past_covariates","`","are","provided","at","training","or","inference","time",",","they","will","be","passed","only","to","the","models","supporting","them",".","Parameters","--","--","--","--","--","forecasting_models","List","of","forecasting","models","whose","predictions","to","ensemble","..","note",":",":","if","all","the","models","are","probabilistic",",","the","`","EnsembleModel","`","will","also","be","probabilistic",".","..","train_num_samples","Number","of","prediction","samples","from","each","forecasting","model","for","multi-level","ensembles",".","The","n_samples","dimension","will","be","reduced","using","the","`","train_samples_reduction","`","method",".","train_samples_reduction","If","`","forecasting_models","`","are","probabilistic","and","`","train_num_samples","`",">","1",",","method","used","to","reduce","the","samples","dimension","to","1",".","Possible","values",":","``","mean","''",",","``","median","''","or","float","value","corresponding","to","the","desired","quantile",".","retrain_forecasting_models","If","set","to","`","False","`",",","the","`","forecasting_models","`","are","not","retrained","when","calling","`","fit","(",")","`","(","only","supported","if","all","the","`","forecasting_models","`","are","pretrained","`","GlobalForecastingModels","`",")",".","Default",":","``","True","``",".","show_warnings","Whether","to","show","warnings","related","to","models","covariates","support","."]
code: def _make_multiple_predictions(
      self,
      n: int,
      series: Optional[Union[TimeSeries, Sequence[TimeSeries]]] = None,
      past_covariates: Optional[
          Union[TimeSeries, Sequence[TimeSeries]]
      ] = None,
      future_covariates: Optional[
          Union[TimeSeries, Sequence[TimeSeries]]
      ] = None,
      num_samples: int = 1,
      predict_likelihood_parameters: bool = False,
  ) -> Union[TimeSeries, Sequence[TimeSeries]]:
      is_single_series = (
          isinstance(series, TimeSeries) or series is None
      )
      # maximize covariate usage
      predictions = [
          model._predict_wrapper(
              n=n,
              series=series,
              past_covariates=past_covariates
              if model.supports_past_covariates
              else None,
              future_covariates=future_covariates
              if model.supports_future_covariates
              else None,
              num_samples=num_samples if model._is_probabilistic else 1,
              predict_likelihood_parameters=predict_likelihood_parameters,
          )
          for model in self.forecasting_models
      ]
  
      # reduce the probabilistics series
      if (
          self.train_samples_reduction is not None
          and self.train_num_samples > 1
      ):
          predictions = [
              self._predictions_reduction(prediction)
              for prediction in predictions
          ]
  
      return (
          self._stack_ts_seq(predictions)
          if is_single_series
          else self._stack_ts_multiseq(predictions)
      )
  
imports: from abc import abstractmethod
  from typing import List, Optional, Sequence, Tuple, Union
  from darts.logging import get_logger, raise_if, raise_if_not, raise_log
  from darts.models.forecasting.forecasting_model import ForecastingModel, GlobalForecastingModel, LocalForecastingModel
  from darts.timeseries import TimeSeries, concatenate
  from darts.utils.utils import series2seq
label_desc: Use image node_id 6 for calling the EnsembleModel obj's underlying member method code with example usage: obj._make_multiple_predictions(n, series, past_covariates, future_covariates, num_samples, predict_likelihood_parameters) and returns: unknown