我使用pydot在Python中绘制图形。我想表示一个决策树,例如(a1、a2、a3是属性,两个类别是0和1:
a1>3
/ \
a2>10 a3>-7
/ \ / \
1 0 1 0
然而,使用pydot只创建了两个叶子,树的样子如下(附带png):
a1>3
/ \
a2>10 a3>-7
| X |
1 0
现在,在这种简单的情况下,逻辑是正确的,但在更大的树中,它会变得混乱,因为属于不同分支的内部节点被统一了。
我正在使用的简单代码是:
import pydot
graph = pydot.Dot(graph_type='graph')
edge = pydot.Edge("a_1>3", "a_2>10")
graph.add_edge(edge)
edge = pydot.Edge("a_1>3", "a_3>-7")
graph.add_edge(edge)
edge = pydot.Edge("a_2>10", "1")
graph.add_edge(edge)
edge = pydot.Edge("a_2>10", "0")
graph.add_edge(edge)
edge = pydot.Edge("a_3>-7", "1")
graph.add_edge(edge)
edge = pydot.Edge("a_3>-7", "0")
graph.add_edge(edge)
graph.write_png('simpleTree.png')
我也尝试过创建与创建边缘不同的节点对象,然后将其添加到图形中,但似乎 pydot 会检查节点池中是否存在同名的节点,而不是创建一个新节点。
有什么想法吗?谢谢!