示例#1
0
def test_kcenters_8():
    X = np.random.RandomState(1).randn(100, 2)
    for dtype in [np.float64, np.float32]:
        X = X.astype(dtype)
        m1 = KCenters(n_clusters=10, random_state=0, opt=True).fit([X])
        m2 = KCenters(n_clusters=10, random_state=0, opt=False).fit([X])

        eq(m1.cluster_centers_, m2.cluster_centers_)
        eq(m1.distances_[0], m2.distances_[0])
        eq(m1.labels_[0], m2.labels_[0])
        assert np.all(np.logical_not(np.isnan(m1.distances_[0])))
        eq(m1.predict([X])[0], m2.predict([X])[0])
        eq(m1.predict([X])[0], m1.labels_[0])
示例#2
0
def test_kcenters_3():
    # test for predict using euclidean distance
    model = KCenters(n_clusters=10)
    data = np.random.randn(100, 2)
    labels1 = model.fit_predict([data])
    labels2 = model.predict([data])

    eq(labels1[0], labels2[0])
    all_pairs = scipy.spatial.distance.cdist(data, model.cluster_centers_)
    eq(labels2[0], np.argmin(all_pairs, axis=1))
示例#3
0
def test_kcenters_4():
    # test for predict() using non-euclidean distance. because of the
    # way the code is structructured, this takes a different path
    model = KCenters(n_clusters=10, metric='cityblock')
    data = np.random.randn(100, 2)
    labels1 = model.fit_predict([data])
    labels2 = model.predict([data])

    eq(labels1[0], labels2[0])
    all_pairs = scipy.spatial.distance.cdist(data, model.cluster_centers_, metric='cityblock')
    eq(labels2[0], np.argmin(all_pairs, axis=1))