diff --git a/sklearn/linear_model/coordinate_descent.py b/sklearn/linear_model/coordinate_descent.py index 1b6c42844ab43..d3dfa1c80724b 100644 --- a/sklearn/linear_model/coordinate_descent.py +++ b/sklearn/linear_model/coordinate_descent.py @@ -1797,7 +1797,7 @@ def fit(self, X, y): X, y, X_offset, y_offset, X_scale = _preprocess_data( X, y, self.fit_intercept, self.normalize, copy=False) - if not self.warm_start or not hasattr(self, "coef_"): + if not self.warm_start or getattr(self, "coef_", None) is None: self.coef_ = np.zeros((n_tasks, n_features), dtype=X.dtype.type, order='F') diff --git a/sklearn/linear_model/tests/test_coordinate_descent.py b/sklearn/linear_model/tests/test_coordinate_descent.py index 630cfe558a350..d5ed17cce0042 100644 --- a/sklearn/linear_model/tests/test_coordinate_descent.py +++ b/sklearn/linear_model/tests/test_coordinate_descent.py @@ -405,7 +405,8 @@ def test_multi_task_lasso_and_enet(): assert 0 < clf.dual_gap_ < 1e-5 assert_array_almost_equal(clf.coef_[0], clf.coef_[1]) - clf = MultiTaskElasticNet(alpha=1.0, tol=1e-8, max_iter=1) + clf = MultiTaskElasticNet(alpha=1.0, tol=1e-8, max_iter=1, warm_start=True) + clf.coef_ = None # ensure that this is still supported with warm_start assert_warns_message(ConvergenceWarning, 'did not converge', clf.fit, X, Y)