From 007444e39c10c1112156038c7323fe75c9feb357 Mon Sep 17 00:00:00 2001 From: Narendran Santhanam Date: Tue, 3 Jul 2018 22:35:15 -0500 Subject: [PATCH 1/2] replace log with log1p log1p is a more accurate implementation of log(1+x). Refer doc here: https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.log1p.html --- sklearn/metrics/regression.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sklearn/metrics/regression.py b/sklearn/metrics/regression.py index 4bc88561a73fd..e9084a4276e18 100644 --- a/sklearn/metrics/regression.py +++ b/sklearn/metrics/regression.py @@ -314,7 +314,7 @@ def mean_squared_log_error(y_true, y_pred, raise ValueError("Mean Squared Logarithmic Error cannot be used when " "targets contain negative values.") - return mean_squared_error(np.log(y_true + 1), np.log(y_pred + 1), + return mean_squared_error(np.log1p(y_true), np.log1p(y_pred), sample_weight, multioutput) From f72c002e6bf48fff72b042cb559ebc6ed519c224 Mon Sep 17 00:00:00 2001 From: Narendran Santhanam Date: Wed, 4 Jul 2018 13:19:50 -0500 Subject: [PATCH 2/2] Replace log with log1p --- doc/modules/model_evaluation.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/modules/model_evaluation.rst b/doc/modules/model_evaluation.rst index eeb058e1440c1..e55dc1cc14762 100644 --- a/doc/modules/model_evaluation.rst +++ b/doc/modules/model_evaluation.rst @@ -176,7 +176,7 @@ Here is an example of building custom scorers, and of using the >>> import numpy as np >>> def my_custom_loss_func(y_true, y_pred): ... diff = np.abs(y_true - y_pred).max() - ... return np.log(1 + diff) + ... return np.log1p(diff) ... >>> # score will negate the return value of my_custom_loss_func, >>> # which will be np.log(2), 0.693, given the values for X