Пример #1
0
def test_select_single_sample():
    pool_classifiers = create_pool_classifiers()
    des_mi = DESMI(pool_classifiers, pct_accuracy=0.7)
    competences = np.array([0.7, 0.2, 1.0])
    selected_clf = des_mi.select(competences)
    expected = np.array([0, 2])
    assert np.array_equal(np.unique(selected_clf), np.unique(expected))
Пример #2
0
def test_select_single_sample():
    des_mi = DESMI(pct_accuracy=0.7)
    des_mi.N_ = 2
    competences = np.array([0.7, 0.2, 1.0])
    selected_clf = des_mi.select(competences)
    expected = np.array([0, 2])
    assert np.array_equal(np.unique(selected_clf), np.unique(expected))
Пример #3
0
def test_select_batch_samples():
    n_samples = 10
    des_mi = DESMI(pct_accuracy=0.7)
    des_mi.N_ = 2
    competences = np.tile(np.array([0.7, 0.2, 1.0]), (n_samples, 1))
    selected_clf = des_mi.select(competences)
    expected = np.tile(np.array([0, 2]), (n_samples, 1))
    assert np.array_equal(np.unique(selected_clf), np.unique(expected))
Пример #4
0
def test_classify_with_ds_diff_sizes():
    query = np.ones((10, 2))
    predictions = np.ones((5, 3))

    des_mi = DESMI()

    with pytest.raises(ValueError):
        des_mi.classify_with_ds(query, predictions)
Пример #5
0
def test_proba_with_ds_diff_sizes():
    query = np.ones((10, 2))
    predictions = np.ones((5, 3))
    probabilities = np.ones((5, 3, 2))

    des_mi = DESMI()

    with pytest.raises(ValueError):
        des_mi.predict_proba_with_ds(query, predictions, probabilities)
Пример #6
0
def test_proba_with_ds_diff_sizes():
    query = np.ones((10, 2))
    predictions = np.ones((5, 3))
    probabilities = np.ones((5, 3, 2))

    pool_classifiers = create_pool_classifiers()
    des_mi = DESMI(pool_classifiers)

    with pytest.raises(ValueError):
        des_mi.predict_proba_with_ds(query, predictions, probabilities)
Пример #7
0
def test_classify_with_ds_single_sample():
    query = np.ones(2)

    # simulated predictions of the pool of classifiers
    predictions = np.array([0, 1, 0])

    desmi_test = DESMI(DFP=True)
    DFP_mask = np.ones((1, 3))
    desmi_test.estimate_competence = MagicMock(return_value=(np.ones((1, 3))))
    desmi_test.select = MagicMock(return_value=np.array([[0, 2]]))
    result = desmi_test.classify_with_ds(query, predictions, DFP_mask=DFP_mask)
    assert np.allclose(result, 0)
Пример #8
0
def test_classify_with_ds_batch_samples():
    n_samples = 10
    # Passing 10 samples for classification automatically
    query = np.ones((n_samples, 2))

    pool_classifiers = create_pool_classifiers()
    # simulated predictions of the pool of classifiers
    predictions = np.tile(np.array([0, 1, 0]), (n_samples, 1))

    desmi_test = DESMI(pool_classifiers)
    desmi_test.estimate_competence = MagicMock(return_value=(np.ones((n_samples, 3))))
    desmi_test.select = MagicMock(return_value=np.tile(np.array([[0, 2]]), (n_samples, 1)))
    result = desmi_test.classify_with_ds(query, predictions)
    assert np.allclose(result, np.zeros(10))
Пример #9
0
def test_soft_voting_no_proba(create_X_y):
    from sklearn.linear_model import Perceptron
    X, y = create_X_y
    clf = Perceptron()
    clf.fit(X, y)
    with pytest.raises(ValueError):
        DESMI([clf, clf, clf, clf], voting='soft').fit(X, y)
Пример #10
0
def test_predict_proba_with_ds():
    query = np.array([-1, 1])
    pool_classifiers = create_pool_classifiers() + create_pool_classifiers()
    desmi_test = DESMI(pool_classifiers, DFP=True)
    desmi_test.DFP_mask = np.ones((1, 6))
    selected_indices = np.array([[0, 1, 5]])

    desmi_test.estimate_competence = MagicMock(return_value=np.ones(6))
    desmi_test.select = MagicMock(return_value=selected_indices)

    desmi_test.n_classes = 2
    expected = np.array([0.61, 0.39])

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

    query = np.atleast_2d(query)
    predictions = np.atleast_2d(predictions)
    probabilities = np.array(probabilities)
    probabilities = np.expand_dims(probabilities, axis=0)

    predicted_proba = desmi_test.predict_proba_with_ds(query, predictions,
                                                       probabilities)
    assert np.isclose(predicted_proba, expected, atol=0.01).all()
