From a47c3b9a0764183f8803794de117742125fb79d2 Mon Sep 17 00:00:00 2001 From: Sergei Lebedev Date: Wed, 7 Jun 2017 02:20:54 +0200 Subject: [PATCH] ENH use expit in ``_BinaryGaussianProcessClassifierLaplace`` (#9011) SciPy already provides a numerically stable ``special.expit`` function, which does not overflow on the example mentioned in #8641. --- sklearn/gaussian_process/gpc.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sklearn/gaussian_process/gpc.py b/sklearn/gaussian_process/gpc.py index 6f491b376e1..31d15e533dc 100644 --- a/sklearn/gaussian_process/gpc.py +++ b/sklearn/gaussian_process/gpc.py @@ -10,7 +10,7 @@ from operator import itemgetter import numpy as np from scipy.linalg import cholesky, cho_solve, solve from scipy.optimize import fmin_l_bfgs_b -from scipy.special import erf +from scipy.special import erf, expit from sklearn.base import BaseEstimator, ClassifierMixin, clone from sklearn.gaussian_process.kernels \ @@ -389,7 +389,7 @@ class _BinaryGaussianProcessClassifierLaplace(BaseEstimator): log_marginal_likelihood = -np.inf for _ in range(self.max_iter_predict): # Line 4 - pi = 1 / (1 + np.exp(-f)) + pi = expit(f) W = pi * (1 - pi) # Line 5 W_sr = np.sqrt(W)