diff --git a/doc/whats_new.rst b/doc/whats_new.rst index 0c5608d6b5970..3c87d4174c388 100644 --- a/doc/whats_new.rst +++ b/doc/whats_new.rst @@ -471,10 +471,13 @@ Bug fixes by :user:`Andre Ambrosio Boechat `, :user:`Utkarsh Upadhyay `, and `Joel Nothman`_. - - Add ``data_home`` parameter to :func:`sklearn.datasets.fetch_kddcup99` by `Loic Esteve`_. + - Fix inconsistent results between :class:`linear_model.RidgeCV` + and :class:`linear_model.Ridge` when using ``normalize=True`` + by `Alexandre Gramfort`_. + API changes summary ------------------- diff --git a/sklearn/linear_model/ridge.py b/sklearn/linear_model/ridge.py index e0c7b6f188037..caf2f9eed64c2 100644 --- a/sklearn/linear_model/ridge.py +++ b/sklearn/linear_model/ridge.py @@ -1119,7 +1119,8 @@ def fit(self, X, y, sample_weight=None): raise ValueError("cv!=None and store_cv_values=True " " are incompatible") parameters = {'alpha': self.alphas} - gs = GridSearchCV(Ridge(fit_intercept=self.fit_intercept), + gs = GridSearchCV(Ridge(fit_intercept=self.fit_intercept, + normalize=self.normalize), parameters, cv=self.cv, scoring=self.scoring) gs.fit(X, y, sample_weight=sample_weight) estimator = gs.best_estimator_ diff --git a/sklearn/linear_model/tests/test_ridge.py b/sklearn/linear_model/tests/test_ridge.py index 4879e02deff50..ee44da5d56b86 100644 --- a/sklearn/linear_model/tests/test_ridge.py +++ b/sklearn/linear_model/tests/test_ridge.py @@ -383,6 +383,16 @@ def _test_ridge_loo(filter_): return ret +def _test_ridge_cv_normalize(filter_): + ridge_cv = RidgeCV(normalize=True, cv=3) + ridge_cv.fit(filter_(10. * X_diabetes), y_diabetes) + + gs = GridSearchCV(Ridge(normalize=True), cv=3, + param_grid={'alpha': ridge_cv.alphas}) + gs.fit(filter_(10. * X_diabetes), y_diabetes) + assert_equal(gs.best_estimator_.alpha, ridge_cv.alpha_) + + def _test_ridge_cv(filter_): ridge_cv = RidgeCV() ridge_cv.fit(filter_(X_diabetes), y_diabetes) @@ -462,6 +472,7 @@ def check_dense_sparse(test_func): def test_dense_sparse(): for test_func in (_test_ridge_loo, _test_ridge_cv, + _test_ridge_cv_normalize, _test_ridge_diabetes, _test_multi_ridge_diabetes, _test_ridge_classifiers,