def test_frienemy_safe_region(): ds_test = DS(create_pool_classifiers(), safe_k=3) ds_test.processed_dsel = dsel_processed_ex1 ds_test.DSEL_target = y_dsel_ex1 ds_test.DSEL_data = X_dsel_ex1 ds_test.neighbors = np.array([0, 1, 2, 6, 7, 8, 14]) result = ds_test._frienemy_pruning() assert np.array_equal(result, np.array([[1, 1, 1]]))
def test_frienemy_not_all_classifiers_crosses(): ds_test = DS(create_pool_classifiers(), safe_k=3) ds_test.processed_dsel = dsel_processed_ex1 ds_test.DSEL_target = y_dsel_ex1 ds_test.DSEL_data = X_dsel_ex1 ds_test.neighbors = neighbors_ex1[0, :] result = ds_test._frienemy_pruning() assert np.array_equal(result, np.array([[1, 1, 0]]))
def test_frienemy_all_classifiers_crosses(index): ds_test = DS(create_pool_classifiers()) ds_test.processed_dsel = dsel_processed_all_ones ds_test.DSEL_target = y_dsel_ex1 ds_test.DSEL_data = X_dsel_ex1 ds_test.neighbors = neighbors_ex1[index, :] result = ds_test._frienemy_pruning() assert result.all() == 1.0
def test_frienemy_no_classifier_crosses(): X = X_dsel_ex1 y = y_dsel_ex1 ds_test = DS(create_pool_classifiers()) ds_test.fit(X, y) ds_test.neighbors = neighbors_ex1[0, :] mask = ds_test._frienemy_pruning() assert mask.shape == (1, 3) and np.allclose(mask, 1)
def test_frienemy_no_classifier_crosses(): X = X_dsel_ex1 y = y_dsel_ex1 ds_test = DS(create_pool_classifiers()) ds_test.fit(X, y) ds_test.neighbors = neighbors_ex1[0, :] mask = ds_test._frienemy_pruning() assert mask.size == 3 and mask.all() == 1
def test_frienemy_not_all_classifiers_crosses_batch(): expected = np.array([[1, 1, 0], [0, 1, 0], [1, 1, 1]]) ds_test = DS(create_pool_classifiers(), safe_k=3) ds_test.processed_dsel = dsel_processed_ex1 ds_test.DSEL_target = y_dsel_ex1 ds_test.DSEL_data = X_dsel_ex1 # passing three samples to compute the DFP at the same time ds_test.neighbors = neighbors_ex1 result = ds_test._frienemy_pruning() assert np.array_equal(result, expected)
def test_frienemy_safe_region_batch(): n_samples = 10 n_classifiers = 3 expected = np.ones((n_samples, n_classifiers)) ds_test = DS(create_pool_classifiers(), safe_k=3) ds_test.processed_dsel = dsel_processed_ex1 ds_test.DSEL_target = y_dsel_ex1 ds_test.DSEL_data = X_dsel_ex1 ds_test.neighbors = np.tile(np.array([0, 1, 2, 6, 7, 8, 14]), (n_samples, 1)) result = ds_test._frienemy_pruning() assert np.array_equal(result, expected)