Beispiel #1
0
 def print_tree(self, data, visual):
     """
     Decision Tree from the data set
     """
     tree = learner(data)
     orngTree.printTxt(tree)
     if visual: # visual equals true allows plotting a visual tree. A .dot file is written into the current directory.
         orngTree.printDot(tree, fileName='tree.dot', internalNodeShape="ellipse", leafShape="box")
Beispiel #2
0
 def print_tree(self, data, visual):
     """
     Decision Tree from the data set
     """
     tree = learner(data)
     orngTree.printTxt(tree)
     if visual:  # visual equals true allows plotting a visual tree. A .dot file is written into the current directory.
         orngTree.printDot(tree,
                           fileName='tree.dot',
                           internalNodeShape="ellipse",
                           leafShape="box")
Beispiel #3
0
    def report_tree(self, name):
        filename = name + '.tsv'
        stream = file(filename, 'wt')

        # header
        stream.write('\t'.join(self.names) + '\n')
        stream.write('\t'.join(self.types) + '\n')
        stream.write('class\n')

        # rows
        for row in self.rows:
            if row[0] == 'skip':
                continue
            row += [''] * (len(self.names) - len(row))
            stream.write('\t'.join(row) + '\n')

        stream.close()

        # See http://www.ailab.si/orange/doc/ofb/c_otherclass.htm
        try:
            import orange
            import orngTree
        except ImportError:
            sys.stderr.write(
                'Install Orange from http://www.ailab.si/orange/ for a classification tree.\n'
            )
            return None

        data = orange.ExampleTable(filename)

        tree = orngTree.TreeLearner(data, sameMajorityPruning=1, mForPruning=2)

        orngTree.printTxt(tree, maxDepth=4)

        text_tree = orngTree.dumpTree(tree)

        file(name + '.txt', 'wt').write(text_tree)

        orngTree.printDot(tree,
                          fileName=name + '.dot',
                          nodeShape='ellipse',
                          leafShape='box')

        return text_tree
Beispiel #4
0
def main():
    """Main script"""

    paper_table = build_papers_table()
    tree = orngTree.TreeLearner(minSubset=5, sameMajorityPruning=True)

    learners = [tree]

    FOLDS = 10

    results = Orange.evaluation.testing.cross_validation(learners,
                                                         paper_table,
                                                         folds=FOLDS,
                                                         storeClassifiers=1)

    confusions = []

    print "Learner  CA     Brier  AUC"
    for i in range(len(learners)):
        print "%-8s %5.3f  %5.3f  %5.3f" % (learners[i].name, \
        Orange.evaluation.scoring.CA(results)[i],
        Orange.evaluation.scoring.Brier_score(results)[i],
        Orange.evaluation.scoring.AUC(results)[i])

        for k in range(0, FOLDS):
            indices = [
                paper_table[x] for x in range(0, len(paper_table))
                if results.results[x].iteration_number == k
            ]

            confusions.append(
                buildConfusion(indices, results.classifiers[k][i],
                               TYPE_DIRS.keys()))

        confusion = buildTotalConfusions(confusions, TYPE_DIRS.keys())

        printConfusion(confusion, TYPE_DIRS.keys())
        printMeasures(confusion)

        orngTree.printTxt(results.classifiers[k][i],
                          leafStr="%V (%M / %N)",
                          nodeStr="(%M / %N)",
                          leafFields=['major', 'contingency'])
Beispiel #5
0
    def summary(self):
        sys.stdout.write("%u tests, %u passed, %u skipped, %u failed\n\n" %
                         (self.tests, self.passed, self.skipped, self.failed))
        sys.stdout.flush()

        name, ext = os.path.splitext(os.path.basename(sys.argv[0]))
        filename = name + '.tsv'
        stream = file(filename, 'wt')

        # header
        stream.write('\t'.join(self.names) + '\n')
        stream.write('\t'.join(self.types) + '\n')
        stream.write('class\n')

        # rows
        for row in self.rows:
            row += [''] * (len(self.names) - len(row))
            stream.write('\t'.join(row) + '\n')

        stream.close()

        # See http://www.ailab.si/orange/doc/ofb/c_otherclass.htm
        try:
            import orange
            import orngTree
        except ImportError:
            sys.stderr.write(
                'Install Orange from http://www.ailab.si/orange/ for a classification tree.\n'
            )
            return

        data = orange.ExampleTable(filename)

        tree = orngTree.TreeLearner(data, sameMajorityPruning=1, mForPruning=2)

        orngTree.printTxt(tree, maxDepth=4)

        file(name + '.txt', 'wt').write(orngTree.dumpTree(tree))

        orngTree.printDot(tree,
                          fileName=name + '.dot',
                          nodeShape='ellipse',
                          leafShape='box')
