Я использую 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 проверяет пул узлов на наличие узлов с тем же именем вместо создания нового.
Любые идеи? Благодарность!