问题描述
我尝试绘制来自不同数据集的Xgboost模型的决策树。
哪种方法对大多数方法都适用,但是对于一个数据集,plot_tree仅显示一片叶子。
一旦该模型的max_depth为5,这对我来说很奇怪。
有人可以给我小费吗?
感谢您考虑我的问题。 :)! ?
解决方法
很高兴与您分享我找出问题原因的原因:)
XGBoost是一项基于集合原理的技术,因此XGBClassifier创建了多棵树,有些树只能在一个叶子中结束。我意识到用于绘制export_graphviz或plot_tree的函数将模型的第一棵树绘制为默认树,而不是最佳交互。为此,我必须设置参数“ num_trees”:
“ num_trees(整数,默认为0)–指定目标的序号 树”
因此,我必须找到目标树的序号。 幸运的是,有两个函数为我们设置了.get_booster()和.best_iteration。
请参见下面的代码以绘制具有最佳交互作用的树。
plot_tree (model,ax = ax,num_trees = model.get_booster().best_iteration)