class_docstr: The recommender evaluator evaluates the performance of an ensemble
  recommender across datasets.
  
  The analysis is run in parallel and should, thus, not be used in a Jupyter
  notebook. Instead, consider using the `tsbench` CLI.
class_docstr_tok: ["The","recommender","evaluator","evaluates","the","performance","of","an","ensemble","recommender","across","datasets",".","The","analysis","is","run","in","parallel","and","should",",","thus",",","not","be","used","in","a","Jupyter","notebook",".","Instead",",","consider","using","the","`","tsbench","`","CLI","."]
code: def _run_on_dataset(
      self,
      data: Tuple[
          Tuple[List[Config[EnsembleConfig]], List[Performance]],
          Tuple[List[Config[EnsembleConfig]], List[Performance]],
      ],
  ) -> Dict[str, List[EnsembleConfig]]:
      # Extract the data
      (X_train, y_train), (X_test, _) = data
      dataset = X_test[0].dataset
  
      # Fit the recommender and predict
      self.recommender.fit(X_train, y_train)
      recommendations = self.recommender.recommend(
          dataset, max_count=self.num_recommendations
      )
  
      # Return the recommendations
      return {dataset.name(): [r.config for r in recommendations]}
  
file_path: gluonts/src/gluonts/nursery/tsbench/src/tsbench/analysis/recommender/ensemble.py
imports: from typing import Dict, List, Tuple
  from tsbench.analysis.utils import num_fitting_processes, run_parallel
  from tsbench.analysis.utils.loocv import loocv_split
  from tsbench.config import Config, EnsembleConfig
  from tsbench.evaluations.metrics import Performance
  from tsbench.evaluations.tracking import EnsembleTracker
  from tsbench.recommender import Recommender
label_desc: Use image node_id 3 for calling the EnsembleRecommenderAnalyzer obj's underlying member method code with example usage: obj._run_on_dataset(data) and returns: dict