source: orange/Orange/testing/unit/tests/test_earth.py @ 10663:3abd031f0e5b

Revision 10663:3abd031f0e5b, 4.1 KB checked in by Ales Erjavec <ales.erjavec@…>, 2 years ago (diff)

Removed old commented out code.

Line 
1import Orange
2from Orange.misc import testing
3from Orange.misc.testing import datasets_driven, test_on_data, test_on_datasets
4from Orange.regression import earth
5
6try:
7    import unittest2 as unittest
8except:
9    import unittest
10
11@datasets_driven(datasets=testing.REGRESSION_DATASETS + \
12                 testing.CLASSIFICATION_DATASETS)
13class TestEarthLearner(testing.LearnerTestCase):
14
15    def setUp(self):
16        self.learner = earth.EarthLearner(degree=2, terms=10)
17
18    @test_on_data
19    def test_learner_on(self, dataset):
20        if len(dataset) < 30:
21            raise unittest.SkipTest("Not enough examples.")
22        testing.LearnerTestCase.test_learner_on(self, dataset)
23        str = self.classifier.to_string()
24        evimp = self.classifier.evimp()
25
26    @test_on_data
27    def test_bagged_evimp(self, dataset):
28        from Orange.ensemble.bagging import BaggedLearner
29        bagged = BaggedLearner(earth.EarthLearner(terms=10, degree=2), t=5)(dataset)
30        evimp = earth.bagged_evimp(bagged, used_only=False)
31
32
33@datasets_driven(datasets=testing.REGRESSION_DATASETS + \
34                 testing.CLASSIFICATION_DATASETS)
35class TestScoreEarthImportance(testing.MeasureAttributeTestCase):
36    def setUp(self):
37        from Orange.regression.earth import ScoreEarthImportance
38        self.measure = ScoreEarthImportance(t=5, score_what="rss")
39
40@datasets_driven(datasets=["multitarget-synthetic"])
41class TestEarthMultitarget(unittest.TestCase):
42    @test_on_data
43    def test_multi_target_on_data(self, dataset):
44        self.learner = earth.EarthLearner(degree=2, terms=10)
45       
46        self.predictor = self.multi_target_test(self.learner, dataset)
47       
48        self.assertTrue(bool(self.predictor.multitarget))
49       
50        s = str(self.predictor)
51        self.assertEqual(s, self.predictor.to_string())
52        self.assertNotEqual(s, self.predictor.to_string(3, 6))
53       
54   
55    def multi_target_test(self, learner, data):
56        indices = Orange.data.sample.SubsetIndices2(p0=0.3)(data)
57        learn = data.select(indices, 1)
58        test = data.select(indices, 0)
59       
60        predictor = learner(learn)
61        self.assertIsInstance(predictor, Orange.classification.Classifier)
62        self.multi_target_predictor_interface(predictor, learn.domain)
63       
64        from Orange.evaluation import testing as _testing
65       
66        r = _testing.test_on_data([predictor], test)
67       
68        def all_values(vals):
69            for v in vals:
70                self.assertIsInstance(v, Orange.core.Value)
71               
72        def all_dists(dist):
73            for d in dist:
74                self.assertIsInstance(d, Orange.core.Distribution)
75               
76        for ex in test:
77            preds = predictor(ex, Orange.core.GetValue)
78            all_values(preds)
79           
80            dist = predictor(ex, Orange.core.GetProbabilities)
81            all_dists(dist)
82           
83            preds, dist = predictor(ex, Orange.core.GetBoth)
84            all_values(preds)
85            all_dists(dist)
86           
87            for d in dist:
88                if isinstance(d, Orange.core.ContDistribution):
89                    dist_sum = sum(d.values())
90                else:
91                    dist_sum = sum(d)
92                   
93                self.assertGreater(dist_sum, 0.0)
94                self.assertLess(abs(dist_sum - 1.0), 1e-3)
95           
96        return predictor
97   
98    def multi_target_predictor_interface(self, predictor, domain):
99        self.assertTrue(hasattr(predictor, "class_vars"))
100        self.assertIsInstance(predictor.class_vars, (list, Orange.core.VarList))
101        self.assertTrue(all(c1 == c2 for c1, c2 in \
102                            zip(predictor.class_vars, domain.class_vars)))
103       
104#@datasets_driven(datasets=testing.REGRESSION_DATASETS,)
105#class TestScoreRSS(testing.MeasureAttributeTestCase):
106#    def setUp(self):
107#        from Orange.regression.earth import ScoreRSS
108#        self.measure = ScoreRSS()
109
110def load_tests(loader, tests, ignore):
111    import doctest
112    loader.addTests(doctest.DocTestSuite(earth, **earth._doctest_args()))
113    return loader
114
115if __name__ == "__main__":
116    unittest.main()
117
Note: See TracBrowser for help on using the repository browser.