docstr: Execute workflow for cross-validation process, consisting of the following tasks:
  1) Create train and validation split indices for all folds, 2) Iterate through folds,
  performing `cv_fold_workflow` for each, 3) Average accumulated predictions over fold
  splits, 4) Evaluate final predictions, 5) Format final predictions to prepare for saving
docstr_tok: ["Execute","workflow","for","cross-validation","process",",","consisting","of","the","following","tasks",":","1",")","Create","train","and","validation","split","indices","for","all","folds",",","2",")","Iterate","through","folds",",","performing","`","cv_fold_workflow","`","for","each",",","3",")","Average","accumulated","predictions","over","fold","splits",",","4",")","Evaluate","final","predictions",",","5",")","Format","final","predictions","to","prepare","for","saving"]
code: def cross_validation_workflow(self):
      """Execute workflow for cross-validation process, consisting of the following tasks:
      1) Create train and validation split indices for all folds, 2) Iterate through folds,
      performing `cv_fold_workflow` for each, 3) Average accumulated predictions over fold
      splits, 4) Evaluate final predictions, 5) Format final predictions to prepare for saving
      """
      self.on_exp_start()
  
      reshaped_indices = get_cv_indices(
          self.folds,
          self.cv_params,
          self.data_train.input.d,
          self.data_train.target.d.iloc[:, 0],
      )
  
      for self._rep, rep_indices in enumerate(reshaped_indices):
          self.on_rep_start()
  
          for self._fold, (
              self.train_index,
              self.validation_index,
          ) in enumerate(rep_indices):
              self.cv_fold_workflow()
  
          self.on_rep_end()
      self.on_exp_end()
  
      G.log("")
  
imports: from hyperparameter_hunter.algorithm_handlers import identify_algorithm, identify_algorithm_hyperparameters
  from hyperparameter_hunter.data import TrainDataset, OOFDataset, HoldoutDataset, TestDataset
  from hyperparameter_hunter.experiment_core import ExperimentMeta
  from hyperparameter_hunter.feature_engineering import FeatureEngineer
  from hyperparameter_hunter.i_o.exceptions import EnvironmentInactiveError, EnvironmentInvalidError, RepeatedExperimentError
  from hyperparameter_hunter.i_o.recorders import RecorderList
  from hyperparameter_hunter.keys.makers import HyperparameterKeyMaker
  from hyperparameter_hunter.metrics import ScoringMixIn, get_formatted_target_metric
  from hyperparameter_hunter.models import model_selector
  from hyperparameter_hunter.settings import G
  from hyperparameter_hunter.utils.file_utils import RetryMakeDirs
  from abc import abstractmethod
  from copy import deepcopy
  from inspect import isclass
  import numpy
  import pandas
  import random
  import shutil
  from sys import exc_info
  from uuid import uuid4
  import warnings
  import sklearn.utils
label_desc: Use image node_id 5 for calling the BaseCVExperiment obj's underlying member method code with example usage: obj.cross_validation_workflow() without return types