Пример #1
0
    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)
Пример #2
0
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))
Пример #4
0
 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)
Пример #5
0
    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')
Пример #6
0
#!/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)
Пример #7
0
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)
Пример #9
0
    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)
Пример #10
0
	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
Пример #13
0
#!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算法产生的决策树
Пример #14
0
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')
Пример #15
0
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:
Пример #16
0
 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)