После построения дерева решений с нуля, используя словарь в качестве структуры данных, которая может иметь список словаря или уникальные значения.
Но мне трудно пройти его, чтобы нарисовать его с помощью пакета graphviz dot.
Вот моя попытка, хотя и неполная, но любые предложения приветствуются.
from graphviz import Digraph
tree = {"cu_rate_m6 <= 0.000227778":
[1,
{"ratio_pd_l3_f3 <= 1.25":
[1,
{
"rev_a6 = 4":
[1,
{"avg_bill_amt_l3 <= 19724.333335": [
{
"avg_bill_amt_l3 <= 19669.166665":
[1, 0]},
1]}]}]}]}
graph = Digraph()
graph.attr('node', shape='box')
def draw_graph(dg, stree):
# check if type is dict
if isinstance(stree, dict):
for k, v in stree.items():
node_name = k
# check if type is list
if isinstance(v, list):
if len(v) == 2:
yes_node = v[0]
no_node = v[1]
dg.edge(node_name, yes_node)
dg.edge(node_name, no_node)
else:
yes_node = v[0]
dg.edge(node_name, yes_node)
draw = draw_graph(graph, tree)