class_docstr: The recommender analyzer evaluates the performance of a 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","analyzer","evaluates","the","performance","of","a","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","."]
docstr: Runs the evaluation on all datasets and returns the selected models for
  each dataset. The config evaluator can be used to construct a data
  frame of performances from the configurations.
  
  Returns:
      The recommended models. The outer list provides the index of the recommendations, i.e.
          the first item of the list provides all the first recommendations of the
          recommender, etc.
docstr_tok: ["Runs","the","evaluation","on","all","datasets","and","returns","the","selected","models","for","each","dataset",".","The","config","evaluator","can","be","used","to","construct","a","data","frame","of","performances","from","the","configurations",".","Returns",":","The","recommended","models",".","The","outer","list","provides","the","index","of","the","recommendations",",","i.e",".","the","first","item","of","the","list","provides","all","the","first","recommendations","of","the","recommender",",","etc","."]
code: def run(self) -> List[Dict[str, ModelConfig]]:
      """
      Runs the evaluation on all datasets and returns the selected models for
      each dataset. The config evaluator can be used to construct a data
      frame of performances from the configurations.
  
      Returns:
          The recommended models. The outer list provides the index of the recommendations, i.e.
              the first item of the list provides all the first recommendations of the
              recommender, etc.
      """
      data = list(loocv_split(self.tracker))
      results = run_parallel(
          self._run_on_dataset,
          data=data,
          num_processes=min(
              len(data),
              num_fitting_processes(
                  cpus_per_process=self.recommender.required_cpus,
                  memory_per_process=self.recommender.required_memory,
              ),
          ),
      )
      recommendations = {k: v for r in results for k, v in r.items()}
      return [
          {k: v[i] for k, v in recommendations.items()}
          for i in range(self.num_recommendations)
      ]
  
file_path: gluonts/src/gluonts/nursery/tsbench/src/tsbench/analysis/recommender/model.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, ModelConfig
  from tsbench.evaluations.metrics import Performance
  from tsbench.evaluations.tracking import ModelTracker
  from tsbench.recommender import Recommender
label_desc: Use image node_id 2 for calling the ModelRecommenderAnalyzer obj's underlying member method code with example usage: obj.run() and returns: unknown