code: def predict_proba(self, X, raw_score=False, num_iteration=None,
                        pred_leaf=False, pred_contrib=False, **kwargs):
          
          result = super(LGBMClassifier, self).predict(X, raw_score, num_iteration,
                                                       pred_leaf, pred_contrib, **kwargs)
          if self._n_classes > 2 or raw_score or pred_leaf or pred_contrib:
              return result
          else:
              return np.vstack((1. - result, result)).transpose()
docs: Return the predicted probability for each class for each sample.
  
          Parameters
          ----------
          X : array-like or sparse matrix of shape = [n_samples, n_features]
              Input features matrix.
          raw_score : bool, optional (default=False)
              Whether to predict raw scores.
          num_iteration : int or None, optional (default=None)
              Limit number of iterations in the prediction.
              If None, if the best iteration exists, it is used; otherwise, all trees are used.
              If <= 0, all trees are used (no limits).
          pred_leaf : bool, optional (default=False)
              Whether to predict leaf index.
          pred_contrib : bool, optional (default=False)
              Whether to predict feature contributions.
  
              Note
              ----
              If you want to get more explanations for your model's predictions using SHAP values,
              like SHAP interaction values,
              you can install the shap package (https://github.com/slundberg/shap).
              Note that unlike the shap package, with ``pred_contrib`` we return a matrix with an extra
              column, where the last column is the expected value.
  
          **kwargs
              Other parameters for the prediction.
  
          Returns
          -------
          predicted_probability : array-like of shape = [n_samples, n_classes]
              The predicted probability for each class for each sample.
          X_leaves : array-like of shape = [n_samples, n_trees * n_classes]
              If ``pred_leaf=True``, the predicted leaf of every tree for each sample.
          X_SHAP_values : array-like of shape = [n_samples, (n_features + 1) * n_classes]
              If ``pred_contrib=True``, the feature contributions for each sample.