code: def cross_val_score(
      estimator,
      X,
      y=None,
      groups=None,
      scoring=None,
      cv=None,
      n_jobs=1,
      verbose=0,
      fit_params=None,
      pre_dispatch="2*n_jobs",
  ):
      """Evaluate a score by cross-validation
  
      Read more in the :ref:`User Guide <cross_validation>`.
  
      Parameters
      ----------
      estimator : estimator object implementing 'fit'
          The object to use to fit the data.
  
      X : array-like
          The data to fit. Can be, for example a list, or an array at least 2d.
  
      y : array-like, optional, default: None
          The target variable to try to predict in the case of
          supervised learning.
  
      groups : array-like, with shape (n_samples,), optional
          Group labels for the samples used while splitting the dataset into
          train/test set.
  
      scoring : string, callable or None, optional, default: None
          A string (see model evaluation documentation) or
          a scorer callable object / function with signature
          ``scorer(estimator, X, y)``.
  
      cv : int, cross-validation generator or an iterable, optional
          Determines the cross-validation splitting strategy.
          Possible inputs for cv are:
            - None, to use the default 3-fold cross validation,
            - integer, to specify the number of folds in a `(Stratified)KFold`,
            - An object to be used as a cross-validation generator.
            - An iterable yielding train, test splits.
  
          For integer/None inputs, if the estimator is a classifier and ``y`` is
          either binary or multiclass, :class:`StratifiedKFold` is used. In all
          other cases, :class:`KFold` is used.
  
          Refer :ref:`User Guide <cross_validation>` for the various
          cross-validation strategies that can be used here.
  
      n_jobs : integer, optional
          The number of CPUs to use to do the computation. -1 means
          'all CPUs'.
  
      verbose : integer, optional
          The verbosity level.
  
      fit_params : dict, optional
          Parameters to pass to the fit method of the estimator.
  
      pre_dispatch : int, or string, optional
          Controls the number of jobs that get dispatched during parallel
          execution. Reducing this number can be useful to avoid an
          explosion of memory consumption when more jobs get dispatched
          than CPUs can process. This parameter can be:
  
              - None, in which case all the jobs are immediately
                created and spawned. Use this for lightweight and
                fast-running jobs, to avoid delays due to on-demand
                spawning of the jobs
  
              - An int, giving the exact number of total jobs that are
                spawned
  
              - A string, giving an expression as a function of n_jobs,
                as in '2*n_jobs'
  
      Returns
      -------
      scores : array of float, shape=(len(list(cv)),)
          Array of scores of the estimator for each run of the cross validation.
  
      Examples
      --------
      >>> from sklearn import datasets, linear_model
      >>> from sklearn.model_selection import cross_val_score
      >>> diabetes = datasets.load_diabetes()
      >>> X = diabetes.data[:150]
      >>> y = diabetes.target[:150]
      >>> lasso = linear_model.Lasso()
      >>> print(cross_val_score(lasso, X, y))  # doctest: +ELLIPSIS
      [ 0.33150734  0.08022311  0.03531764]
  
      See Also
      ---------
      :func:`sklearn.metrics.make_scorer`:
          Make a scorer from a performance metric or loss function.
  
      """
      X, y, groups = indexable(X, y, groups)
  
      cv = check_cv(cv, y, classifier=is_classifier(estimator))
      cv_iter = list(cv.split(X, y, groups))
      scorer = check_scoring(estimator, scoring=scoring)
      # We clone the estimator to make sure that all the folds are
      # independent, and that it is pickle-able.
      parallel = Parallel(
          n_jobs=n_jobs, verbose=verbose, pre_dispatch=pre_dispatch
      )
      scores = parallel(
          delayed(_fit_and_score)(
              clone(estimator),
              X,
              y,
              scorer,
              train,
              test,
              verbose,
              None,
              fit_params,
          )
          for train, test in cv_iter
      )
      return np.array(scores)[:, 0]
  
imports: from __future__ import print_function
  from __future__ import division
  import warnings
  import numbers
  import time
  import numpy
  import scipy.sparse
  from ..base import is_classifier, clone
  from ..utils import indexable, check_random_state, safe_indexing
  from ..utils.fixes import astype
  from ..utils.validation import _is_arraylike, _num_samples
  from ..utils.metaestimators import _safe_split
  from ..externals.joblib import Parallel, delayed, logger
  from ..metrics.scorer import check_scoring
  from ..exceptions import FitFailedWarning
  from ._split import check_cv
label_desc: Use image node_id 1 for calling a global function with example usage: cross_val_score(estimator, X, y, groups, scoring, cv, n_jobs, verbose, fit_params, pre_dispatch) and returns: np