diff --git a/sklearn/linear_model/ridge.py b/sklearn/linear_model/ridge.py index c846894f2fa43..dd0d2972d8783 100644 --- a/sklearn/linear_model/ridge.py +++ b/sklearn/linear_model/ridge.py @@ -645,8 +645,8 @@ def _values(self, alpha, y, v, Q, QT_y): return y - (c / G_diag), c def _pre_compute_svd(self, X, y): - if sparse.issparse(X): - raise TypeError("SVD not supported for sparse matrices") + if sparse.issparse(X) and hasattr(X, 'toarray'): + X = X.toarray() U, s, _ = linalg.svd(X, full_matrices=0) v = s ** 2 UT_y = np.dot(U.T, y) @@ -701,7 +701,7 @@ def fit(self, X, y, sample_weight=1.0): with_sw = len(np.shape(sample_weight)) if gcv_mode is None or gcv_mode == 'auto': - if sparse.issparse(X) or n_features > n_samples or with_sw: + if n_features > n_samples or with_sw: gcv_mode = 'eigen' else: gcv_mode = 'svd'