docstr: For each base estimator collect models trained on each fold
code: def _create_base_ensemble(self, out, n_estimators, n_folds):
      """For each base estimator collect models trained on each fold"""
      if hasattr(self, "feature_names_in_"):
          # Delete the attribute when the estimator is fitted on a new dataset
          # that has no feature names.
          delattr(self, "feature_names_in_")
  
      ensemble_scores = np.empty((n_estimators, n_folds))
      base_ensemble = np.empty_like(ensemble_scores, dtype=object)
      for model, fold, score, est in out:
          ensemble_scores[model, fold] = score
          base_ensemble[model, fold] = est
  
          if hasattr(est, "n_features_in_"):
              self.n_features_in_ = est.n_features_in_
          if hasattr(est, "feature_names_in_"):
              self.feature_names_in_ = est.feature_names_in_
  
      self.final_estimator_ = self.meta_estimator
  
      return ensemble_scores, base_ensemble
  
imports: import numbers
  from joblib import Parallel, delayed
  import numpy
  from scipy.stats import kendalltau, rankdata, spearmanr
  from sklearn.base import BaseEstimator, clone
  from sklearn.model_selection import check_cv
  from sklearn.utils._param_validation import Interval, StrOptions
  from .base import _fit_and_score
  from .stacking import Stacking
label_desc: Use image node_id 4 for calling the BaseEnsembleSelection obj's underlying member method code with example usage: obj._create_base_ensemble(out, n_estimators, n_folds) and returns: ensemble_scores,  base_ensemble