|
16 | 16 | from Orange.evaluation import Results, TestOnTestData, scoring
|
17 | 17 | from Orange.evaluation.scoring import ClassificationScore, RegressionScore, \
|
18 | 18 | Score
|
19 |
| -from Orange.base import Learner |
| 19 | +from Orange.base import Learner, Model |
20 | 20 | from Orange.modelling import ConstantLearner
|
21 | 21 | from Orange.regression import MeanLearner
|
22 | 22 | from Orange.widgets.evaluate.owtestandscore import (
|
@@ -720,6 +720,41 @@ def test_copy_to_clipboard(self):
|
720 | 720 | for i in (0, 3, 4, 5, 6, 7)]) + "\r\n"
|
721 | 721 | self.assertEqual(clipboard_text, view_text)
|
722 | 722 |
|
| 723 | + def test_multi_target_input(self): |
| 724 | + class NewScorer(Score): |
| 725 | + class_types = ( |
| 726 | + ContinuousVariable, |
| 727 | + DiscreteVariable, |
| 728 | + ) |
| 729 | + problem_type = 'new_problem_type' |
| 730 | + |
| 731 | + def compute_score(self, results): |
| 732 | + return [0.75] |
| 733 | + |
| 734 | + domain = Domain([ContinuousVariable('var1')], |
| 735 | + class_vars=[ |
| 736 | + ContinuousVariable('c1'), |
| 737 | + DiscreteVariable('c2', values=('no', 'yes')) |
| 738 | + ]) |
| 739 | + data = Table.from_list(domain, [[1, 5, 0], [2, 10, 1], [2, 10, 1]]) |
| 740 | + data.attributes = {'problem_type': 'new_problem_type'} |
| 741 | + |
| 742 | + mock_model = Mock(spec=Model, return_value=np.asarray([[0.2, 0.1, 0.2]])) |
| 743 | + mock_model.name = 'Mockery' |
| 744 | + mock_model.domain = domain |
| 745 | + mock_learner = Mock(spec=Learner, return_value=mock_model) |
| 746 | + mock_learner.name = 'Mockery' |
| 747 | + |
| 748 | + |
| 749 | + self.widget.resampling = OWTestAndScore.TestOnTrain |
| 750 | + self.send_signal(self.widget.Inputs.train_data, data) |
| 751 | + self.send_signal(self.widget.Inputs.learner, MajorityLearner(), 0) |
| 752 | + self.send_signal(self.widget.Inputs.learner, mock_learner, 1) |
| 753 | + _ = self.get_output(self.widget.Outputs.evaluations_results, wait=5000) |
| 754 | + self.assertTrue(len(self.widget.scorers) == 1) |
| 755 | + self.assertTrue(NewScorer in self.widget.scorers) |
| 756 | + self.assertTrue(len(self.widget._successful_slots()) == 1) |
| 757 | + |
723 | 758 |
|
724 | 759 | class TestHelpers(unittest.TestCase):
|
725 | 760 | def test_results_one_vs_rest(self):
|
|
0 commit comments