code: def shuffled_split(
      X, y, shuffle=True, train_size=0.75, random_seed=None
  ):
      """Splits feature and target arrays into training and test subsets.
  
      Parameters
      ----------
      X : array-like, shape = [n_samples, n_features]
          Initial dataset, where n_samples is the number of samples and
          n_features is the number of features.
      y : array-like, shape = [n_samples]
          Target values.
      shuffle : bool (default: True)
          Doesn't shuffle the arrays if False
      train_size : float (default: 0.75)
          Proportion of data in the training arrays. For example, 0.75 will
          put 75% of the data into the training array, and 25% of the data
          into the test array.
      random_seed : int (default: None)
          Sets the random state.
  
      Returns
      ----------
      X_train : array-like, shape = [n_samples * train_size, n_features]
          Training dataset, where n_samples is the number of samples and
          n_features is the number of features.
      y_train : array-like, shape = [n_samples * train_size]
          Training target values.
      X_test : array-like, shape = [n_samples * (1-train_size), n_features]
          Dataset for testing, where n_samples is the number of samples and
          n_features is the number of features.
      y_test : array-like, shape = [n_samples * (1-train_size)]
           Target values for testing.
  
      For usage examples, please see
      https://rasbt.github.io/mlxtend/user_guide/preprocessing/shuffled_split/
  
      """
      check_Xy(X, y, y_int=False)
  
      if train_size <= 0.0 or train_size >= 1.0:
          raise ValueError(
              "train_size must be a float in the range (0.0, 1.0)"
          )
  
      if shuffle:
          X_ary, y_ary = shuffle_arrays_unison(
              arrays=[X.copy(), y.copy()], random_seed=random_seed
          )
      else:
          X_ary, y_ary = X.copy(), y.copy()
  
      train_absize = round(train_size * y.shape[0])
  
      X_train, y_train = X_ary[:train_absize], y_ary[:train_absize]
      X_test, y_test = X_ary[train_absize:], y_ary[train_absize:]
      return X_train, y_train, X_test, y_test
  
imports: import numpy
  from mlxtend.utils import check_Xy
label_desc: Use image node_id 2 for calling a global function with example usage: shuffled_split(X, y, shuffle, train_size, random_seed) and returns: X_train,  y_train,  X_test,  y_test