code: def _split_X(X, n_splits, sc):
      """Split and broadcast a sparse matrix"""
      if n_splits > 1:
          if isinstance(X, pd.DataFrame):
              inds = list(range(len(X)))
              inds_list = list(
                  _chunks(inds, int(len(inds) / float(n_splits)))
              )
              Xs = [X.ix[slc] for slc in inds_list]
          else:
              # X is a scipy sparse matrix
              inds = list(range(X.shape[0]))
              inds_list = list(
                  _chunks(inds, int(len(inds) / float(n_splits)))
              )
              Xs = [X[slc, :] for slc in inds_list]
  
          return [sc.broadcast(x) for x in Xs]
      else:
          return X
  
imports: import numpy
  import pandas
  import warnings
  from joblib import Parallel, delayed
  from copy import copy
  from collections.abc import Sequence
  from scipy.sparse import vstack
  from sklearn.base import BaseEstimator
  from sklearn.multiclass import OneVsRestClassifier, OneVsOneClassifier
  from sklearn.preprocessing import LabelBinarizer, MultiLabelBinarizer
  from sklearn.preprocessing import normalize
  from sklearn.utils import shuffle
  from sklearn.utils.validation import check_X_y
  from sklearn.utils.multiclass import check_classification_targets, type_of_target
  from sklearn.model_selection import train_test_split, GroupKFold
  from .validation import _check_estimator
  from .utils import _safe_split
  from .base import _clone, _get_value, _parse_partitions
label_desc: Use image node_id 2 for calling a global function with example usage: _split_X(X, n_splits, sc) and returns: unknown, X