跳到内容

读取树模型文本转储并绘制模型。

用法

xgb.plot.tree(
  model,
  tree_idx = 1,
  plot_width = NULL,
  plot_height = NULL,
  with_stats = FALSE,
  ...
)

参数

model

xgb.Booster 类的对象。如果它包含特征名称(可以通过 setinfo() 设置),则将在此函数的输出中使用它们。

tree_idx

要使用的树索引的整数。这是一个从 1 开始的索引。

plot_width, plot_height

图表的宽度和高度(像素)。这些值被传递给 DiagrammeR::render_graph()

with_stats

是否转储关于分割的一些附加统计信息。当此选项开启时,模型转储包含两个附加值:gain 是每次分割获得的近似损失函数增益;cover 是每个节点二阶梯度的总和。

...

未使用。

此函数在先前 XGBoost 版本中包含的一些参数目前已弃用或已重命名。如果传入弃用或重命名的参数,将(默认情况下)抛出警告并使用其当前等效参数。如果使用 '严格模式'选项,此警告将变为错误。

如果传入了既不是当前函数参数也不是弃用或重命名参数的其他参数,则会根据 '严格模式' 选项抛出警告或错误。

重要提示: ... 将在未来版本中移除,所有当前的弃用警告将变为错误。请仅使用函数签名中包含的参数。

渲染的图表对象,它是 'class grViz' 的 htmlwidget。与 "ggplot" 对象类似,当不在命令行运行时需要打印它。

详情

每个节点的内容可视化如下

  • 对于非终端节点,它将显示分割条件(如果可用,显示数字或名称,以及决定接下来去哪个节点的条件)。

  • 这些节点将通过箭头与其子节点连接,箭头指示分支是否对应于条件满足或未满足。

  • 终端(叶)节点包含结束时要添加的 margin。

"Yes" 分支用 "< split_value" 标签标记。用于处理缺失值的分支以粗体显示(如“携带额外容量”)。

此函数使用 GraphViz 作为 DiagrammeR 后端。

示例

data("ToothGrowth")
x <- ToothGrowth[, c("len", "dose")]
y <- ToothGrowth$supp
model <- xgboost(
  x, y,
  nthreads = 1L,
  nrounds = 3L,
  max_depth = 3L
)

# plot the first tree
xgb.plot.tree(model, tree_idx = 1)

# Below is an example of how to save this plot to a file.
if (require("DiagrammeR") && require("htmlwidgets")) {
  fname <- file.path(tempdir(), "plot.html'")
  gr <- xgb.plot.tree(model, tree_idx = 1)
  htmlwidgets::saveWidget(gr, fname)
}