Beispiel #1
0
import orange, orngTest, orngStat
import random

data = orange.ExampleTable("voting")

bayes = orange.BayesLearner(name="bayes")
tree = orange.TreeLearner(name="tree")
majority = orange.MajorityLearner(name="default")
learners = [bayes, tree, majority]
names = [x.name for x in learners]


def printResults(res):
    CAs = orngStat.CA(res, reportSE=1)
    for i in range(len(names)):
        print "%s: %5.3f+-%5.3f   " % (names[i], CAs[i][0], 1.96 * CAs[i][1]),
    print


print "\nproportionsTest that will always give the same results"
for i in range(3):
    res = orngTest.proportionTest(learners, data, 0.7)
    printResults(res)

print "\nproportionsTest that will give different results, but the same each time the script is run"
myRandom = orange.RandomGenerator()
for i in range(3):
    res = orngTest.proportionTest(learners,
                                  data,
                                  0.7,
                                  randomGenerator=myRandom)
Beispiel #2
0
        self.mainArea.layout().addWidget(self.sceneView)
        #        self.scene.setSceneRect(0,0,800,800)
        self.navWidget = QWidget(None)
        self.navWidget.setLayout(QVBoxLayout(self.navWidget))
        scene = TreeGraphicsScene(self.navWidget)
        self.treeNav = TreeNavigator(self.sceneView)
        #        self.treeNav.setScene(scene)
        self.navWidget.layout().addWidget(self.treeNav)
        #        self.sceneView.setNavigator(self.treeNav)
        self.navWidget.resize(400, 400)


#        OWGUI.button(self.TreeTab,self,"Navigator",self.toggleNavigator)

if __name__ == "__main__":
    a = QApplication(sys.argv)
    ow = OWDefTreeViewer2D()

    #data = orange.ExampleTable('../../doc/datasets/voting.tab')
    data = orange.ExampleTable(r"..//doc//datasets//zoo.tab")
    data = orange.ExampleTable(r"..//doc//datasets//iris.tab")
    tree = orange.TreeLearner(data, storeExamples=1)
    ow.activateLoadedSettings()
    ow.ctree(None)
    ow.ctree(tree)

    # here you can test setting some stuff
    ow.show()
    a.exec_()
    ow.saveSettings()
Beispiel #3
0
# Description: Builds a classification tree, and prunes it using minimal error
#              prunning with different values of parameter m. Prints
#              out m and the size of the tree.
#              a tree in text and dot format
# Category:    modelling
# Uses:        iris
# Referenced:  orngTree.htm

import orange, orngTree
data = orange.ExampleTable("../datasets/adult_sample.tab")

tree = orange.TreeLearner(data)
prunner = orange.TreePruner_m()
trees = [(0, tree.tree)]
for m in [0.0, 0.1, 0.5, 1, 5, 10, 50, 100]:
    prunner.m = m
    trees.append((m, prunner(tree)))

for m, t in trees:
    print "m = %5.3f: %i nodes, %i leaves" % (m, t.treesize(), orngTree.countLeaves(t))
# Description: Shows how to derive a Python class from orange.TreeStopCriteria
# Category:    classification, callbacks to Python
# Classes:     TreeStopCriteria
# Uses:        lenses
# Referenced:  callbacks.htm

import orange, orngMisc, orngTree

data = orange.ExampleTable("lenses")

from random import randint, seed
seed(0)

defStop = orange.TreeStopCriteria()
treeLearner = orange.TreeLearner()
treeLearner.stop = lambda exs, wID, cont: defStop(exs, wID, cont) or randint(1, 5)==1

print "\n\nTree build with stop criteria as a function"
tree = treeLearner(data)
orngTree.printTxt(tree)

class StoppingCriterion_random(orange.TreeStopCriteria):
  def __call__(self, gen, weightID, contingency):
    return orange.TreeStopCriteria.__call__(self, gen, weightID, contingency) \
           or randint(1, 5)==1

print "\n\nTree build with stop criteria as a class"
treeLearner.stop = StoppingCriterion_random()
tree = treeLearner(data)
orngTree.printTxt(tree)
Beispiel #5
0
folds = 10
for train_context, test_context in cv_split(context,
                                            folds=folds,
                                            random_seed=0):
    # Find features on the train set
    conv = RSDConverter(train_context)
    rsd = RSD()
    features, train_arff, _ = rsd.induce(
        conv.background_knowledge(),  # Background knowledge
        examples=conv.all_examples(),  # Training examples
        cn2sd=False  # Disable built-in subgroup discovery
    )

    # Train the classifier on the *train set*
    train_data = arff_to_orange_table(train_arff)
    tree_classifier = orange.TreeLearner(train_data, max_depth=5)

    # Map the *test set* using the features from the train set
    test_arff = mapper.domain_map(features,
                                  'rsd',
                                  train_context,
                                  test_context,
                                  format='arff')

    # Classify the test set
    test_data = arff_to_orange_table(test_arff)
    fold_predictions = [(ex[-1], tree_classifier(ex)) for ex in test_data]
    predictions.append(fold_predictions)

