如何可视化 "homemade" Python 决策树?
How to visualize "homemade" Python decision tree?
我自己制作了某种“决策树”来找到一组交易的最佳分割。
使用 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))))))))))))))))))))
我怎样才能将其可视化?我想,类似于决策树的东西,但不知道如何执行。
使用 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 艺术。
我自己制作了某种“决策树”来找到一组交易的最佳分割。 使用 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))))))))))))))))))))
我怎样才能将其可视化?我想,类似于决策树的东西,但不知道如何执行。
使用 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 艺术。