docstr: Select dummy ensembles given predictions of base models and targets.
  
  Parameters
  ----------
  base_models_predictions: np.ndarray
      shape = (n_base_models, n_data_points, n_targets)
      n_targets is the number of classes in case of classification,
      n_targets is 0 or 1 in case of regression
  
      Can be a list of 2d numpy arrays as well to prevent copying all
      predictions into a single, large numpy array.
  
  true_targets : array of shape [n_targets]
  
  model_identifiers : identifier for each base model.
      Can be used for practical text output of the ensemble.
  
  runs: Sequence[Run]
      Additional information for each run executed by SMAC that was
      considered by the ensemble builder. Not used.
  
  X_data : list-like | sparse matrix | None = None
      X data to give to the metric if required
  
  Returns
  -------
  self
docstr_tok: ["Select","dummy","ensembles","given","predictions","of","base","models","and","targets",".","Parameters","--","--","--","--","--","base_models_predictions",":","np.ndarray","shape","=","(","n_base_models",",","n_data_points",",","n_targets",")","n_targets","is","the","number","of","classes","in","case","of","classification",",","n_targets","is","0","or","1","in","case","of","regression","Can","be","a","list","of","2d","numpy","arrays","as","well","to","prevent","copying","all","predictions","into","a","single",",","large","numpy","array",".","true_targets",":","array","of","shape","[","n_targets","]","model_identifiers",":","identifier","for","each","base","model",".","Can","be","used","for","practical","text","output","of","the","ensemble",".","runs",":","Sequence","[","Run","]","Additional","information","for","each","run","executed","by","SMAC","that","was","considered","by","the","ensemble","builder",".","Not","used",".","X_data",":","list-like","|","sparse","matrix","|","None","=","None","X","data","to","give","to","the","metric","if","required","Returns","--","--","--","-","self"]
code: def fit(
      self,
      base_models_predictions: list[np.ndarray],
      true_targets: np.ndarray,
      model_identifiers: list[tuple[int, int, float]],
      runs: Sequence[Run],
      X_data: SUPPORTED_FEAT_TYPES | None = None,
  ) -> MultiObjectiveDummyEnsemble:
      """Select dummy ensembles given predictions of base models and targets.
  
      Parameters
      ----------
      base_models_predictions: np.ndarray
          shape = (n_base_models, n_data_points, n_targets)
          n_targets is the number of classes in case of classification,
          n_targets is 0 or 1 in case of regression
  
          Can be a list of 2d numpy arrays as well to prevent copying all
          predictions into a single, large numpy array.
  
      true_targets : array of shape [n_targets]
  
      model_identifiers : identifier for each base model.
          Can be used for practical text output of the ensemble.
  
      runs: Sequence[Run]
          Additional information for each run executed by SMAC that was
          considered by the ensemble builder. Not used.
  
      X_data : list-like | sparse matrix | None = None
          X data to give to the metric if required
  
      Returns
      -------
      self
      """
      if self.task_type not in TASK_TYPES:
          raise ValueError("Unknown task type %s." % self.task_type)
  
      all_costs = np.empty(
          (len(base_models_predictions), len(self.metrics))
      )
      for i, base_model_prediction in enumerate(
          base_models_predictions
      ):
          losses = calculate_losses(
              solution=true_targets,
              prediction=base_model_prediction,
              task_type=self.task_type,
              metrics=self.metrics,
              X_data=X_data,
          )
          all_costs[i] = [
              losses[metric.name] for metric in self.metrics
          ]
  
      all_costs = np.array(all_costs)
      sort_by_first_metric = np.argsort(all_costs[:, 0])
      efficient_points = pareto_front(all_costs, is_loss=True)
      pareto_set = []
  
      for argsort_idx in sort_by_first_metric:
          if not efficient_points[argsort_idx]:
              continue
          ensemble = SingleModelEnsemble(
              task_type=self.task_type,
              metrics=self.metrics,
              random_state=self.random_state,
              backend=self.backend,
              model_index=argsort_idx,
          )
          ensemble.fit(
              base_models_predictions=base_models_predictions,
              true_targets=true_targets,
              model_identifiers=model_identifiers,
              runs=runs,
              X_data=X_data,
          )
          pareto_set.append(ensemble)
  
      self.pareto_set_ = pareto_set
      return self
  
imports: from __future__ import annotations
  from typing import Sequence
  import warnings
  import numpy
  from sklearn.exceptions import NotFittedError
  from autosklearn.automl_common.common.utils.backend import Backend
  from autosklearn.constants import TASK_TYPES
  from autosklearn.data.validation import SUPPORTED_FEAT_TYPES
  from autosklearn.ensemble_building.run import Run
  from autosklearn.ensembles.abstract_ensemble import AbstractEnsemble, AbstractMultiObjectiveEnsemble
  from autosklearn.ensembles.singlebest_ensemble import SingleModelEnsemble
  from autosklearn.metrics import Scorer, calculate_losses
  from autosklearn.pipeline.base import BasePipeline
  from autosklearn.util.multiobjective import pareto_front
label_desc: Use image node_id 3 for calling the MultiObjectiveDummyEnsemble obj's underlying member method code with example usage: obj.fit(base_models_predictions, true_targets, model_identifiers, runs, X_data) and returns: self