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