'Return posterior probabilities of classification.
Parameters
X : array-like, shape = [n_samples, n_features]
Array of samples/test vectors.
Returns
C : array, shape = [n_samples, n_classes]
Posterior probabilities of classification per class.'

def predict_proba(self, X):

    values = self._decision_function(X)
    likelihood = np.exp((values - values.max(axis=1)[:, np.newaxis]))
    return (likelihood / likelihood.sum(axis=1)[:, np.newaxis])
