示例#1
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(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
示例#2
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))
示例#3
0
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_