Beispiel #6
0
    def report_tree(self, name):
        filename = name + '.tsv'
        stream = file(filename, 'wt')

        # header
        stream.write('\t'.join(self.names) + '\n')
        stream.write('\t'.join(self.types) + '\n')
        stream.write('class\n')

        # rows
        for row in self.rows:
            if row[0] == 'skip':
                continue
            row += ['']*(len(self.names) - len(row))
            stream.write('\t'.join(row) + '\n')

        stream.close()

        # See http://www.ailab.si/orange/doc/ofb/c_otherclass.htm
        try:
            import orange
            import orngTree
        except ImportError:
            sys.stderr.write('Install Orange from http://www.ailab.si/orange/ for a classification tree.\n')
            return None

        data = orange.ExampleTable(filename)

        tree = orngTree.TreeLearner(data, sameMajorityPruning=1, mForPruning=2)

        orngTree.printTxt(tree, maxDepth=4)

        text_tree = orngTree.dumpTree(tree)

        file(name + '.txt', 'wt').write(text_tree)

        orngTree.printDot(tree, fileName=name+'.dot', nodeShape='ellipse', leafShape='box')

        return text_tree
Beispiel #7
0
    def summary(self):
        sys.stdout.write("%u tests, %u passed, %u skipped, %u failed\n\n" % (self.tests, self.passed, self.skipped, self.failed))
        sys.stdout.flush()

        name, ext = os.path.splitext(os.path.basename(sys.argv[0]))
        filename = name + '.tsv'
        stream = file(filename, 'wt')

        # header
        stream.write('\t'.join(self.names) + '\n')
        stream.write('\t'.join(self.types) + '\n')
        stream.write('class\n')

        # rows
        for row in self.rows:
            row += ['']*(len(self.names) - len(row))
            stream.write('\t'.join(row) + '\n')

        stream.close()

        # See http://www.ailab.si/orange/doc/ofb/c_otherclass.htm
        try:
            import orange
            import orngTree
        except ImportError:
            sys.stderr.write('Install Orange from http://www.ailab.si/orange/ for a classification tree.\n')
            return

        data = orange.ExampleTable(filename)

        tree = orngTree.TreeLearner(data, sameMajorityPruning=1, mForPruning=2)

        orngTree.printTxt(tree, maxDepth=4)

        file(name+'.txt', 'wt').write(orngTree.dumpTree(tree))

        orngTree.printDot(tree, fileName=name+'.dot', nodeShape='ellipse', leafShape='box')
Beispiel #8
0
# Description: Builds a regression tree and prints it out
# Category:    modelling
# Uses:        housing
# Classes:     orngTree.TreeLearner
# Referenced:  regression.htm

import orange, orngTree

data = orange.ExampleTable("../datasets/housing.tab")
rt = orngTree.TreeLearner(data, measure="retis", mForPruning=2, minExamples=20)
orngTree.printTxt(rt, leafStr="%V %I")
Beispiel #9
0
#!/usr/bin/env python
#
# See also:
#  http://www.ailab.si/orange/doc/ofb/c_otherclass.htm

import os.path
import sys

import orange
import orngTree

for arg in sys.argv[1:]:
    name, ext = os.path.splitext(arg)

    data = orange.ExampleTable(arg)

    tree = orngTree.TreeLearner(data, sameMajorityPruning=1, mForPruning=2)

    orngTree.printTxt(tree)

    file(name + '.txt', 'wt').write(orngTree.dumpTree(tree) + '\n')

    orngTree.printDot(tree,
                      fileName=name + '.dot',
                      nodeShape='ellipse',
                      leafShape='box')
Beispiel #10
0
# Description: Learn decision tree from data and output class probabilities for first few instances
# Category:    modelling
# Uses:        voting.tab
# Classes:     orngTree.TreeLearner
# Referenced:  c_otherclass.htm

import orange, orngTree
data = orange.ExampleTable("voting")

