I helped my students understand the decision tree classifier in sklearn recently. Maybe they think I helped too much. But I think it was good for them. We did an interesting little exercise, too, writing a program that writes a program that represents a decision tree. Maybe it will be useful to someone else as well:
def print_tree(t, root=0, depth=1): if depth == 1: print 'def predict(X_i):' indent = ' '*depth print indent + '# node %s: impurity = %.2f' % (str(root), t.impurity[root]) left_child = t.children_left[root] right_child = t.children_right[root] if left_child == sklearn.tree._tree.TREE_LEAF: print indent + 'return %s # (node %d)' % (str(t.value[root]), root) else: print indent + 'if X_i[%d] < %.2f: # (node %d)' % (t.feature[root], t.threshold[root], root) print_tree(t, root=left_child, depth=depth+1) print indent + 'else:' print_tree(t,root=right_child, depth=depth+1)
Did I do this for MILK a few years ago? I’m becoming an absent-minded professor ahead of my time.