def METHOD_NAME(self) -> pd.DataFrame:
    """
    Runs the evaluation on the surrogate by applying LOOCV on the datasets
    being trained on. Metrics are then provided per test dataset.
    Returns:
        A data frame with the results for each fold, the metrics being the columns. The rows
            are indexed by the dataset which was left out.
    """
    if isinstance(self.surrogate, AutoGluonSurrogate):
        metrics = [
            self._run_on_dataset(x)
            for x in tqdm(list(loocv_split(self.tracker)))
        ]
    else:
        data = list(loocv_split(self.tracker))
        metrics = run_parallel(
            self._run_on_dataset,
            data=data,
            num_processes=min(
                num_fitting_processes(
                    cpus_per_process=self.surrogate.required_cpus,
                    memory_per_process=self.surrogate.required_memory,
                ),
                len(data),
            ),
        )
    return pd.concat(metrics).set_index("test_dataset")