https://github.com/caesar0301/pyTree
例子(decision tree):
class innerNode(Node):
def __init__(self,attribute,parent_node_assert,identifier=None, expanded=True):
self.node_assert = parent_node_assert
self.tag = attribute
self._identifier = self.set_identifier(identifier)
self.expanded = expanded
self._bpointer = None
self._fpointer = []
def __str__(self):
return str(self.node_assert)
class leafNode(Node):
def __init__(self,class_label,parent_node_assert,identifier=None, expanded=True):
self.tag = class_label
self.node_assert = parent_node_assert
self._identifier = self.set_identifier(identifier)
self.expanded = expanded
self._bpointer = None
self._fpointer = []
def __str__(self):
return str(self.class_label)
def create_decision_tree():
true = lambda x:True
tree = Tree()
tree.add_node(innerNode('salary', true,1))
tree.add_node(innerNode(">10",lambda x:x>10,2),parent=1)
tree.add_node(innerNode("<=10",lambda x:x<=10,3),parent=1)
tree.add_node(leafNode("yes",true,4),parent=2)
tree.add_node(leafNode("no",true,5),parent=3)
tree.show()
return tree
注意事項:
1. 如果自定義了MyNode, (1)建樹的時候不能用tree.create_node()(它會取默認的node類),而是用tree.add_node()
(2)重載定義新的MyNode時,__init__函數的參數要寫全。(參考官方的Node定義)