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_, )
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)
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, )
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))
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))