From dbf935df9c0199d370f56ca3ecb360f3c5ed99fa Mon Sep 17 00:00:00 2001 From: Joan Massich Date: Wed, 14 Jun 2017 17:45:08 +0200 Subject: [PATCH 1/2] Add oliver's comments --- sklearn/linear_model/ridge.py | 7 ++++--- sklearn/linear_model/tests/test_ridge.py | 8 +++++--- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/sklearn/linear_model/ridge.py b/sklearn/linear_model/ridge.py index 92c76dedeeedb..00d28cc6eba97 100644 --- a/sklearn/linear_model/ridge.py +++ b/sklearn/linear_model/ridge.py @@ -472,10 +472,11 @@ def __init__(self, alpha=1.0, fit_intercept=True, normalize=False, def fit(self, X, y, sample_weight=None): - if self.solver in ['svd', 'sparse_cg', 'cholesky', 'lsqr']: - _dtype = [np.float64, np.float32] - else: + if self.solver in ('sag', 'saga'): _dtype = np.float64 + else: + # all other solvers work at both float precision levels + _dtype = [np.float64, np.float32] X, y = check_X_y(X, y, ['csr', 'csc', 'coo'], dtype=_dtype, multi_output=True, y_numeric=True) diff --git a/sklearn/linear_model/tests/test_ridge.py b/sklearn/linear_model/tests/test_ridge.py index 19732b94cc224..05cb676026183 100644 --- a/sklearn/linear_model/tests/test_ridge.py +++ b/sklearn/linear_model/tests/test_ridge.py @@ -813,12 +813,12 @@ def test_dtype_match(): ridge_64.fit(X_64, y_64) coef_64 = ridge_64.coef_ - # Do all the checks at once, like this is easier to debug - assert_almost_equal(ridge_32.coef_, ridge_64.coef_, decimal=5) - # Do the actual checks at once for easier debug assert_equal(coef_32.dtype, X_32.dtype) assert_equal(coef_64.dtype, X_64.dtype) + assert_almost_equal(ridge_32.coef_, ridge_64.coef_, decimal=5) + assert_equal(ridge_32.predict(X_32).dtype, X_32.dtype) + assert_equal(ridge_64.predict(X_64).dtype, X_64.dtype) def test_dtype_match_cholesky(): @@ -847,3 +847,5 @@ def test_dtype_match_cholesky(): assert_equal(coef_32.dtype, X_32.dtype) assert_equal(coef_64.dtype, X_64.dtype) assert_almost_equal(ridge_32.coef_, ridge_64.coef_, decimal=5) + assert_equal(ridge_32.predict(X_32).dtype, X_32.dtype) + assert_equal(ridge_64.predict(X_64).dtype, X_64.dtype) From b0910a660cd16b8f9400ca99476d4700ceca8584 Mon Sep 17 00:00:00 2001 From: Joan Massich Date: Wed, 14 Jun 2017 18:35:30 +0200 Subject: [PATCH 2/2] Adapt the tests to be more descriptive in pytest --- sklearn/linear_model/tests/test_ridge.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/sklearn/linear_model/tests/test_ridge.py b/sklearn/linear_model/tests/test_ridge.py index 05cb676026183..4879e02deff50 100644 --- a/sklearn/linear_model/tests/test_ridge.py +++ b/sklearn/linear_model/tests/test_ridge.py @@ -814,11 +814,11 @@ def test_dtype_match(): coef_64 = ridge_64.coef_ # Do the actual checks at once for easier debug - assert_equal(coef_32.dtype, X_32.dtype) - assert_equal(coef_64.dtype, X_64.dtype) + assert coef_32.dtype == X_32.dtype + assert coef_64.dtype == X_64.dtype + assert ridge_32.predict(X_32).dtype == X_32.dtype + assert ridge_64.predict(X_64).dtype == X_64.dtype assert_almost_equal(ridge_32.coef_, ridge_64.coef_, decimal=5) - assert_equal(ridge_32.predict(X_32).dtype, X_32.dtype) - assert_equal(ridge_64.predict(X_64).dtype, X_64.dtype) def test_dtype_match_cholesky(): @@ -844,8 +844,8 @@ def test_dtype_match_cholesky(): coef_64 = ridge_64.coef_ # Do all the checks at once, like this is easier to debug - assert_equal(coef_32.dtype, X_32.dtype) - assert_equal(coef_64.dtype, X_64.dtype) + assert coef_32.dtype == X_32.dtype + assert coef_64.dtype == X_64.dtype + assert ridge_32.predict(X_32).dtype == X_32.dtype + assert ridge_64.predict(X_64).dtype == X_64.dtype assert_almost_equal(ridge_32.coef_, ridge_64.coef_, decimal=5) - assert_equal(ridge_32.predict(X_32).dtype, X_32.dtype) - assert_equal(ridge_64.predict(X_64).dtype, X_64.dtype)