Xgboost-决策树-仅一片叶子

问题描述

我尝试绘制来自不同数据集的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)