acc = 0
for fold_predictions in predictions:
Beispiel #6
0
# Description: Shows how to construct new attributes from the existing and use it seamlessly in sampling and testing
# Category:    feature construction, constructive induction
# Classes:     Variable, MakeRandomIndices2
# Uses:        monk1
# Referenced:  Variable.htm

import orange, orngTree

data = orange.ExampleTable("monk1")

indices = orange.MakeRandomIndices2(data, p0=0.7)
trainData = data.select(indices, 0)
testData = data.select(indices, 1)

e2 = orange.EnumVariable("e2", values=["not 1", "1"])
e2.getValueFrom = lambda example, returnWhat: \
                  orange.Value(e2, example["e"]=="1")

newDomain = orange.Domain(
    [data.domain["a"], data.domain["b"], e2, data.domain.classVar])
newTrain = orange.ExampleTable(newDomain, trainData)

tree = orange.TreeLearner(newTrain)

orngTree.printTxt(tree)

for ex in testData[:10]:
    print ex.getclass(), tree(ex)
Beispiel #7
0
import sys
sys.path.append('../')
import database
import warnings
warnings.simplefilter("ignore")
import math
from queryconstructor import QueryConstructor
from plotconstructor import *
import orange
warnings.filterwarnings("ignore", "", orange.AttributeWarning)

learner_data = orange.ExampleTable("learner_data")
print "starting learning"
treeLearner = orange.TreeLearner(learner_data)
majorityLearner = orange.MajorityLearner(learner_data)
print "done with learning"
eval_data = orange.ExampleTable("eval_data")
total=0.0
total_lame=0.0
total_true=0.0
count=0.0

print "starting evaluation"    

for i in eval_data:
    
    actual = i.getclass()
    if (treeLearner(i)==actual):
        total+=1
    if (majorityLearner(i)==actual):
        total_lame+=1
Beispiel #8
0
# Description: Shows the structure that represents decision trees in Orange
# Category:    learning, decision trees, classification
# Classes:     TreeLearner, TreeClassifire, TreeNode, 
# Uses:        lenses
# Referenced:  TreeLearner.htm

import orange

data = orange.ExampleTable("lenses")
treeClassifier = orange.TreeLearner(data)

def treeSize(node):
    if not node:
        return 0

    size = 1
    if node.branchSelector:
        for branch in node.branches:
            size += treeSize(branch)

    return size

print "Tree size:", treeSize(treeClassifier.tree)


def printTree0(node, level):
    if not node:
        print " "*level + "<null node>"
        return

    if node.branchSelector:
Beispiel #9
0
    def instance(self):
        learner = orange.TreeLearner()

        hasSplit = hasattr(self, "split")
        if hasSplit:
            learner.split = self.split
        else:
            learner.split = orange.TreeSplitConstructor_Combined()
            learner.split.continuousSplitConstructor = orange.TreeSplitConstructor_Threshold(
            )
            binarization = getattr(self, "binarization", 0)
            if binarization == 1:
                learner.split.discreteSplitConstructor = orange.TreeSplitConstructor_ExhaustiveBinary(
                )
            elif binarization == 2:
                learner.split.discreteSplitConstructor = orange.TreeSplitConstructor_OneAgainstOthers(
                )
            else:
                learner.split.discreteSplitConstructor = orange.TreeSplitConstructor_Attribute(
                )

            measures = {
                "infoGain": orange.MeasureAttribute_info,
                "gainRatio": orange.MeasureAttribute_gainRatio,
                "gini": orange.MeasureAttribute_gini,
                "relief": orange.MeasureAttribute_relief,
                "retis": orange.MeasureAttribute_MSE
            }

            measure = getattr(self, "measure", None)
            if type(measure) == str:
                measure = measures[measure]()
            if not hasSplit and not measure:
                measure = orange.MeasureAttribute_gainRatio()

            measureIsRelief = type(measure) == orange.MeasureAttribute_relief
            relM = getattr(self, "reliefM", None)
            if relM and measureIsRelief:
                measure.m = relM

            relK = getattr(self, "reliefK", None)
            if relK and measureIsRelief:
                measure.k = relK

            learner.split.continuousSplitConstructor.measure = measure
            learner.split.discreteSplitConstructor.measure = measure

            wa = getattr(self, "worstAcceptable", 0)
            if wa:
                learner.split.continuousSplitConstructor.worstAcceptable = wa
                learner.split.discreteSplitConstructor.worstAcceptable = wa

            ms = getattr(self, "minSubset", 0)
            if ms:
                learner.split.continuousSplitConstructor.minSubset = ms
                learner.split.discreteSplitConstructor.minSubset = ms

        if hasattr(self, "stop"):
            learner.stop = self.stop
        else:
            learner.stop = orange.TreeStopCriteria_common()
            mm = getattr(self, "maxMajority", 1.0)
            if mm < 1.0:
                learner.stop.maxMajority = self.maxMajority
            me = getattr(self, "minExamples", 0)
            if me:
                learner.stop.minExamples = self.minExamples

        for a in [
                "storeDistributions", "storeContingencies", "storeExamples",
                "storeNodeClassifier", "nodeLearner", "maxDepth"
        ]:
            if hasattr(self, a):
                setattr(learner, a, getattr(self, a))

        return learner