code: def train_test_split(X, y, test_size=0.5, shuffle=True, seed=None):
      """Split the data into train and test sets"""
      if shuffle:
          X, y = shuffle_data(X, y, seed)
      # Split the training data from test data in the ratio specified in
      # test_size
      split_i = len(y) - int(len(y) // (1 / test_size))
      X_train, X_test = X[:split_i], X[split_i:]
      y_train, y_test = y[:split_i], y[split_i:]
  
      return X_train, X_test, y_train, y_test
  
file_path: ML-From-Scratch/mlfromscratch/utils/data_manipulation.py
imports: from __future__ import division
  from itertools import combinations_with_replacement
  import numpy
  import math
  import sys
label_desc: Use image node_id 8 for calling a global function with example usage: train_test_split(X, y, test_size, shuffle, seed) and returns: X_train,  X_test,  y_train,  y_test