Changeset 9537:fb8dba919d8c in orange


Ignore:
Timestamp:
01/17/12 23:30:10 (2 years ago)
Author:
janezd <janez.demsar@…>
Branch:
default
Convert:
70c2833e0fc0295b9ecdd308ac6388cb40a4f673
Message:

Added method Orange.classification.tree.TreeClassifier.to_network

File:
1 edited

Legend:

Unmodified
Added
Removed
  • orange/Orange/classification/tree.py

    r9349 r9537  
    26522652        return _countLeaves(self.tree) 
    26532653 
     2654    def to_network(self): 
     2655        net = Orange.network.DiGraph() 
     2656        if self.class_var.var_type == Orange.data.Type.Discrete: 
     2657            domain = Orange.data.Domain([self.class_var] + 
     2658                [Orange.data.variable.Continuous(name) for name in 
     2659                 ["instances", "majority proportion"] + list(self.class_var.values)], None) 
     2660        else: 
     2661            domain = Orange.data.Domain([self.class_var] + 
     2662                [Orange.data.variable.Continuous(name) for name in 
     2663                 ["error", "instances"]], None) 
     2664        domain = Orange.data.Domain(domain) 
     2665        data = Orange.data.Table(domain) 
     2666        self.to_network0(self.tree, net, data) 
     2667        return net, data 
     2668 
     2669    def to_network0(self, node, net, table): 
     2670        node_id = len(table) 
     2671        net.add_node(node_id) 
     2672        d = node.distribution 
     2673        maj = node.node_classifier.default_value 
     2674        if self.class_var.var_type == Orange.data.Type.Discrete: 
     2675            if d.abs > 1e-6: 
     2676                table.append([maj, d.abs, d[maj]] + [x/d.abs for x in d]) 
     2677            else: 
     2678                table.append([maj] + [0]*(2 + len(d))) 
     2679        else: 
     2680            table.append(maj, d.error, d.abs) 
     2681        if node.branches: 
     2682            for branch in node.branches: 
     2683                child_id = self.to_network0(branch, net, table) 
     2684                net.add_edge(node_id, child_id) 
     2685        return node_id 
     2686 
    26542687def _countNodes(node): 
    26552688    count = 0 
Note: See TracChangeset for help on using the changeset viewer.