catboost
训练好模型之后,调用plot_tree可以具体可视化森林中具体树的构成:
model.plot_tree(tree_idx=171)
但,model.plot_tree(tree_idx=171)是Digraph,如果print出来就是下面的内容:
digraph {
0 [label="8, value>1.156" color=black shape=ellipse]
1 [label="54, value>0.00136387" color=black shape=ellipse]
0 -> 1 [label=No]
2 [label="54, value>0.00136387" color=black shape=ellipse]
0 -> 2 [label=Yes]
3 [label="38, value>1.00535" color=black shape=ellipse]
1 -> 3 [label=No]
4 [label="38, value>1.00535" color=black shape=ellipse]
1 -> 4 [label=Yes]
5 [label="38, value>1.00535" color=black shape=ellipse]
2 -> 5 [label=No]
6 [label="38, value>1.00535" color=black shape=ellipse]
2 -> 6 [label=Yes]
7 [label="val = 0.000
" color=red shape=rect]
3 -> 7 [label=No]
8 [label="val = -2919.138
" color=red shape=rect]
3 -> 8 [label=Yes]
9 [label="val = -61941.777
" color=red shape=rect]
4 -> 9 [label=No]
10 [label="val = -60960.785
" color=red shape=rect]
4 -> 10 [label=Yes]
11 [label="val = 0.000
" color=red shape=rect]
5 -> 11 [label=No]
12 [label="val = 48638.031
" color=red shape=rect]
5 -> 12 [label=Yes]
13 [label="val = 53809.523
" color=red shape=rect]
6 -> 13 [label=No]
14 [label="val = -13664.988
" color=red shape=rect]
6 -> 14 [label=Yes]
}
我们可以借助网上开源的工具进行可视化:Graphviz Visual Editor

也可以利用render函数进行树的保存,并生成PDF文件:
model.plot_tree(tree_idx=171).render('tree171.gv',view=False)

他会在指定目录生成.gv和.pdf文件,gv文件内容为树结构的搭建,pdf为具体可视化后的树结构。

随机森林或决策树
我们可以通过
model.estimators_[0]
获得单棵树,类似这种:

由于tree没有catboost类似接口,这时候是不能直接plot_tree的,可借助sklearn.tree.export_graphviz()函数将tree保存为文件:
from sklearn.tree import export_graphviz
export_graphviz(tree_sample, out_file='tree.gv')
然后利用cmd,在tree.gv路径下将其转化为pdf或png格式的文件,便于可视化:
dot -Tpdf .\tree.gv -o .\tree.pdf


1800

被折叠的 条评论
为什么被折叠?



