docs: def gadf(y, method="Quantiles", maxk=15, pct=0.8):
      """
      Evaluate the Goodness of Absolute Deviation Fit of a Classifier
      Finds the minimum value of k for which gadf>pct
  
      Parameters
      ----------
  
      y      : array
               (n, 1) values to be classified
      method : {'Quantiles, 'Fisher_Jenks', 'Maximum_Breaks', 'Natrual_Breaks'}
      maxk   : int
               maximum value of k to evaluate
      pct    : float
               The percentage of GADF to exceed
  
      Returns
      -------
      k : int
          number of classes
      cl : object
           instance of the classifier at k
      gadf : float
             goodness of absolute deviation fit
  
      Examples
      --------
      >>> import mapclassify as mc
      >>> cal = mc.load_example()
      >>> qgadf = mc.classifiers.gadf(cal)
      >>> qgadf[0]
      15
      >>> qgadf[-1]
      0.3740257590909283
  
      Quantiles fail to exceed 0.80 before 15 classes. If we lower the bar to
      0.2 we see quintiles as a result
  
      >>> qgadf2 = mc.classifiers.gadf(cal, pct = 0.2)
      >>> qgadf2[0]
      5
      >>> qgadf2[-1]
      0.21710231966462412
      >>>
  
      Notes
      -----
  
      The GADF is defined as:
  
          .. math::
  
              GADF = 1 - \sum_c \sum_{i \in c}
                     |y_i - y_{c,med}|  / \sum_i |y_i - y_{med}|
  
          where :math:`y_{med}` is the global median and :math:`y_{c,med}` is
          the median for class :math:`c`.
  
      See Also
      --------
      K_classifiers
      """
  
      y = np.array(y)
      adam = (np.abs(y - np.median(y))).sum()
      for k in range(2, maxk + 1):
          cl = kmethods[method](y, k)
          gadf = 1 - cl.adcm / adam
          if gadf > pct:
              break
      return (k, cl, gadf)