def test_trees_classify_lenses(self): matrix, labels = data.create_contacts_set() lens_tree = trees.create_tree(matrix, labels) filename = "save_lens_tree.txt" trees.save_tree(lens_tree, filename) self.failUnless(True)
def create_digit_tree(): digits = datasets.load_digits() d_data = digits.data d_target = digits.target labels = [i for i in range(len(d_target))] data_set = np.append(d_data, np.array([d_target]).T, axis=1).tolist() tree = trees.create_tree(data_set, labels) print(tree) # treePlotter.createPlot(tree) trees.store_tree(tree, "digit_tree.txt")
def test_create_tree(self): """Unittest for create tree. :return: """ data, feat_names = trees.create_dataset() decision_tree = { 'no surfacing': { 0: 'no', 1: { 'flippers': { 0: 'no', 1: 'yes' } } } } self.assertEqual(decision_tree, trees.create_tree(data, feat_names)) data = [[1, 2, 'yes'], [1, 3, 'yes'], [2, 3, 'no']] feat_names = ['no surfacing', 'flippers'] decision_tree = {'no surfacing': {1: 'yes', 2: 'no'}} self.assertEqual(decision_tree, trees.create_tree(data, feat_names))
def test_create_tree(self): data_set, labels = trees.load_simple_data() my_tree = trees.create_tree(data_set, labels) res_exp = { 'no surfacing': { 0: 'no', 1: { 'flippers': { 0: 'no', 1: 'yes' } } } } self.assertEqual(res_exp, my_tree)
def test_trees_classify(self): matrix = [[1, 1, 'yes'], [1, 1, 'yes'], [1, 0, 'no'], [0, 1, 'no'], [0, 1, 'no']] labels = ['no surfacing', 'flippers'] tree = trees.create_tree(matrix, labels) prediction = trees.classify([1, 1], tree, labels) self.failUnless(prediction == 'yes') prediction = trees.classify([1, 0], tree, labels) self.failUnless(prediction == 'no') prediction = trees.classify([0, 1], tree, labels) self.failUnless(prediction == 'no') prediction = trees.classify([0, 0], tree, labels) self.failUnless(prediction == 'no')
#!/usr/bin/env python import trees as trees import tree_plotter as tree_plotter def parse_data(filename): with open(filename) as f: lenses = [x.strip().split('\t') for x in f.readlines()] lense_labels = ['age', 'prescript', 'astigmatic', 'tearRate'] return lenses, lense_labels if __name__ == '__main__': lenses, lense_labels = parse_data('../../data/ch3/lenses.txt') lenses_tree = trees.create_tree(lenses, lense_labels) tree_plotter.create_plot(lenses_tree)
import trees import tree_plotter my_data, _ = trees.create_dataset() print(trees.cal_shannon_ent(my_data)) my_data[0][-1] = 'maybe' print(trees.cal_shannon_ent(my_data)) my_data, _ = trees.create_dataset() trees.split_dataset(my_data, 0, 1) trees.split_dataset(my_data, 0, 0) trees.choose_best_feature_to_split(my_data) my_data, labels = trees.create_dataset() trees.create_tree(my_data, labels) tree_plotter.create_plot()
fig = fig.clf() axprops = dict(xticks=[], yticks=[]) create_plot.ax1 = plt.subplot(111, frameon=False, **axprops) plot_tree.totalW = float(get_tree_leafs(my_tree)) plot_tree.totalD = float(get_tree_depth(my_tree)) plot_tree.xOff = -0.5 / plot_tree.totalW plot_tree.yOff = 1.0 plot_tree(my_tree, (0.5, 1.0), '') plt.show() if __name__ == "__main__": # from create_data_set import creat_data_set # data_set, data_tag, labels = creat_data_set() # tree_node = [] # my_tree = create_tree(data_set, labels, data_tag, tree_node) # print(my_tree) # create_plot(my_tree) # 测试隐形眼镜数据 with open('lenses.txt', 'r') as fr: lenses = [inst.strip().split('\t') for inst in fr.readlines()] lense_set, labels = [lense[:-1] for lense in lenses], [lense[-1] for lense in lenses] lense_tag = ['age', 'prescript', 'astigmatic', 'tearRate'] tree_node = [] lenses_tree = create_tree(lense_set, labels, lense_tag, tree_node) create_plot(lenses_tree)
secondDict = myTree[firstStr] plotTree.yOff = plotTree.yOff - 1.0 / plotTree.totalD 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, leaf_node) plotMidText((plotTree.xOff, plotTree.yOff), cntrPt, str(key)) plotTree.yOff = plotTree.yOff + 1.0 / plotTree.totalD def createPlot(inTree): fig = plt.figure(1, facecolor='white') fig.clf() axprops = dict(xticks=[], yticks=[]) createPlot.ax1 = plt.subplot(111, frameon=False, **axprops) plotTree.totalW = float(get_leaf_num(inTree)) plotTree.totalD = float(get_tree_depth(inTree)) plotTree.xOff = -0.5 / plotTree.totalW plotTree.yOff = 1.0 plotTree(inTree, (0.5, 1.0), '') plt.show() if __name__ == '__main__': data_set, labels = trees.create_test_data_set() tree = trees.create_tree(data_set, labels) createPlot(tree)
def test_tree_traversal(self): tree = trees.create_tree("html", [("html", "body"), ("html", "head"), ("head", "meta"), ("body", "block"), ("head", "link"), ("block", "div")]) tree_content = trees.bfs_content(tree) self.assertEqual(tree_content, ["html", "body", "head", "block", "meta", "link", "div"])
def test_glass(): fr = open('lenses.txt') lenses = [line.strip().split('\t') for line in fr.readlines()] lense_labels = ['age', 'precript', 'astigmatic', 'tearRate'] lense_tree = trees.create_tree(lenses, lense_labels) treePlotter.create_plot(lense_tree)
def test_base(): data_set, labels = trees.create_data_set() my_tree = trees.create_tree(data_set, labels) trees.store_tree(my_tree, 'classifierStorage.txt') load_tree = trees.load_tree('classifierStorage.txt') print load_tree
#!usr/bin/env python # -*- coding:utf-8 -*- import tree_plotter import trees fr = open('lenses.txt') lenses = [inst.strip().split('\t') for inst in fr.readlines()] lensesLabels = ['age', 'prescript', 'astigmatic', 'tearRate'] lensesTree = trees.create_tree(lenses, lensesLabels) print(lenses) print(lensesTree) tree_plotter.create_plot(lensesTree) # 由ID3算法产生的决策树
import trees if __name__ == '__main__': lenses_dataset, lenses_labels = trees.get_training_lenses_data( './data/lenses.txt') tree = trees.create_tree(lenses_dataset, lenses_labels) trees.store_tree(tree, './data/lenses_tree.txt')
Author: [email protected] Date: 2018/03/05 16:53:54 ''' import trees import tree_plotter import random fr = open('car.data') lenses = [line.strip().split(',') for line in fr] labels = ['buying', 'maint', 'doors', 'doors', 'persons', 'safety'] fr.close() random.shuffle(lenses) train = lenses[:1000] test = lenses[1000:] lenses_tree = trees.create_tree(train, labels) #print lenses_tree #tree_plotter.create_plot(lenses_tree) err = 0 total = 0 call = 0 for vec in test: real = vec[-1] test_vec = vec[:-1] ret = trees.classify(lenses_tree, labels, test_vec) total += 1 if ret == '-': continue call += 1 if real != ret:
def test_classify_loaded(self): with open('lenses.txt') as fr: lenses = [line.strip().split('\t') for line in fr.readlines()] lenses_labels = ['age', 'prescript', 'astigmatic', 'tearRate'] lenses_tree = trees.create_tree(lenses, lenses_labels) tree_plot.create_plot(lenses_tree)