コード例 #1
0
ファイル: test_des_knn.py プロジェクト: postyear/DES
def test_select_less_diverse():
    """
    Test case: 10 base classifiers; select 5 based on accuracy,
    then the 3 less diverse
    accuracies (/10): 4 6 1 2 9 8 7 9 3 2
        (should select indices_ 1, 4, 5, 6, 7)
    diversity:        0 8 0 0 1 6 7 2 0 0
        (should select indices_ 4, 5, 7 as most diverse)

    """
    pool_classifiers = [create_base_classifier(1) for _ in range(10)]

    accuracies = np.array([[4, 6, 1, 2, 9, 8, 7, 9, 3, 2]]) / 10.
    diversity = np.array([[0, 8, 0, 0, 1, 6, 7, 2, 0, 0]])
    target = DESKNN(pool_classifiers,
                    k=7,
                    pct_accuracy=5. / 10,
                    pct_diversity=3. / 10,
                    more_diverse=False)
    target.N_ = 5
    target.J_ = 3

    selected_classifiers = target.select(accuracies, diversity)
    expected = np.array([[4, 5, 7]])

    assert np.array_equal(np.unique(selected_classifiers), np.unique(expected))
コード例 #2
0
ファイル: test_des_knn.py プロジェクト: postyear/DES
def test_select_batch():
    """
    Test case: 10 base classifiers; select 5 based on accuracy,
    then the 3 most diverse.
    accuracies (/10): 4 6 1 2 9 8 7 9 3 2
        (should select indices_ 1, 4, 5, 6, 7)
    diversity:        0 8 0 0 1 6 7 2 0 0
        (should select indices_ 1, 5, 6 as most diverse)

    """
    n_samples = 10
    pool_classifiers = [create_base_classifier(1) for _ in range(10)]

    accuracies = np.tile([4, 6, 1, 2, 9, 8, 7, 9, 3, 2], (n_samples, 1)) / 10.
    diversity = np.tile([0, 8, 0, 0, 1, 6, 7, 2, 0, 0], (n_samples, 1))
    target = DESKNN(pool_classifiers,
                    k=7,
                    pct_accuracy=5. / 10,
                    pct_diversity=3. / 10)
    target.N_ = 5
    target.J_ = 3

    selected_classifiers = target.select(accuracies, diversity)
    expected = np.tile([1, 5, 6], (n_samples, 1))

    assert np.array_equal(np.unique(selected_classifiers), np.unique(expected))
コード例 #3
0
def test_classify_instance():
    query = np.atleast_2d([1, -1])
    des_knn_test = DESKNN(create_pool_classifiers() * 4, k=2)
    des_knn_test.select = MagicMock(return_value=[0, 1, 2, 3, 5, 6, 7, 9])

    predicted = des_knn_test.classify_instance(query)
    assert predicted == 0
コード例 #4
0
ファイル: test_des_knn.py プロジェクト: qhduan/DESlib
def test_classify_instance():
    query = np.atleast_2d([1, -1])
    des_knn_test = DESKNN(create_pool_classifiers() * 4, k=2)
    des_knn_test.select = MagicMock(return_value=[0, 1, 2, 3, 5, 6, 7, 9])

    predictions = []
    for clf in des_knn_test.pool_classifiers:
        predictions.append(clf.predict(query)[0])

    predicted = des_knn_test.classify_instance(query, predictions=np.array(predictions))
    assert predicted == 0
コード例 #5
0
ファイル: test_des_knn.py プロジェクト: world4jason/DESlib
def test_classify_with_ds_single_sample():
    query = np.ones(2)
    predictions = np.array([0, 1, 0])

    clf1 = create_base_classifier(np.array([1, 0, 1, 0, 0, 0, 0]))
    clf2 = create_base_classifier(np.array([1, 0, 0, 0, 1, 0, 0]))
    clf3 = create_base_classifier(np.array([0, 0, 1, 0, 1, 1, 0]))

    pool_classifiers = [clf1, clf2, clf3]

    desknn_test = DESKNN(pool_classifiers)
    desknn_test.estimate_competence = MagicMock(
        return_value=(np.ones(3), np.ones(3)))
    desknn_test.select = MagicMock(return_value=np.array([[0, 2]]))
    result = desknn_test.classify_with_ds(query, predictions)
    assert np.allclose(result, 0)
コード例 #6
0
ファイル: test_des_knn.py プロジェクト: qhduan/DESlib
def test_select():
    """
    Test case: 10 base classifiers; select 5 based on accuracy, then the 3 most diverse
    accuracies (/10): 4 6 1 2 9 8 7 9 3 2   (should select indices 1, 4, 5, 6, 7)
    diversity:        0 8 0 0 1 6 7 2 0 0   (should select indices 1, 5, 6 as most diverse)

    """
    pool_classifiers = [create_base_classifier(1) for _ in range(10)]

    accuracies = np.array([4, 6, 1, 2, 9, 8, 7, 9, 3, 2]) / 10.
    diversity = np.array([0, 8, 0, 0, 1, 6, 7, 2, 0, 0])
    target = DESKNN(pool_classifiers, k=7, pct_accuracy=5./10, pct_diversity=3./10)
    target.estimate_competence = lambda x: (accuracies, diversity)

    selected_indices = target.select(2)

    assert set(selected_indices) == {1, 5, 6}