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")
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
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'])
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')
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
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')
# 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")
#!/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')
# 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
# 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)")
# 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)")
# 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)
# 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)