示例#1
0
 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
示例#2
0
 def validateTestData(self):
     testData = fileIO(self.argvList[5])
     return (self.bestTree.validate(testData))
示例#3
0
 def validateTestDataOrg(self):
     testData = fileIO(self.argvList[5])
     return (self.DT.validate(testData))
示例#4
0
 def __init__(self, argvList):
     self.trainingData = fileIO(argvList[3])
     self.examples = self.trainingData.masterCopy
     self.DT = None
     self.bestTree = self.DT
     self.argvList = argvList