def pruneTree(self, L, K): if (self.DT == None): raise SystemExit("Tree not built. This tree cannot be pruned") else: bestTree = self.DT.copyTree() validatingData = fileIO(self.argvList[4]) bestAccuracy = bestTree.validate(validatingData) #print("original Tree accuracy",bestAccuracy); for i in range(L): D2 = self.DT.copyTree() M = random.randint(1, K) for j in range(M): numOfNodes = D2.numberNodesOfTree() if (numOfNodes == 1 or numOfNodes == 0): break else: P = random.randint(1, numOfNodes) D2.replaceSubtreeWithLeaf(P, self.trainingData) #check for accuracy thisTreeAccuracy = D2.validate(validatingData) #print("this tree accuracy",thisTreeAccuracy); if (thisTreeAccuracy > bestAccuracy): bestAccuracy = thisTreeAccuracy bestTree = D2.copyTree() #print("best Accuracy",bestAccuracy); return bestTree, bestAccuracy
def validateTestData(self): testData = fileIO(self.argvList[5]) return (self.bestTree.validate(testData))
def validateTestDataOrg(self): testData = fileIO(self.argvList[5]) return (self.DT.validate(testData))
def __init__(self, argvList): self.trainingData = fileIO(argvList[3]) self.examples = self.trainingData.masterCopy self.DT = None self.bestTree = self.DT self.argvList = argvList