Пример #1
0
    def test_target_values(self):
        counter = Counter(lambda x: x % 2 == 0)
        for i in xrange(25):
            counter.add(i)
        self.assertEqual(counter[0], 12)
        self.assertEqual(counter[1], 13)

        counter = Counter(lambda x: None)
        for i in xrange(50):
            counter.add(i)
        self.assertEqual(counter[None], 50)
Пример #2
0
 def _single_node_tree(self):
     c = Counter(self.target)
     for example in self.dataset:
         c.add(example)
     node = DecisionTreeNode()
     node.set_results_from_counts(c)
     return node
Пример #3
0
 def plurality_value(self, examples):
     if not examples:
         raise ValueError("Dataset is empty")
     counter = Counter(self.target)
     for example in examples:
         counter.add(example)
     tree = DecisionTreeNode()
     # Note that tie is *not* solved randomly here
     tree.set_results_from_counts(counter)
     return tree
Пример #4
0
    def classify(self, example):
        distances = [(self.problem.distance(e, example), e)
                     for e in self.dataset]
        best = sorted(distances)[:self.k]

        counter = Counter(self.problem.target)
        for _, example in best:
            counter.add(example)

        items = [(x[1], x[0]) for x in counter.iteritems()]
        items.sort(reverse=True)
        return (items[0][1], items[0][0] / counter.total)
Пример #5
0
 def test_add_elements(self):
     counter = Counter(lambda x: None)
     for i in xrange(20):
         counter.add("something")
     self.assertEqual(counter.total, 20)
Пример #6
0
 def test_total_starts_in_zero(self):
     counter = Counter(lambda x: None)
     self.assertEqual(counter.total, 0)