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))
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))