code: def setup_cv_split_iterator(
      cv_folds: Union[int, FoldMapping], examples: FeatureSet
  ) -> Tuple[FeaturesetIterator, int]:
      """
      Set up a cross-validation split iterator over the given ``FeatureSet``.
  
      Parameters
      ----------
      cv_folds : Union[int, :class:`skll.types.FoldMapping`]
          The number of folds to use for cross-validation, or
          a mapping from example IDs to folds.
      examples : :class:`skll.data.featureset.FeatureSet`
          The given featureset which is to be split.
  
      Returns
      -------
      :class:`skll.types.FeaturesetIterator`
          Iterator over the train/test featuresets
      int
          The maximum number of training samples available.
      """
      # seed the random number generator for replicability
      random_state = np.random.RandomState(123456789)
  
      # set up the cross-validation split iterator with 20% of
      # the data always reserved for testing
      cv = ShuffleSplit(
          n_splits=cv_folds, test_size=0.2, random_state=random_state
      )
      cv_iter = list(cv.split(examples.features, examples.labels, None))
      n_max_training_samples = len(cv_iter[0][0])
  
      # create an iterator over train/test featuresets based on the
      # cross-validation index iterator
      featureset_iter = (
          FeatureSet.split(examples, train, test)
          for train, test in cv_iter
      )
  
      return featureset_iter, n_max_training_samples
  
imports: from __future__ import annotations
  import inspect
  import logging
  import sys
  import time
  from collections import Counter, defaultdict
  from csv import DictWriter, excel_tab
  from functools import wraps
  from importlib import import_module
  from pathlib import Path
  from typing import TYPE_CHECKING, Any, Dict, Iterable, List, Optional, Set, Tuple, Type, Union
  import joblib
  import numpy
  import scipy.sparse
  from sklearn.base import BaseEstimator, TransformerMixin
  from sklearn.feature_selection import SelectKBest
  from sklearn.metrics import accuracy_score, confusion_matrix, precision_recall_fscore_support
  from sklearn.model_selection import KFold, LeaveOneGroupOut, ShuffleSplit, StratifiedKFold
  from skll.data import FeatureSet
  from skll.metrics import _CUSTOM_METRICS, _PREDEFINED_CUSTOM_METRICS, use_score_func
  from skll.types import ComputeEvalMetricsResults, ConfusionMatrix, FeaturesetIterator, FoldMapping, IdType, IndexIterator, LabelType, PathOrStr, SparseFeatureMatrix
  from skll.utils.constants import CLASSIFICATION_ONLY_METRICS, CORRELATION_METRICS, REGRESSION_ONLY_METRICS, UNWEIGHTED_KAPPA_METRICS, WEIGHTED_KAPPA_METRICS
  from skll.version import VERSION
label_desc: Use image node_id 11 for calling a global function with example usage: setup_cv_split_iterator(cv_folds, examples) and returns: featureset_iter,  n_max_training_samples