def A31(): tree = dT.buildTree(m.monk1, m.attributes, 5) print tree draw.drawTree(tree)
for subset in sel: for i in [0, 1, 2, 3, 5]: sub.append(t.averageGain(subset, m.attributes[i])) mC.append(t.mostCommon(subset)) # print(sub) sub = [] "Highest information gain on second level of the tree # 2 - A4 , 3 - A6 , 4 - A1 #" """Assignment 3""" tree1 = t.buildTree(m.monk1, m.attributes) tree2 = t.buildTree(m.monk2, m.attributes) tree3 = t.buildTree(m.monk3, m.attributes) draw.drawTree(tree1) # draw.drawTree(tree2) # draw.drawTree(tree3) print("Assignment 3: Decision tree performances") print("Train errors:") print(1 - round(t.check(tree1, m.monk1), 5)) print(1 - round(t.check(tree2, m.monk2), 5)) print(1 - round(t.check(tree3, m.monk3), 5)) print("Test errors:") print(round(1 - t.check(tree1, m.monk1test), 5)) print(round(1 - t.check(tree2, m.monk2test), 5)) print(round(1 - t.check(tree3, m.monk3test), 5), "\n")
def A31(): tree = dT.buildTree( m.monk1, m.attributes, 5 ) print tree draw.drawTree( tree )
def draw_tree(dataset): #Draws a decision tree from dataset t = dt.buildTree(dataset, m.attributes) dw.drawTree(t) return t
import dtree as d import monkdata as m import drawtree as dt def isLeaf(subset): return d.allPositive(subset) or d.allNegative(subset) def buildTree(subset,attrs): global tree if isLeaf(subset): tree = (tree + '+') if d.allPositive(subset) else (tree + '-') return else: root = d.bestAttribute(subset,attrs) tree = tree + str(root) + "(" for value in root.values: nextSubset = d.select(subset,root,value) nextAttrs = attrs - set([root]) buildTree(nextSubset,nextAttrs) tree = tree + ")" tree = "" buildTree(m.monk1,set(m.attributes)) #dt.drawTree(tree) id3tree = d.buildTree(m.monk1,m.attributes) dt.drawTree(id3tree)
import monkdata as m import dtree as dt import drawtree as draw entropy = dt.entropy(m.monk1) best_gain = 0 for attribute in m.attributes: gain = dt.averageGain(m.monk1, attribute) if gain > best_gain: best_gain = gain best_attribute = attribute for v in best_attribute.values: subset = dt.select(m.monk1, best_attribute, v) majority_class = dt.mostCommon(subset) values = { v: dt.mostCommon(dt.select(m.monk1, best_attribute, v)) for v in best_attribute.values } print(best_attribute, values) draw.drawTree(dt.buildTree(m.monk1, m.attributes, 2))
import monkdata as m import dtree as dt import drawtree as draw entropy = dt.entropy(m.monk1) best_gain = 0 for attribute in m.attributes: gain = dt.averageGain(m.monk1, attribute) if gain > best_gain: best_gain = gain best_attribute = attribute for v in best_attribute.values: subset = dt.select(m.monk1, best_attribute, v) majority_class = dt.mostCommon(subset) values = {v: dt.mostCommon(dt.select(m.monk1, best_attribute, v)) for v in best_attribute.values} print(best_attribute, values) draw.drawTree(dt.buildTree(m.monk1, m.attributes, 2))