tree = orngTree.TreeLearner(data, sameMajorityPruning=1, mForPruning=2)
print "Possible classes:", data.domain.classVar.values
print "Probabilities for democrats:"
for i in range(5):
    p = tree(data[i], orange.GetProbabilities)
    print "%d: %5.3f (originally %s)" % (i+1, p[1], data[i].getclass())

print
orngTree.printTxt(tree)
orngTree.printDot(tree, fileName='tree.dot', internalNodeShape="ellipse", leafShape="box")

print "\n*** CUSTOM IMPUTATION BY MODELS ***\n"

imputer = orange.Imputer_model()
imputer.models = [None] * len(data.domain)

imputer.models[data.domain.index("LANES")] = orange.DefaultClassifier(2.0)

tord = orange.DefaultClassifier(orange.Value(data.domain["T-OR-D"], "THROUGH"))
imputer.models[data.domain.index("T-OR-D")] = tord

import orngTree
len_domain = orange.Domain(["MATERIAL", "SPAN", "ERECTED", "LENGTH"], data.domain)
len_data = orange.ExampleTable(len_domain, data)
len_tree = orngTree.TreeLearner(len_data, minSubset=20)
imputer.models[data.domain.index("LENGTH")] = len_tree
orngTree.printTxt(len_tree)

spanVar = data.domain["SPAN"]
def computeSpan(ex, rw):
    if ex["TYPE"] == "WOOD" or ex["PURPOSE"] == "WALK":
        return orange.Value(spanVar, "SHORT")
    else:
        return orange.Value(spanVar, "MEDIUM")

imputer.models[data.domain.index("SPAN")] = computeSpan

for i in range(20, 25):
    print data[i]
    print impdata[i]
    print
Beispiel #12
0
# Description: Reads a data from MySQL data base and constructs a classification tree
# Category:    file formats
# Classes:     orngMySQL.Connect
# Referenced:  orngMySQL.htm

import orange, orngMySQL, orngTree

t = orngMySQL.Connect('localhost','root','','test')
data = t.query("SELECT * FROM busclass")
tree = orngTree.TreeLearner(data)
orngTree.printTxt(tree, nodeStr="%V (%1.0N)", leafStr="%V (%1.0N)")
Beispiel #13
0
# Description: Reads a data from MySQL data base and constructs a classification tree
# Category:    file formats
# Classes:     orngMySQL.Connect
# Referenced:  orngMySQL.htm

import orange, orngMySQL, orngTree

t = orngMySQL.Connect('localhost', 'root', '', 'test')
data = t.query("SELECT * FROM busclass")
tree = orngTree.TreeLearner(data)
orngTree.printTxt(tree, nodeStr="%V (%1.0N)", leafStr="%V (%1.0N)")
Beispiel #14
0
# Author:      J Zabkar
# Version:     1.0
# Description: Grow classification tree with a self-defined stopping criteria
# Category:    modelling
# Uses:        iris.tab
# Referenced:   orngTree.htm

import orange, orngTree
from random import randint, seed
seed(0)

data = orange.ExampleTable("iris.tab")

print "SOME RANDOMNESS IN STOPING:"
defStop = orange.TreeStopCriteria()
f = lambda examples, weightID, contingency: defStop(examples, weightID, contingency) or randint(1, 5)==1
l = orngTree.TreeLearner(data, stop=f)
orngTree.printTxt(l)

print "\nRANDOM STOPING:"
f = lambda x,y,z: randint(1, 5)==1
l = orngTree.TreeLearner(data, stop=f)
orngTree.printTxt(l)
Beispiel #15
0
# Author:      J Zabkar
# Version:     1.0
# Description: Grow classification tree with a self-defined stopping criteria
# Category:    modelling
# Uses:        iris.tab
# Referenced:   orngTree.htm

import orange, orngTree
from random import randint, seed
seed(0)

data = orange.ExampleTable("iris.tab")

print "SOME RANDOMNESS IN STOPING:"
defStop = orange.TreeStopCriteria()
f = lambda examples, weightID, contingency: defStop(
    examples, weightID, contingency) or randint(1, 5) == 1
l = orngTree.TreeLearner(data, stop=f)
orngTree.printTxt(l)

print "\nRANDOM STOPING:"
f = lambda x, y, z: randint(1, 5) == 1
l = orngTree.TreeLearner(data, stop=f)
orngTree.printTxt(l)