예제 #1
0
def test_estimate_competence_kuncheva_ex_batch():
    # considering a batch composed of 10 samples
    query = np.ones((10, 2))

    a_posteriori_test = APosteriori([create_base_classifier(return_value=1)],
                                    k=k_ex_kuncheva)
    a_posteriori_test.fit(dsel_processed_kuncheva,
                          y_dsel_ex_kuncheva_dependent)
    a_posteriori_test.DSEL_processed_ = dsel_processed_kuncheva
    a_posteriori_test.dsel_scores_ = dsel_scores_ex_kuncheva

    a_posteriori_test.n_classes_ = n_classes_ex_kuncheva

    # repeating the same matrix in a new axis to simulate a batch input.
    neighbors = np.tile(neighbors_ex_kuncheva, (10, 1))
    distances = np.tile(distances_ex_kuncheva, (10, 1))

    predictions = []
    for clf in a_posteriori_test.pool_classifiers:
        predictions.append(clf.predict(query)[0])
    competences = a_posteriori_test.estimate_competence(query, neighbors,
                                                        distances,
                                                        predictions=np.array(
                                                            predictions))
    assert np.allclose(competences, 0.95, atol=0.01)
예제 #2
0
def test_estimate_competence_kuncheva_ex():
    query = np.array([1, 1])

    a_posteriori_test = APosteriori([create_base_classifier(return_value=1)],
                                    k=k_ex_kuncheva)

    a_posteriori_test.processed_dsel = dsel_processed_kuncheva
    a_posteriori_test.dsel_scores = dsel_scores_ex_kuncheva
    a_posteriori_test.DSEL_target = y_dsel_ex_kuncheva_dependent
    a_posteriori_test.n_classes = n_classes_ex_kuncheva

    a_posteriori_test.neighbors = neighbors_ex_kuncheva
    a_posteriori_test.distances = distances_ex_kuncheva
    a_posteriori_test.DFP_mask = [1]

    competences = a_posteriori_test.estimate_competence(query.reshape(1, -1))
    assert np.isclose(competences, 0.95, atol=0.01)
예제 #3
0
def test_estimate_competence_all_ones(index):
    query = np.array([1, 1])

    a_posteriori_test = APosteriori(create_pool_classifiers())

    a_posteriori_test.processed_dsel = dsel_processed_ex1
    a_posteriori_test.dsel_scores = dsel_scores_all_ones
    a_posteriori_test.DSEL_target = y_dsel_ex1
    a_posteriori_test.n_classes = 2

    a_posteriori_test.neighbors = neighbors_ex1[index, :]
    a_posteriori_test.distances = distances_all_ones[index, :]
    a_posteriori_test.DFP_mask = [1, 1, 1]

    expected = [1.0, 1.0, 1.0]

    competences = a_posteriori_test.estimate_competence(query.reshape(1, -1))
    assert np.isclose(competences, expected).all()
def test_estimate_competence_kuncheva_ex(example_kuncheva):
    query = np.atleast_2d([1, 1])

    a_posteriori_test = APosteriori(k=example_kuncheva['k'])
    a_posteriori_test.n_classifiers_ = 1

    a_posteriori_test.DSEL_processed_ = example_kuncheva['dsel_processed']
    a_posteriori_test.dsel_scores_ = example_kuncheva['dsel_scores']
    a_posteriori_test.DSEL_target_ = example_kuncheva['y_dependent']
    a_posteriori_test.n_classes_ = example_kuncheva['n_classes']

    neighbors = example_kuncheva['neighbors'].reshape(1, -1)
    distances = example_kuncheva['distances'].reshape(1, -1)

    predictions = np.array([[1]])

    competences = a_posteriori_test.estimate_competence(
        query, neighbors, distances, predictions=np.array(predictions))
    assert np.isclose(competences, 0.95, atol=0.01)
def test_estimate_competence_diff_target(index, example_all_ones):
    _, _, neighbors, distances, dsel_processed, _ = example_all_ones

    query = np.atleast_2d([1, 1])
    a_posteriori_test = APosteriori()
    a_posteriori_test.n_classifiers_ = 3
    a_posteriori_test.DSEL_processed_ = dsel_processed
    a_posteriori_test.dsel_scores_ = np.ones((15, 3, 3))
    a_posteriori_test.DSEL_target_ = np.ones(15, dtype=int) * 2
    a_posteriori_test.n_classes_ = 2

    neighbors = neighbors[index, :].reshape(1, -1)
    distances = distances[index, :].reshape(1, -1)

    expected = [0.0, 0.0, 0.0]

    predictions = np.array([0, 1, 0])
    competences = a_posteriori_test.estimate_competence(
        query, neighbors, distances, predictions=np.array(predictions))
    assert np.isclose(competences, expected).all()
예제 #6
0
def test_estimate_competence_kuncheva_ex_batch(example_kuncheva):
    # considering a batch composed of 10 samples
    query = np.ones((10, 2))

    a_posteriori_test = APosteriori(k=example_kuncheva['k'])
    a_posteriori_test.fit(example_kuncheva['dsel_processed'],
                          example_kuncheva['y_dependent'])
    a_posteriori_test.DSEL_processed_ = example_kuncheva['dsel_processed']
    a_posteriori_test.dsel_scores_ = example_kuncheva['dsel_scores']

    a_posteriori_test.n_classes_ = example_kuncheva['n_classes']

    # repeating the same matrix in a new axis to simulate a batch input.
    neighbors = np.tile(example_kuncheva['neighbors'], (10, 1))
    distances = np.tile(example_kuncheva['distances'], (10, 1))

    predictions = np.ones((1, 10))
    competences = a_posteriori_test.estimate_competence(
        query, neighbors, distances, predictions=np.array(predictions))
    assert np.allclose(competences, 0.95, atol=0.01)