Пример #11
0
def test_classify_with_ds_batch_samples():
    n_samples = 10

    # simulated predictions of the pool of classifiers
    predictions = np.tile(np.array([0, 1, 0]), (n_samples, 1))

    desmi_test = DESMI()
    desmi_test.n_classes_ = 2
    desmi_test.estimate_competence = MagicMock(
        return_value=(np.ones((n_samples, 3))))
    desmi_test.select = MagicMock(
        return_value=np.tile(np.array([[0, 2]]), (n_samples, 1)))
    result = desmi_test.classify_with_ds(predictions)
    assert np.allclose(result, np.zeros(10))
Пример #12
0
def test_predict_proba_with_ds_soft(create_pool_classifiers):
    expected = np.array([0.61, 0.39])
    DFP_mask = np.ones((1, 6))
    predictions = np.array([[0, 1, 0, 0, 1, 0]])
    probabilities = np.array([[[0.5, 0.5], [1, 0], [0.33, 0.67], [0.5, 0.5],
                               [1, 0], [0.33, 0.67]]])
    pool_classifiers = create_pool_classifiers + create_pool_classifiers
    desmi_test = DESMI(pool_classifiers, DFP=True, voting='soft')
    desmi_test.n_classes_ = 2
    selected_indices = np.array([[0, 1, 5]])
    desmi_test.estimate_competence = MagicMock(return_value=np.ones(6))
    desmi_test.select = MagicMock(return_value=selected_indices)

    predicted_proba = desmi_test.predict_proba_with_ds(predictions,
                                                       probabilities,
                                                       DFP_mask=DFP_mask)
    assert np.isclose(predicted_proba, expected, atol=0.01).all()
Пример #13
0
def test_require_proba():
    X = np.random.randn(5, 5)
    y = np.array([0, 1, 0, 0, 0])
    clf1 = Perceptron()
    clf1.fit(X, y)
    DESMI([clf1, clf1, clf1])
Пример #14
0
def test_check_pct_accuracy_value(pct_accuracy):
    pool_classifiers = create_pool_classifiers()
    with pytest.raises(ValueError):
        desmi = DESMI(pool_classifiers, pct_accuracy=pct_accuracy)
        desmi.fit(X_dsel_ex1, y_dsel_ex1)
Пример #15
0
def test_check_alpha_type(alpha):
    pool_classifiers = create_pool_classifiers()
    with pytest.raises(TypeError):
        desmi = DESMI(pool_classifiers, alpha=alpha)
        desmi.fit(X_dsel_ex1, y_dsel_ex1)
Пример #16
0
def test_check_N_value(alpha):
    pool_classifiers = create_pool_classifiers()
    with pytest.raises(ValueError):
        DESMI(pool_classifiers, pct_accuracy=0.05)
Пример #17
0
def test_mi(knn_methods):
    pool_classifiers, X_dsel, y_dsel, X_test, y_test = setup_classifiers()

    desmi = DESMI(pool_classifiers, alpha=0.9, knn_classifier=knn_methods)
    desmi.fit(X_dsel, y_dsel)
    assert np.isclose(desmi.score(X_test, y_test), 0.9787234042553191)
def test_mi():
    pool_classifiers, X_dsel, y_dsel, X_test, y_test = setup_classifiers()

    desmi = DESMI(pool_classifiers, alpha=0.9)
    desmi.fit(X_dsel, y_dsel)
    assert np.isclose(desmi.score(X_test, y_test), 0.3500000000)
Пример #19
0
def test_check_alpha_value(alpha):
    pool_classifiers = create_pool_classifiers()

    with pytest.raises(ValueError):
        DESMI(pool_classifiers, alpha=alpha)
Пример #20
0
def test_check_estimator():
    check_estimator(DESMI())
Пример #21
0
def test_check_pct_accuracy_value(pct_accuracy, create_X_y):
    X, y = create_X_y
    with pytest.raises(ValueError):
        desmi = DESMI(pct_accuracy=pct_accuracy)
        desmi.fit(X, y)
Пример #22
0
def test_check_alpha_type(alpha, create_X_y):
    X, y = create_X_y
    with pytest.raises(TypeError):
        desmi = DESMI(alpha=alpha)
        desmi.fit(X, y)
Пример #23
0
def test_wrong_voting_value(voting, create_X_y, create_pool_classifiers):
    X, y = create_X_y
    pool = create_pool_classifiers
    with pytest.raises(ValueError):
        DESMI(pool, voting=voting).fit(X, y)