1
+ # pylint: disable=missing-docstring
2
+ import numpy as np
3
+
4
+ import unittest
5
+
6
+ from Orange .data import Table
7
+ from Orange .classification import MajorityLearner
8
+ from Orange .regression import MeanLearner
9
+
10
+ from Orange .evaluation import Results , TestOnTestData
11
+ from Orange .widgets .tests .base import WidgetTest
12
+ from Orange .widgets .evaluate .owtestlearners import OWTestLearners
13
+ from Orange .widgets .evaluate import owtestlearners
14
+
15
+
16
+ class TestOWTestLearners (WidgetTest ):
17
+ def setUp (self ):
18
+ super ().setUp ()
19
+ self .widget = self .create_widget (OWTestLearners ) # type: OWTestLearners
20
+
21
+ def test_basic (self ):
22
+ data = Table ("iris" )[::3 ]
23
+ self .send_signal ("Data" , data )
24
+ self .send_signal ("Learner" , MajorityLearner (), 0 )
25
+ res = self .get_output ("Evaluation Results" )
26
+ self .assertIsInstance (res , Results )
27
+ self .assertIsNotNone (res .domain )
28
+ self .assertIsNotNone (res .data )
29
+ self .assertIsNotNone (res .probabilities )
30
+
31
+ self .send_signal ("Learner" , None , 0 )
32
+
33
+ data = Table ("housing" )[::10 ]
34
+ self .send_signal ("Data" , data )
35
+ self .send_signal ("Learner" , MeanLearner (), 0 )
36
+ res = self .get_output ("Evaluation Results" )
37
+ self .assertIsInstance (res , Results )
38
+ self .assertIsNotNone (res .domain )
39
+ self .assertIsNotNone (res .data )
40
+
41
+
42
+ class TestHelpers (unittest .TestCase ):
43
+ def test_results_one_vs_rest (self ):
44
+ data = Table ("lenses" )
45
+ learners = [MajorityLearner ()]
46
+ res = TestOnTestData (data [1 ::2 ], data [::2 ], learners = learners )
47
+ r1 = owtestlearners .results_one_vs_rest (res , pos_index = 0 )
48
+ r2 = owtestlearners .results_one_vs_rest (res , pos_index = 1 )
49
+ r3 = owtestlearners .results_one_vs_rest (res , pos_index = 2 )
50
+
51
+ np .testing .assert_almost_equal (np .sum (r1 .probabilities , axis = 2 ), 1.0 )
52
+ np .testing .assert_almost_equal (np .sum (r2 .probabilities , axis = 2 ), 1.0 )
53
+ np .testing .assert_almost_equal (np .sum (r3 .probabilities , axis = 2 ), 1.0 )
54
+
55
+ np .testing .assert_almost_equal (
56
+ r1 .probabilities [:, :, 1 ] +
57
+ r2 .probabilities [:, :, 1 ] +
58
+ r3 .probabilities [:, :, 1 ],
59
+ 1.0
60
+ )
61
+ self .assertEqual (r1 .folds , res .folds )
62
+ self .assertEqual (r2 .folds , res .folds )
63
+ self .assertEqual (r3 .folds , res .folds )
64
+
65
+ np .testing .assert_equal (r1 .row_indices , res .row_indices )
66
+ np .testing .assert_equal (r2 .row_indices , res .row_indices )
67
+ np .testing .assert_equal (r3 .row_indices , res .row_indices )
0 commit comments