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(random_state=46) 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_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(int) ap = AffinityPropagation(random_state=46) ap.fit(X, y) ap.cluster_centers_ = centers with warnings.catch_warnings(): warnings.simplefilter("error", ConvergenceWarning) assert_array_equal(ap.predict(X), np.zeros(X.shape[0], dtype=int))
def cluster_bbox(X, clutter=1): A = -euclidean_distances(X, squared=True) pref = np.percentile(A, clutter) # bbox clustering af = AffinityPropagation(preference=pref) af.fit(X) # membership function if (af.cluster_centers_.ndim == 3): af.cluster_centers_ = af.cluster_centers_.reshape( (af.cluster_centers_.shape[0], -1)) M_mem = np.sqrt(pairwise_distances(X, af.cluster_centers_)) M_mem = np.exp(-M_mem) M_mem /= M_mem.sum(axis=1, keepdims=True) return M_mem, af.cluster_centers_