code: def ks_statistic(
      y_true,
      y_score,
      figsize=None,
      title_fontsize="large",
      text_fontsize="medium",
      ax=None,
  ):
      """Generates the KS Statistic plot from labels and scores/probabilities
  
      Parameters
      ----------
  
      y_true : array-like, shape=[n_samples,]
          Ground truth target values.
          Refer: https://numpy.org/doc/stable/glossary.html#term-array-like
  
      y_score : array-like, shape=[n_samples, n_classes]
          Prediction probabilities for each class returned by a classifier.
          Refer: https://numpy.org/doc/stable/glossary.html#term-array-like
  
      figsize : 2-tuple, optional
          Tuple denoting figure size of the plot e.g. (6, 6). Defaults to ``None``.
  
      title_fontsize : string or int, optional
          Matplotlib-style fontsizes. Use e.g. "small", "medium", "large"
          or integer-values. Defaults to "large".
  
      text_fontsize : string or int, optional
          Matplotlib-style fontsizes. Use e.g. "small", "medium", "large"
          or integer-values. Defaults to "medium".
  
      ax : matplotlib Axes, optional
          Axes object to draw the plot onto, otherwise uses current Axes
  
      Returns
      -------
      ax: matplotlib Axes
          Axes containing the plot
  
      Examples
      --------
      .. plot:: ../examples/ks_statistics.py
  
      Notes
      -----
      .. versionadded:: 0.8.4
  
      """
      y_true = np.array(y_true)
      y_score = np.array(y_score)
  
      classes = np.unique(y_true)
      if len(classes) != 2:
          raise ValueError(
              "Cannot calculate KS statistic for data with "
              "{} category/ies".format(len(classes))
          )
      probas = y_score
  
      # Compute KS Statistic curves
      (
          thresholds,
          pct1,
          pct2,
          ks_statistic,
          max_distance_at,
          classes,
      ) = _binary_ks_curve(y_true, probas[:, 1].ravel())
  
      if ax is None:
          fig, ax = plt.subplots(1, 1, figsize=figsize)
  
      ax.set_title("KS Statistics Plot", fontsize=title_fontsize)
  
      ax.plot(
          thresholds, pct1, lw=3, label="Class {}".format(classes[0])
      )
      ax.plot(
          thresholds, pct2, lw=3, label="Class {}".format(classes[1])
      )
      idx = np.where(thresholds == max_distance_at)[0][0]
      ax.axvline(
          max_distance_at,
          *sorted([pct1[idx], pct2[idx]]),
          label="KS Statistic: {:.3f} at {:.3f}".format(
              ks_statistic, max_distance_at
          ),
          linestyle=":",
          lw=3,
          color="black",
      )
  
      ax.set_xlim([0.0, 1.0])
      ax.set_ylim([0.0, 1.0])
  
      ax.set_xlabel("Threshold", fontsize=text_fontsize)
      ax.set_ylabel(
          "Percentage below threshold", fontsize=text_fontsize
      )
      ax.tick_params(labelsize=text_fontsize)
      ax.legend(loc="lower right", fontsize=text_fontsize)
  
      return ax
  
imports: import numpy
  import matplotlib.pyplot
  from sklearn.preprocessing import LabelEncoder
  from sklearn_evaluation.telemetry import SKLearnEvaluationLogger
  from ploomber_core.exceptions import modify_exceptions
label_desc: Use image node_id 2 for calling a global function with example usage: ks_statistic(y_true, y_score, figsize, title_fontsize, text_fontsize, ax) and returns: ax