def al_qbc(self, data, target, X_train, y_train, X_full, y_full, train_idx, committee_strategy): acc = [] pre = [] rec = [] fs = [] X_pool = deepcopy(X_full) y_pool = deepcopy(y_full) # initializing Committee members n_members = 2 learner_list = list() for member_idx in range(n_members): # initial training data # n_initial = 5 # train_idx = np.random.choice(range(X_pool.shape[0]), size=n_initial, replace=False) # X_train = X_pool[train_idx] # y_train = y_pool[train_idx] # creating a reduced copy of the data with the known instances removed X_pool = np.delete(X_pool, train_idx, axis=0) y_pool = np.delete(y_pool, train_idx) # initializing learner learner = ActiveLearner( estimator=RandomForestClassifier(), # query_strategy=vote_entropy_sampling, X_training=X_train, y_training=y_train) learner_list.append(learner) # assembling the committee committee = Committee(learner_list=learner_list, query_strategy=committee_strategy) # print('Committee initial predictions, accuracy = %1.3f' % committee.score(data, target)) # print('%1.3f' % committee.score(data, target)) n_queries = self.query_number for idx in range(n_queries): query_idx, query_instance = committee.query(X_pool) committee.teach(X=X_pool[query_idx].reshape(1, -1), y=y_pool[query_idx].reshape(1, )) # remove queried instance from pool X_pool = np.delete(X_pool, query_idx, axis=0) y_pool = np.delete(y_pool, query_idx) # learner_score = committee.score(data, target) # print('Committee %d th query predictions, accuracy = %1.3f' % (idx , learner_score)) precision, recall, fscore, support, accuracy = self.performance_measure( learner, X_full, y_full) learner_score = accuracy acc.append(learner_score) pre.append(precision) rec.append(recall) fs.append(fscore) print('%0.3f' % (learner_score), end=",") return fs
def al_qbc(data, target, X_train, y_train, X_full, y_full, train_idx): # print("START: Q") X_pool = deepcopy(X_full) y_pool = deepcopy(y_full) # initializing Committee members n_members = 2 learner_list = list() for member_idx in range(n_members): # initial training data # n_initial = 5 # train_idx = np.random.choice(range(X_pool.shape[0]), size=n_initial, replace=False) # X_train = X_pool[train_idx] # y_train = y_pool[train_idx] # creating a reduced copy of the data with the known instances removed X_pool = np.delete(X_pool, train_idx, axis=0) y_pool = np.delete(y_pool, train_idx) # initializing learner learner = ActiveLearner( estimator=RandomForestClassifier(), X_training=X_train, y_training=y_train ) learner_list.append(learner) # assembling the committee committee = Committee(learner_list=learner_list) # print('Committee initial predictions, accuracy = %1.3f' % committee.score(data, target)) # print('%1.3f' % committee.score(data, target)) n_queries = 1500 for idx in range(n_queries): query_idx, query_instance = committee.query(X_pool) committee.teach( X=X_pool[query_idx].reshape(1, -1), y=y_pool[query_idx].reshape(1, ) ) # remove queried instance from pool X_pool = np.delete(X_pool, query_idx, axis=0) y_pool = np.delete(y_pool, query_idx) learner_score = committee.score(data, target) # print('Committee %d th query predictions, accuracy = %1.3f' % (idx , learner_score)) print('%0.3f' % (learner_score), end=",")