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)
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
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
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)
def test_add_elements(self): counter = Counter(lambda x: None) for i in xrange(20): counter.add("something") self.assertEqual(counter.total, 20)
def test_total_starts_in_zero(self): counter = Counter(lambda x: None) self.assertEqual(counter.total, 0)