示例#1
0
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
示例#3
0
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()
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()
示例#5
0
__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"
示例#7
0
文件: test.py 项目: JULYRAINING/ML_py
#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
示例#8
0
    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)