def plotTree(myTree, parentpt, nodeTxt): numLeafs = ID3Tree.getNumLeafs(myTree) maxDepth = ID3Tree.getTreeDepth(myTree) firstr = myTree.keys()[0] cntrPt = (plotTree.xOff + (1.0 + float(numLeafs)) / 2.0 / plotTree.totalW, plotTree.yOff) # plot the text and the node plotMidText(cntrPt, parentpt, nodeTxt) plotNode(firstr, cntrPt, parentpt, decisionNode) secondDict = myTree[firstr] plotTree.yOff = plotTree.yOff - 1.0 / plotTree.totalD # plot the tree by Recursive for key in secondDict.keys(): if type(secondDict[key]).__name__ == "dict": plotTree(secondDict[key], cntrPt, str(key)) else: plotTree.xOff = plotTree.xOff + 1.0 / plotTree.totalW plotNode(secondDict[key], (plotTree.xOff, plotTree.yOff), cntrPt, leafNode) plotMidText((plotTree.xOff, plotTree.yOff), cntrPt, str(key)) plotTree.yOff = plotTree.yOff + 1.0 / plotTree.totalD
def plotTree(myTree, parentpt, nodeTxt): numLeafs = ID3Tree.getNumLeafs(myTree) maxDepth = ID3Tree.getTreeDepth(myTree) firstr = myTree.keys()[0] cntrPt = (plotTree.xOff + (1.0 + float(numLeafs))/2.0/plotTree.totalW, plotTree.yOff) # plot the text and the node plotMidText(cntrPt, parentpt, nodeTxt) plotNode(firstr, cntrPt, parentpt, decisionNode) secondDict = myTree[firstr] plotTree.yOff = plotTree.yOff - 1.0 / plotTree.totalD # plot the tree by Recursive for key in secondDict.keys(): if type(secondDict[key]).__name__ == "dict": plotTree(secondDict[key], cntrPt, str(key)) else: plotTree.xOff = plotTree.xOff + 1.0 / plotTree.totalW plotNode(secondDict[key], (plotTree.xOff, plotTree.yOff), cntrPt, leafNode) plotMidText((plotTree.xOff, plotTree.yOff), cntrPt, str(key)) plotTree.yOff = plotTree.yOff + 1.0 / plotTree.totalD
def createPlot(tree): fig = plt.figure(1, facecolor='white') fig.clf() axprops = dict(xticks=[], yticks=[]) createPlot.ax1 = plt.subplot(111, frameon=False, **axprops) plotTree.totalW = float(ID3Tree.getNumLeafs(tree)) plotTree.totalD = float(ID3Tree.getTreeDepth(tree)) # init plotTree.xOff = -0.5 / plotTree.totalW plotTree.yOff = 1.0 plotTree(tree, (0.5, 1.0), '') plt.show()
__author__ = 'wanghao' """ the glasses examples """ import ID3Tree import TreePlot fr = open('./lenses.txt') DataList = fr.readlines() DataSet = [] for data in DataList: DataSet.append(data.strip().split('\t')) print "The dateSet is ", DataSet Labels = ['age', 'prescript', 'astigmatic', 'tearRate'] LenseTree = ID3Tree.createTree(DataSet, Labels) print "the result ID3 Tree is ", LenseTree TreePlot.createPlot(LenseTree)
__author__ = 'wanghao' """ Main function for the ID3 for test or run some functions """ import ID3Tree import TreePlot DataSet, Labels = ID3Tree.createDataSet() shannon = ID3Tree.calShannonEnt(DataSet) print "The base dataSet shannon Ent is ", shannon print "---------------------------------------\n" retDataSet = ID3Tree.splitDataSet(DataSet, 0, 1) print retDataSet print "---------------------------------------\n" bestFeature = ID3Tree.chooseBestFeature(DataSet) print "The base dataSet choose the best feature is ", Labels[bestFeature] print "---------------------------------------\n" classList = [] for oneData in DataSet: classList.append(oneData[-1]) majorClass = ID3Tree.majorityCnt(classList) print "The base dataSet the major Class is ", majorClass print "---------------------------------------\n"
#coding:utf-8 ''' Created on 2016年10月21日 @author: TF ''' from numpy import * from ID3Tree import * dtree = ID3Tree() dtree.loadDataSet('dataset.dat', ['age', 'revenue', 'student', 'credit']) dtree.train() print dtree.tree
if line_count == 0: feature_names = list(data for data in line_data if data != line_data[-1]) target_names.append(line_data[-1]) data_set = [[] for col in range(len(line_data) - 1)] target_set = [] else: for i in range(len(line_data) - 1): data_set[i].append(line_data[i]) target_set.append(line_data[-1]) line_count = line_count + 1 target_names = list(set(target_set)) print('feature_names:', feature_names) print('data_set:', data_set) print('target_set:', target_set) tree = ID3Tree.ID3Tree() tree.create_tree(data_set, target_set, feature_names, target_names) classifications = [] test_set = [[] for row in range(len(data_set[0]))] for col in range(len(data_set)): col_data = data_set[col] for row in range(len(test_set)): test_set[row].append(col_data[row]) for test_data in test_set: classification = tree.predict(test_data) classifications.append(classification) print('classifications:', classifications)