跳到内容

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

用法

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

是否转储有关拆分的一些额外统计信息。当此选项打开时,模型转储包含两个额外的值:增益是每次拆分中我们获得的近似损失函数增益;覆盖是每个节点中二阶梯度的总和。

...

未使用。

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

如果传递了既不是当前函数参数也不是已弃用或重命名参数的附加参数,则根据“严格模式”选项,将抛出警告或错误。

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

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

详细信息

每个节点的内容如下所示

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

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

  • 终端(叶)节点包含在此处结束时要添加的裕度。

"Yes" 分支标记为 "< split_value" 标签。也用于缺失值的分支标记为粗体(如 "carrying extra capacity")。

此函数使用 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)
}