source: orange/Orange/testing/unit/tests/test_feature_selection.py @ 10708:43138a3b5624

Revision 10708:43138a3b5624, 2.1 KB checked in by blaz <blaz.zupan@…>, 2 years ago (diff)

Some cosmetics and renaming in Orange.feature.selection

Line 
1import Orange.testing.testing as testing
2from Orange.feature import selection, scoring
3import Orange
4
5from operator import itemgetter
6
7try:
8    import unittest2 as unittest
9except ImportError:
10    import unittest
11
12class TestSelection(unittest.TestCase):
13    def setUp(self):
14        self.score = Orange.feature.scoring.Gini()
15        self.data = Orange.data.Table("lenses")
16       
17        self.scores = scoring.score_all(self.data, self.score)
18       
19    def test_best_n(self):
20        sorted_scores = sorted(self.scores, key=itemgetter(1),
21                               reverse=True)
22        # Test the descending order of scores
23        self.assertEqual(self.scores, sorted_scores)
24       
25        # best 3 scores
26        best_3 = map(itemgetter(0), sorted_scores[:3])
27       
28        # test best_n function
29        self.assertEqual(selection.top_rated(self.scores, 3), best_3)
30       
31        self.assertTrue(len(selection.top_rated(self.scores, 3)) == 3)
32       
33        # all returned values should be strings.
34        self.assertTrue(all(isinstance(item, basestring) for item in \
35                            selection.top_rated(self.scores, 3)))
36       
37        new_data = selection.select(self.data, self.scores, 3)
38        self.assertEqual(best_3, [a.name for a in new_data.domain.attributes])
39        self.assertEqual(new_data.domain.class_var, self.data.domain.class_var)
40       
41    def test_above_threashold(self):
42        threshold = self.scores[len(self.scores) / 2][1]
43        above = [item[0] for item in self.scores if item[1] > threshold]
44       
45        self.assertEqual(above, 
46                         selection.above_threshold(self.scores, threshold)
47                         )
48       
49        new_data = selection.select_above_threshold(self.data, 
50                                                    self.scores, threshold)
51        self.assertEqual(above, [a.name for a in new_data.domain.attributes])
52        self.assertEqual(new_data.domain.class_var, self.data.domain.class_var)
53       
54       
55       
56       
57       
58   
59if __name__ == "__main__":
60    unittest.main()
61   
Note: See TracBrowser for help on using the repository browser.