def test_multiple_learners(self): def check_evres_names(expeced): res = self.get_output(self.widget.Outputs.evaluations_results) self.assertSequenceEqual(res.learner_names, expeced) data = Table("iris")[::15].copy() m1 = MajorityLearner() m1.name = "M1" m2 = MajorityLearner() m2.name = "M2" self.send_signal(self.widget.Inputs.train_data, data) self.send_signal(self.widget.Inputs.learner, m1, 1) self.send_signal(self.widget.Inputs.learner, m2, 2) res = self.get_output(self.widget.Outputs.evaluations_results) np.testing.assert_equal(res.probabilities[0], res.probabilities[1]) check_evres_names(["M1", "M2"]) self.send_signal(self.widget.Inputs.learner, None, 1) check_evres_names(["M2"]) self.send_signal(self.widget.Inputs.learner, m1, 1) check_evres_names(["M1", "M2"]) self.send_signal(self.widget.Inputs.learner, self.widget.Inputs.learner.closing_sentinel, 1) check_evres_names(["M2"]) self.send_signal(self.widget.Inputs.learner, m1, 1) check_evres_names(["M2", "M1"])
def test_comparison_requires_multiple_models(self): w = self.widget rbs = w.controls.resampling.buttons self._set_three_majorities() w.comparison_criterion = 1 rbs[OWTestAndScore.KFold].click() self.get_output(self.widget.Outputs.evaluations_results, wait=5000) self.assertTrue(w.comparison_table.isEnabled()) self.send_signal(w.Inputs.learner, None, 1) self.get_output(self.widget.Outputs.evaluations_results, wait=5000) self.assertTrue(w.comparison_table.isEnabled()) self.send_signal(w.Inputs.learner, None, 2) self.get_output(self.widget.Outputs.evaluations_results, wait=5000) self.assertFalse(w.comparison_table.isEnabled()) rbs[OWTestAndScore.LeaveOneOut].click() self.get_output(self.widget.Outputs.evaluations_results, wait=5000) self.assertFalse(w.comparison_table.isEnabled()) learner = MajorityLearner() learner.name = "majd" self.send_signal(w.Inputs.learner, learner, 1) self.get_output(self.widget.Outputs.evaluations_results, wait=5000) self.assertFalse(w.comparison_table.isEnabled()) rbs[OWTestAndScore.KFold].click() self.get_output(self.widget.Outputs.evaluations_results, wait=5000) self.assertTrue(w.comparison_table.isEnabled())
def _set_three_majorities(self): w = self.widget data = Table("iris")[::15] self.send_signal(w.Inputs.train_data, data) for i, name in enumerate(["maja", "majb", "majc"]): learner = MajorityLearner() learner.name = name self.send_signal(w.Inputs.learner, learner, i) self.get_output(self.widget.Outputs.evaluations_results, wait=5000)