def test_affinity_propagation_convergence_warning_dense_sparse(centers): """Non-regression, see #13334""" rng = np.random.RandomState(42) X = rng.rand(40, 10) y = (4 * rng.rand(40)).astype(np.int) ap = AffinityPropagation() ap.fit(X, y) ap.cluster_centers_ = centers with pytest.warns(None) as record: assert_array_equal(ap.predict(X), np.zeros(X.shape[0], dtype=int)) assert len(record) == 0
def test_affinity_propagation_predict_non_convergence(): # In case of non-convergence of affinity_propagation(), the cluster # centers should be an empty array X = np.array([[0, 0], [1, 1], [-2, -2]]) # Force non-convergence by allowing only a single iteration af = AffinityPropagation(preference=-10, max_iter=1).fit(X) # At prediction time, consider new samples as noise since there are no # clusters assert_array_equal(np.array([-1, -1, -1]), af.predict(np.array([[2, 2], [3, 3], [4, 4]])))
def test_affinity_propagation_predict(): """Test AffinityPropagation.predict""" af = AffinityPropagation(affinity="euclidean") labels = af.fit_predict(X) labels2 = af.predict(X) assert_array_equal(labels, labels2)