【问题标题】:How to visualize "homemade" Python decision tree?如何可视化“自制”Python 决策树?
【发布时间】:2021-07-22 01:22:20
【问题描述】:

我制作了自己的“决策树”,以找到一组交易的最佳分割。 使用 ttest 和循环函数,使用在该实例的一组可能的分段变量中找到的最重要的分段变量将数据分成两部分。

输出是这样的:

('Blue', (('Mid', (42.0, ('Low', (11.64, ('High', (13.55, ('Very Low', (0.0, ('Very High', (3.29, 6.25)))))))))), ('Yellow', (('Mid', (44.39, ('Mid High', (31.61, 13.25)))), ('Mid Low', (47.89, ('Mid', (16.36, ('Very Low', (0.24, ('Low', (6.23, ('Red', (('Mid High', (1.15, ('JA', (0.0, ('Very High', (3.91, ('Low High', (3.76, ('High', (3.21, 1.89)))))))))), ('Low low', (25.33, ('High High', (8.92, ('Mid Mid', (6.28, 3.35))))))))))))))))))))

我怎样才能对此进行可视化?我猜,类似于决策树,但不知道如何执行。

【问题讨论】:

  • 您是否看过 dot 语言用于指定图形和 graphviz 用于将点转换为图像?

标签: python python-3.x visualization decision-tree


【解决方案1】:

使用ete3,您可以在将树转换为Newick 格式后绘制它:

dtree = ('Blue', (('Mid', (42.0, ('Low', (11.64, ('High', (13.55, ('Very Low', (0.0, ('Very High', (3.29, 6.25)))))))))), ('Yellow', (('Mid', (44.39, ('Mid High', (31.61, 13.25)))), ('Mid Low', (47.89, ('Mid', (16.36, ('Very Low', (0.24, ('Low', (6.23, ('Red', (('Mid High', (1.15, ('JA', (0.0, ('Very High', (3.91, ('Low High', (3.76, ('High', (3.21, 1.89)))))))))), ('Low low', (25.33, ('High High', (8.92, ('Mid Mid', (6.28, 3.35))))))))))))))))))))
from ete3 import Tree

def newick(t):
    if type(t) != tuple:
        return f'{t}'
    if type(t[0]) == str:
        return f'({newick(t[1])} {t[0]})'
    return f'({newick(t[0])}, {newick(t[1])})'

t = Tree(f'{newick(dtree)};', format=1)
print(t.get_ascii(show_internal=True))

结果:

还有一个图形查看器,但我无法获得 internal node labels to show up,所以我们现在只能使用 ASCII 艺术。

【讨论】:

  • 这看起来真的很像我需要的。我会用我所有的细分变量检查它,然后再回复你。谢谢大佬!
猜你喜欢
  • 2017-08-10
  • 2019-04-27
  • 2014-08-28
  • 2019-05-14
  • 2012-07-03
  • 2020-08-17
  • 2022-01-11
  • 2014-02-11
相关资源
最近更新 更多