'Estimate the best class label for each sample in X.
This is implemented as ``argmax(decision_function(X), axis=1)`` which
will return the label of the class with most votes by estimators
predicting the outcome of a decision for each possible class pair.
Parameters
X : (sparse) array-like, shape = [n_samples, n_features]
Data.
Returns
y : numpy array of shape [n_samples]
Predicted multi-class targets.'

def predict(self, X):

    Y = self.decision_function(X)
    if (self.n_classes_ == 2):
        return self.classes_[(Y > 0).astype(np.int)]
    return self.classes_[Y.argmax(axis=1)]
