'Predict class for X.
The predicted class of an input sample is computed as the class with
the highest mean predicted probability. If base estimators do not
implement a ``predict_proba`` method, then it resorts to voting.
Parameters
X : {array-like, sparse matrix} of shape = [n_samples, n_features]
The training input samples. Sparse matrices are accepted only if
they are supported by the base estimator.
Returns
y : array of shape = [n_samples]
The predicted classes.'

def predict(self, X):

    predicted_probabilitiy = self.predict_proba(X)
    return self.classes_.take(np.argmax(predicted_probabilitiy, axis=1), axis=0)
