diff --git a/sklearn/linear_model/omp.py b/sklearn/linear_model/omp.py index cb3a3c7831bf5d0cb0a3c35b07b543936e4ba96c..b0fb3efb029f6846b3bfb343f43476e8b0af6c2a 100644 --- a/sklearn/linear_model/omp.py +++ b/sklearn/linear_model/omp.py @@ -63,6 +63,7 @@ def _cholesky_omp(X, y, n_nonzero_coefs, tol=None, copy_X=True): alpha = np.dot(X.T, y) residual = y + gamma = np.empty(0) n_active = 0 indices = range(X.shape[1]) # keeping track of swapping @@ -157,6 +158,7 @@ def _gram_omp(Gram, Xy, n_nonzero_coefs, tol_0=None, tol=None, alpha = Xy tol_curr = tol_0 delta = 0 + gamma = np.empty(0) n_active = 0 max_features = len(Gram) if tol is not None else n_nonzero_coefs diff --git a/sklearn/linear_model/tests/test_omp.py b/sklearn/linear_model/tests/test_omp.py index f52486d4279f7081182f46587afd150ce6a2b04e..11e07b32530dddceb79825b98e1586b3dd6e3996 100644 --- a/sklearn/linear_model/tests/test_omp.py +++ b/sklearn/linear_model/tests/test_omp.py @@ -154,3 +154,12 @@ def test_swapped_regressors(): gamma_hat_gram = orthogonal_mp_gram(G, new_Xy, 2) assert_equal(np.flatnonzero(gamma_hat), [0, 21]) assert_equal(np.flatnonzero(gamma_hat_gram), [0, 21]) + + +def test_no_atoms(): + y_empty = np.zeros_like(y) + Xy_empty = np.dot(X.T, y_empty) + gamma_empty = orthogonal_mp(X, y_empty, 1) + gamma_empty_gram = orthogonal_mp_gram(G, Xy_empty, 1) + assert_equal(np.all(gamma_empty == 0), True) + assert_equal(np.all(gamma_empty_gram == 0), True)