code: def get_splits(self, n_splits=1):
          
          if n_splits == 1:
              stratify = self.target if self._stratify else None
  
              return train_test_split(
                  self.data,
                  self.target,
                  shuffle=self._shuffle,
                  stratify=stratify
              )
  
          else:
              cv_class = StratifiedKFold if self._stratify else KFold
              cv = cv_class(n_splits=n_splits, shuffle=self._shuffle)
  
              splits = list()
              for train, test in cv.split(self.data, self.target):
                  X_train = self._get_split(self.data, train)
                  y_train = self._get_split(self.target, train)
                  X_test = self._get_split(self.data, test)
                  y_test = self._get_split(self.target, test)
                  splits.append((X_train, X_test, y_train, y_test))
  
              return splits
docs: Return splits of this dataset ready for Cross Validation.
  
          If n_splits is 1, a tuple containing the X for train and test
          and the y for train and test is returned.
          Otherwise, if n_splits is bigger than 1, a list of such tuples
          is returned, one for each split.
  
          Args:
              n_splits (int): Number of times that the data needs to be splitted.
  
          Returns:
              tuple or list:
                  if n_splits is 1, a tuple containing the X for train and test
                  and the y for train and test is returned.
                  Otherwise, if n_splits is bigger than 1, a list of such tuples
                  is returned, one for each split.