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()
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()
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.n_classifiers_ = 1 a_posteriori_test.DSEL_processed_ = 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 neighbors = neighbors_ex_kuncheva.reshape(1, -1) distances = distances_ex_kuncheva.reshape(1, -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.isclose(competences, 0.95, atol=0.01)
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)