'Probability estimates.
Parameters
X : {array-like, sparse matrix}, shape (n_samples, n_features)
The input data.
Returns
y_prob : array-like, shape (n_samples, n_classes)
The predicted probability of the sample for each class in the
model, where classes are ordered as they are in `self.classes_`.'

def predict_proba(self, X):

    check_is_fitted(self, 'coefs_')
    y_pred = self._predict(X)
    if (self.n_outputs_ == 1):
        y_pred = y_pred.ravel()
    if (y_pred.ndim == 1):
        return np.vstack([(1 - y_pred), y_pred]).T
    else:
        return y_pred
