docstr: Override :meth:`on_fold_start` tasks set by :class:`experiment_core.ExperimentMeta`,
  consisting of: 1) Split train/validation data, 2) Make copies of holdout/test data for
  current fold (for feature engineering), 3) Log start, 4) Execute original tasks
docstr_tok: ["Override",":","meth",":","`","on_fold_start","`","tasks","set","by",":","class",":","`","experiment_core.ExperimentMeta","`",",","consisting","of",":","1",")","Split","train\/validation","data",",","2",")","Make","copies","of","holdout\/test","data","for","current","fold","(","for","feature","engineering",")",",","3",")","Log","start",",","4",")","Execute","original","tasks"]
code: def on_fold_start(self):
      """Override :meth:`on_fold_start` tasks set by :class:`experiment_core.ExperimentMeta`,
      consisting of: 1) Split train/validation data, 2) Make copies of holdout/test data for
      current fold (for feature engineering), 3) Log start, 4) Execute original tasks
      """
      #################### Split Train and Validation Data ####################
      self.data_train.input.fold = self.data_train.input.d.iloc[
          self.train_index, :
      ].copy()
      self.data_oof.input.fold = self.data_train.input.d.iloc[
          self.validation_index, :
      ].copy()
  
      self.data_train.input.T.fold = self.data_train.input.T.d.iloc[
          self.train_index, :
      ].copy()
      self.data_oof.input.T.fold = self.data_train.input.T.d.iloc[
          self.validation_index, :
      ].copy()
  
      self.data_train.target.fold = self.data_train.target.d.iloc[
          self.train_index
      ].copy()
      self.data_oof.target.fold = self.data_train.target.d.iloc[
          self.validation_index
      ].copy()
  
      self.data_train.target.T.fold = self.data_train.target.T.d.iloc[
          self.train_index
      ].copy()
      self.data_oof.target.T.fold = self.data_train.target.T.d.iloc[
          self.validation_index
      ].copy()
  
      #################### Set Fold Copies of Holdout/Test Data ####################
      for data_chunk in [
          self.data_holdout.input,
          self.data_holdout.target,
          self.data_test.input,
      ]:
          if data_chunk.d is not None:
              data_chunk.fold = data_chunk.d.copy()
              data_chunk.T.fold = data_chunk.T.d.copy()
  
      #################### Perform Intra-CV Feature Engineering ####################
      self.feature_engineer(
          "intra_cv",
          train_inputs=self.data_train.input.T.fold,
          train_targets=self.data_train.target.T.fold,
          validation_inputs=self.data_oof.input.T.fold,
          validation_targets=self.data_oof.target.T.fold,
          holdout_inputs=self.data_holdout.input.T.fold,
          holdout_targets=self.data_holdout.target.T.fold,
          test_inputs=self.data_test.input.T.fold,
      )
      self.data_train.input.T.fold = self.feature_engineer.datasets[
          "train_inputs"
      ]
      self.data_train.target.T.fold = self.feature_engineer.datasets[
          "train_targets"
      ]
      self.data_oof.input.T.fold = self.feature_engineer.datasets[
          "validation_inputs"
      ]
      self.data_oof.target.T.fold = self.feature_engineer.datasets[
          "validation_targets"
      ]
      self.data_holdout.input.T.fold = self.feature_engineer.datasets[
          "holdout_inputs"
      ]
      self.data_holdout.target.T.fold = self.feature_engineer.datasets[
          "holdout_targets"
      ]
      self.data_test.input.T.fold = self.feature_engineer.datasets[
          "test_inputs"
      ]
  
      super().on_fold_start()
  
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 6 for calling the BaseCVExperiment obj's underlying member method code with example usage: obj.on_fold_start() without return types