Пример #1
0
    def reduce_error(self, pool, score_index, x_train, y_train, x_validation,
                     y_validation, x_test, y_test):
        BagPercepCurrent = BaggingClassifier(
            linear_model.Perceptron(max_iter=5), self.pool_size)
        BagPercepCurrent.fit(x_train, y_train)

        ensemble_index = set()
        ensemble_index.add(score_index[0])

        ensemble = []
        ensemble.append(pool.estimators_[score_index[0]])

        BagPercepCurrent.estimators_ = ensemble
        best_score = BagPercepCurrent.score(x_validation, y_validation)
        # metrics = (None, None, None, None)
        while (True):
            index_best_score = 0
            BagPercepCurrent.estimators_ = ensemble
            best_score_test = BagPercepCurrent.score(x_test, y_test)

            metrics = (best_score_test, ) + self.calc_metrics(
                BagPercepCurrent.predict(x_test), y_test)

            for i in list(score_index):
                if i not in ensemble_index:
                    BagPercepCurrent.estimators_ = ensemble + [
                        pool.estimators_[i]
                    ]
                    score_current = BagPercepCurrent.score(
                        x_validation, y_validation)

                    if best_score < score_current:
                        best_score = score_current
                        index_best_score = i
            if index_best_score != 0:
                ensemble_index.add(index_best_score)
                ensemble.append(pool.estimators_[index_best_score])
            else:
                # print("best index", len(ensemble), best_score, best_score_test)
                kappa_diversity = self.pairwise_diversity_measure(
                    BagPercepCurrent, len(BagPercepCurrent.estimators_),
                    x_test)
                disagreement_diversity_ = self.disagreement_diversity_measure(
                    BagPercepCurrent, len(BagPercepCurrent.estimators_),
                    x_test)
                return (metrics) + (
                    kappa_diversity,
                    disagreement_diversity_,
                )
            if len(ensemble_index) == self.pool_size:
                return (metrics) + (
                    kappa_diversity,
                    disagreement_diversity_,
                )
Пример #2
0
def test_base():
    # Check BaseEnsemble methods.
    ensemble = BaggingClassifier(
        base_estimator=Perceptron(tol=1e-3, random_state=None), n_estimators=3)

    iris = load_iris()
    ensemble.fit(iris.data, iris.target)
    ensemble.estimators_ = []  # empty the list and create estimators manually

    ensemble._make_estimator()
    random_state = np.random.RandomState(3)
    ensemble._make_estimator(random_state=random_state)
    ensemble._make_estimator(random_state=random_state)
    ensemble._make_estimator(append=False)

    assert_equal(3, len(ensemble))
    assert_equal(3, len(ensemble.estimators_))

    assert_true(isinstance(ensemble[0], Perceptron))
    assert_equal(ensemble[0].random_state, None)
    assert_true(isinstance(ensemble[1].random_state, int))
    assert_true(isinstance(ensemble[2].random_state, int))
    assert_not_equal(ensemble[1].random_state, ensemble[2].random_state)

    np_int_ensemble = BaggingClassifier(base_estimator=Perceptron(tol=1e-3),
                                        n_estimators=np.int32(3))
    np_int_ensemble.fit(iris.data, iris.target)
Пример #3
0
    def best_first(self, pool, score_index, x_train, y_train, x_validation,
                   y_validation, x_test, y_test):
        BagPercepCurrent = BaggingClassifier(
            linear_model.Perceptron(max_iter=5), self.pool_size)
        BagPercepCurrent.fit(x_train, y_train)

        BagPercepCurrent.estimators_ = [pool.estimators_[score_index[0]]]
        best_score = BagPercepCurrent.score(x_validation, y_validation)
        best_score_test = BagPercepCurrent.score(x_test, y_test)
        metrics = (best_score_test, ) + self.calc_metrics(
            BagPercepCurrent.predict(x_test), y_test)
        best_index = 1
        best_score_test = 0
        diversity_kappa = 0
        for i, j in enumerate(list(score_index[1:])):
            BagPercepCurrent.estimators_ += [pool.estimators_[j]]
            score_current = BagPercepCurrent.score(x_validation, y_validation)

            if best_score < score_current:
                best_score = score_current
                best_index = i
                best_score_test = BagPercepCurrent.score(x_test, y_test)
                metrics = (best_score_test, ) + self.calc_metrics(
                    BagPercepCurrent.predict(x_test), y_test)
                diversity_kappa = self.pairwise_diversity_measure(
                    BagPercepCurrent, len(BagPercepCurrent.estimators_),
                    x_teste)

        best_index += 2
        # print("best index", best_index, best_score, best_score_test)
        return (metrics) + (diversity_kappa, )
Пример #4
0
def test_base():
    # Check BaseEnsemble methods.
    ensemble = BaggingClassifier(base_estimator=Perceptron(), n_estimators=3)

    iris = load_iris()
    ensemble.fit(iris.data, iris.target)
    ensemble.estimators_ = []  # empty the list and create estimators manually

    ensemble._make_estimator()
    ensemble._make_estimator()
    ensemble._make_estimator()
    ensemble._make_estimator(append=False)

    assert_equal(3, len(ensemble))
    assert_equal(3, len(ensemble.estimators_))

    assert_true(isinstance(ensemble[0], Perceptron))
Пример #5
0
def test_base():
    """Check BaseEnsemble methods."""
    ensemble = BaggingClassifier(base_estimator=Perceptron(), n_estimators=3)

    iris = load_iris()
    ensemble.fit(iris.data, iris.target)
    ensemble.estimators_ = []  # empty the list and create estimators manually

    ensemble._make_estimator()
    ensemble._make_estimator()
    ensemble._make_estimator()
    ensemble._make_estimator(append=False)

    assert_equal(3, len(ensemble))
    assert_equal(3, len(ensemble.estimators_))

    assert_true(isinstance(ensemble[0], Perceptron))