code: def generate_train_test_split_combined(
      data: DataFrame,
      label: str,
      problem_type: str,
      test_size: float = 0.1,
      random_state: int = 0,
      min_cls_count_train: int = 1,
  ) -> (DataFrame, DataFrame):
      """
      Generate a train test split from a DataFrame that contains the label column.
  
      Parameters
      ----------
      data : DataFrame
          DataFrame containing the features plus the label column to split into train and test sets.
      label : str
          The label column name.
          Used for stratification and to ensure all classes in multiclass classification are preserved in train data.
      problem_type : str
          The problem_type the label is used for. Determines if stratification is used.
          Options: ["binary", "multiclass", "regression", "softclass", "quantile"]
      test_size : float, default = 0.1
          The proportion of data to use for the test set.
          The remaining (1 - test_size) of data will be used for the training set.
      random_state : int, default = 0
          Random seed to use during the split.
      min_cls_count_train : int, default = 1
          The minimum number of instances of each class that must occur in the training set (for classification).
          If not satisfied by the original split, instances of unsatisfied classes are
          taken from test and put into train until satisfied.
          Raises an exception if impossible to satisfy.
  
      Returns
      -------
      train_data, test_data : (DataFrame, DataFrame)
          The train_data and test_data after performing the split. Includes the label column.
      """
      X, y = extract_label(data=data, label=label)
      (
          train_data,
          test_data,
          y_train,
          y_test,
      ) = generate_train_test_split(
          X=X,
          y=y,
          problem_type=problem_type,
          test_size=test_size,
          random_state=random_state,
          min_cls_count_train=min_cls_count_train,
      )
      train_data[label] = y_train
      test_data[label] = y_test
      return train_data, test_data
  
imports: import logging
  import math
  import pickle
  import random
  import sys
  import time
  from typing import Callable, List, Tuple, Union
  import numpy
  import pandas
  import scipy.stats
  from numpy.typing import ArrayLike
  from pandas import DataFrame, Series
  from sklearn.model_selection import LeaveOneGroupOut, RepeatedKFold, RepeatedStratifiedKFold, train_test_split
  from autogluon.common.utils.resource_utils import ResourceManager
  from ..constants import BINARY, LARGE_DATA_THRESHOLD, MULTICLASS, MULTICLASS_UPPER_LIMIT, QUANTILE, REGRESS_THRESHOLD_LARGE_DATA, REGRESS_THRESHOLD_SMALL_DATA, REGRESSION, SOFTCLASS
  from ..metrics import Scorer, accuracy, pinball_loss, root_mean_squared_error
  from .miscs import warning_filter
label_desc: Use image node_id 13 for calling a global function with example usage: generate_train_test_split_combined(data, label, problem_type, test_size, random_state, min_cls_count_train) and returns: train_data,  test_data