예제 #7
0
def test_estimate_competence_all_ones(index):
    query = np.atleast_2d([1, 1])

    a_posteriori_test = APosteriori(create_pool_classifiers())
    a_posteriori_test.fit(X_dsel_ex1, y_dsel_ex1)
    a_posteriori_test.DSEL_processed_ = dsel_processed_ex1
    a_posteriori_test.dsel_scores_ = dsel_scores_all_ones

    neighbors = neighbors_ex1[index, :].reshape(1, -1)
    distances = distances_all_ones[index, :].reshape(1, -1)

    expected = [1.0, 1.0, 1.0]

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

    competences = a_posteriori_test.estimate_competence(
        query, neighbors, distances, predictions=np.array(predictions))
    assert np.isclose(competences, expected).all()
예제 #8
0
def test_estimate_competence_kuncheva_ex():
    query = np.atleast_2d([1, 1])

    a_posteriori_test = APosteriori([create_base_classifier(return_value=1)],
                                    k=k_ex_kuncheva)

    a_posteriori_test.processed_dsel = dsel_processed_kuncheva
    a_posteriori_test.dsel_scores = dsel_scores_ex_kuncheva
    a_posteriori_test.DSEL_target = y_dsel_ex_kuncheva_dependent
    a_posteriori_test.n_classes = n_classes_ex_kuncheva

    a_posteriori_test.neighbors = neighbors_ex_kuncheva
    a_posteriori_test.distances = distances_ex_kuncheva
    a_posteriori_test.DFP_mask = [1]

    predictions = []
    for clf in a_posteriori_test.pool_classifiers:
        predictions.append(clf.predict(query)[0])
    competences = a_posteriori_test.estimate_competence(
        query, predictions=np.array(predictions))
    assert np.isclose(competences, 0.95, atol=0.01)
예제 #9
0
def test_estimate_competence_diff_target(index):
    query = np.atleast_2d([1, 1])
    pool_classifiers = create_pool_classifiers()
    a_posteriori_test = APosteriori(pool_classifiers=pool_classifiers)
    a_posteriori_test.n_classifiers_ = len(pool_classifiers)
    a_posteriori_test.DSEL_processed_ = dsel_processed_ex1
    a_posteriori_test.dsel_scores_ = np.ones((15, 3, 3))
    a_posteriori_test.DSEL_target_ = np.ones(15, dtype=int) * 2
    a_posteriori_test.n_classes_ = 2

    neighbors = neighbors_ex1[index, :].reshape(1, -1)
    distances = distances_all_ones[index, :].reshape(1, -1)

    expected = [0.0, 0.0, 0.0]

    predictions = []
    for clf in a_posteriori_test.pool_classifiers:
        predictions.append(clf.predict(query)[0])
    competences = a_posteriori_test.estimate_competence(
        query, neighbors, distances, predictions=np.array(predictions))
    assert np.isclose(competences, expected).all()
예제 #10
0
def test_estimate_competence_all_ones(index):
    query = np.atleast_2d([1, 1])

    a_posteriori_test = APosteriori(create_pool_classifiers())
    a_posteriori_test.processed_dsel = dsel_processed_ex1
    a_posteriori_test.dsel_scores = dsel_scores_all_ones
    a_posteriori_test.DSEL_target = y_dsel_ex1
    a_posteriori_test.n_classes = 2

    a_posteriori_test.neighbors = neighbors_ex1[index, :]
    a_posteriori_test.distances = distances_all_ones[index, :]
    a_posteriori_test.DFP_mask = [1, 1, 1]

    expected = [1.0, 1.0, 1.0]

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

    competences = a_posteriori_test.estimate_competence(
        query, predictions=np.array(predictions))
    assert np.isclose(competences, expected).all()
def test_estimate_competence_kuncheva_ex_batch(example_kuncheva):
    # considering a batch composed of 10 samples
    query = np.ones((10, 2))
    classifier = MagicMock()
    classifier.predict.return_value = [1]
    classifier.predict_proba.return_value = None

    a_posteriori_test = APosteriori(pool_classifiers=classifier,
                                    k=example_kuncheva['k'])

    a_posteriori_test.n_classifiers_ = 1
    a_posteriori_test.DSEL_processed_ = example_kuncheva['dsel_processed']
    a_posteriori_test.DSEL_target_ = example_kuncheva['y_dependent']
    a_posteriori_test.dsel_scores_ = example_kuncheva['dsel_scores']
    a_posteriori_test.n_classes_ = example_kuncheva['n_classes']

    # repeating the same matrix in a new axis to simulate a batch input.
    neighbors = example_kuncheva['neighbors']
    distances = example_kuncheva['distances']

    predictions = [1]
    competences = a_posteriori_test.estimate_competence(
        query, neighbors, distances, predictions=np.array(predictions))
    assert np.allclose(competences, 0.95, atol=0.01)