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
示例#2
0
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=",")