def test_vote_entropy(self): for n_samples in range(1, 10): for n_classes in range(1, 10): for true_query_idx in range(n_samples): # 1. fitted committee vote_return = np.zeros(shape=(n_samples, n_classes), dtype=np.int16) vote_return[true_query_idx] = np.asarray(range(n_classes), dtype=np.int16) committee = mock.MockCommittee(classes_=np.asarray( range(n_classes)), vote_return=vote_return) vote_entr = modAL.disagreement.vote_entropy( committee, np.random.rand(n_samples, n_classes)) true_entropy = np.zeros(shape=(n_samples, )) true_entropy[true_query_idx] = entropy( np.ones(n_classes) / n_classes) np.testing.assert_array_almost_equal( vote_entr, true_entropy) # 2. unfitted committee committee = mock.MockCommittee(fitted=False) true_entropy = np.zeros(shape=(n_samples, )) vote_entr = modAL.disagreement.vote_entropy( committee, np.random.rand(n_samples, n_classes)) np.testing.assert_almost_equal(vote_entr, true_entropy)
def test_KL_max_disagreement(self): for n_samples in range(1, 10): for n_classes in range(2, 10): for n_learners in range(2, 10): # 1. fitted committee vote_proba = np.zeros(shape=(n_samples, n_learners, n_classes)) vote_proba[:, :, 0] = 1.0 committee = mock.MockCommittee( n_learners=n_learners, classes_=range(n_classes), vote_proba_return=vote_proba) true_KL_disagreement = np.zeros(shape=(n_samples, )) try: np.testing.assert_array_almost_equal( true_KL_disagreement, modAL.disagreement.KL_max_disagreement( committee, np.random.rand(n_samples, 1))) except: modAL.disagreement.KL_max_disagreement( committee, np.random.rand(n_samples, 1)) # 2. unfitted committee committee = mock.MockCommittee(fitted=False) true_KL_disagreement = np.zeros(shape=(n_samples, )) returned_KL_disagreement = modAL.disagreement.KL_max_disagreement( committee, np.random.rand(n_samples, n_classes)) np.testing.assert_almost_equal(returned_KL_disagreement, true_KL_disagreement)
def test_consensus_entropy(self): for n_samples in range(1, 10): for n_classes in range(2, 10): for true_query_idx in range(n_samples): # 1. fitted committee proba = np.zeros(shape=(n_samples, n_classes)) proba[:, 0] = 1.0 proba[true_query_idx] = np.ones(n_classes)/n_classes committee = mock.MockCommittee(predict_proba_return=proba) consensus_entropy = modAL.disagreement.consensus_entropy( committee, np.random.rand(n_samples, n_classes) ) true_entropy = np.zeros(shape=(n_samples,)) true_entropy[true_query_idx] = entropy(np.ones(n_classes) / n_classes) np.testing.assert_array_almost_equal(consensus_entropy, true_entropy) # 2. unfitted committee committee = mock.MockCommittee(fitted=False) true_entropy = np.zeros(shape=(n_samples,)) consensus_entropy = modAL.disagreement.consensus_entropy( committee, np.random.rand(n_samples, n_classes) ) np.testing.assert_almost_equal(consensus_entropy, true_entropy)