From e7b8bff7b4d8f54287e6975c274ca9e3e11a5b51 Mon Sep 17 00:00:00 2001 From: Olivier Grisel Date: Fri, 3 Jan 2020 14:25:35 +0100 Subject: [PATCH] Non-regression test for #13393 (amg solver stability) --- sklearn/cluster/tests/test_spectral.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/sklearn/cluster/tests/test_spectral.py b/sklearn/cluster/tests/test_spectral.py index f5591c7348ebe..8347d1bb3e1b9 100644 --- a/sklearn/cluster/tests/test_spectral.py +++ b/sklearn/cluster/tests/test_spectral.py @@ -230,6 +230,23 @@ def test_spectral_clustering_with_arpack_amg_solvers(): random_state=0) +def test_spectral_clustering_amg_solver_failure(): + # Non-regression test for amg solver failure (issue #13393 on github) + pytest.importorskip('pyamg') + seed = 36 + num_nodes = 1000 + X = sparse.rand(num_nodes, num_nodes, density=0.1, random_state=seed) + upper = sparse.triu(X) - sparse.diags(X.diagonal()) + sym_matrix = upper + upper.T + clustering = SpectralClustering(n_clusters=3, + eigen_solver='amg', + random_state=seed, + affinity='precomputed') + + # Smoke test: underlying solver should not raise numpy.linalg.LinAlgError + clustering.fit(sym_matrix) + + def test_n_components(): # Test that after adding n_components, result is different and # n_components = n_clusters by default