'Probability estimates.
The returned estimates for all classes are ordered by label of classes.
Note that in the multilabel case, each sample can have any number of
labels. This returns the marginal probability that the given sample has
the label in question. For example, it is entirely consistent that two
labels both have a 90% probability of applying to a given sample.
In the single label multiclass case, the rows of the returned matrix
sum to 1.
Parameters
X : array-like, shape = [n_samples, n_features]
Returns
T : (sparse) array-like, shape = [n_samples, n_classes]
Returns the probability of the sample for each class in the model,
where classes are ordered as they are in `self.classes_`.'

@if_delegate_has_method(['_first_estimator', 'estimator'])
def predict_proba(self, X):

    check_is_fitted(self, 'estimators_')
    Y = np.array([e.predict_proba(X)[:, 1] for e in self.estimators_]).T
    if (len(self.estimators_) == 1):
        Y = np.concatenate(((1 - Y), Y), axis=1)
    if (not self.multilabel_):
        Y /= np.sum(Y, axis=1)[:, np.newaxis]
    return Y
