source: orange/Orange/testing/unit/tests/test_feature_selection.py @ 10651:4f6fcf57db06

Revision 10651:4f6fcf57db06, 2.1 KB checked in by markotoplak, 2 years ago (diff)

Moved caching, collections, debugging, fileutil, r, testing from misc to utils.

Line 
1import Orange.utils.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.best_n(self.scores, 3), best_3)
30       
31        self.assertTrue(len(selection.best_n(self.scores, 3)) == 3)
32       
33        # all returned values should be strings.
34        self.assertTrue(all(isinstance(item, basestring) for item in \
35                            selection.best_n(self.scores, 3)))
36       
37        new_data = selection.select_best_n(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.