code: def predict(self, X, method = 'most-wins'):
          
          X = _check_2d_inp(X, reshape = True)
          if method == 'most-wins':
              return self._predict_winners(X)
          elif method == 'goodness':
              goodness = self._decision_function_goodness(X)
              if (len(goodness.shape) == 1) or (goodness.shape[0] == 1):
                  return np.argmax(goodness)
              else:
                  return np.argmax(goodness, axis=1)
          else:
              raise ValueError("method must be one of 'most-wins' or 'goodness'.")
docs: Predict the less costly class for a given observation
          
          Note
          ----
          Predictions can be calculated either by counting which class wins the most
          pairwise comparisons (as in [1] and [2]), or - for classifiers with a 'predict_proba'
          method - by taking into account also the margins of the prediction difference
          for one class over the other for each comparison.
          
          Using method = 'goodness' requires the base classifier to have a 'predict_proba' method.
          
          Parameters
          ----------
          X : array (n_samples, n_features)
              Data for which to predict minimum cost label.
          method : str, either 'most-wins' or 'goodness':
              How to decide the best label (see Note)
          
          Returns
          -------
          y_hat : array (n_samples,)
              Label with expected minimum cost for each observation.
              
          References
          ----------
          [1] Beygelzimer, A., Dani, V., Hayes, T., Langford, J., & Zadrozny, B. (2005)
              Error limiting reductions between classification tasks.
          [2] Beygelzimer, A., Langford, J., & Zadrozny, B. (2008).
              Machine learning techniques-reductions between prediction quality metrics.