Skip to content

Commit a830dcc

Browse files
committed
owtestlearners: Add tests
1 parent aebabe0 commit a830dcc

File tree

1 file changed

+62
-0
lines changed

1 file changed

+62
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
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+
62+

0 commit comments

Comments
 (0)