def test_adaboost_reg_base_estimator(self): np.random.seed(0) stump_estimator = SklTreeRegressionLearner(max_depth=1) tree_estimator = SklTreeRegressionLearner() stump = SklAdaBoostRegressionLearner(base_estimator=stump_estimator) tree = SklAdaBoostRegressionLearner(base_estimator=tree_estimator) results = CrossValidation(self.housing, [stump, tree], k=3) rmse = RMSE(results) self.assertGreaterEqual(rmse[0], rmse[1])
def test_input_learner(self): """Check if base learner properly changes with learner on the input""" max_depth = 2 default_base_est = self.widget.base_estimator self.assertIsInstance(default_base_est, SklTreeRegressionLearner) self.assertIsNone(default_base_est.params.get("max_depth")) self.send_signal("Learner", SklTreeRegressionLearner(max_depth=max_depth)) self.assertEqual(self.widget.base_estimator.params.get("max_depth"), max_depth) self.widget.apply_button.button.click() output_base_est = self.get_output("Learner").params.get( "base_estimator") self.assertEqual(output_base_est.max_depth, max_depth)
class OWAdaBoostRegression(owadaboost.OWAdaBoostClassification): name = "AdaBoost" description = "An ensemble meta-algorithm that combines weak learners " \ "and adapts to the 'hardness' of each training sample. " icon = "icons/AdaBoost.svg" priority = 80 LEARNER = SklAdaBoostRegressionLearner inputs = [("Learner", LearnerRegression, "set_base_learner")] losses = ["Linear", "Square", "Exponential"] loss = Setting(0) DEFAULT_BASE_ESTIMATOR = SklTreeRegressionLearner() def add_specific_parameters(self, box): self.loss_combo = gui.comboBox(box, self, "loss", label="Loss:", orientation=Qt.Horizontal, items=self.losses, callback=self.settings_changed) def create_learner(self): return self.LEARNER(base_estimator=self.base_estimator, n_estimators=self.n_estimators, learning_rate=self.learning_rate, preprocessors=self.preprocessors, loss=self.losses[self.loss].lower()) def get_learner_parameters(self): return (("Base estimator", self.base_estimator), ("Number of estimators", self.n_estimators), ("Loss", self.losses[self.loss].capitalize()))
def test_regression(self): table = Table('housing') learn = SklTreeRegressionLearner() model = learn(table) pred = model(table) self.assertTrue(np.all(table.Y.flatten() == pred))