跳到内容

当通过 xgb.ExtMemDMatrix()xgb.QuantileDMatrix.from_iterator() 从外部内存构建 DMatrix 时,此函数是一个辅助函数,用于以数据迭代器的方式分批提供数据。

此函数只能在回调函数内部调用(该回调函数作为参数传递给 xgb.DataIter() 函数以构建数据迭代器),用于通过外部内存构建 DMatrix — 否则,应调用 xgb.DMatrix()xgb.QuantileDMatrix()

直接调用此函数所产生的对象不像 xgb.DMatrix — 即不能用于训练模型,也不能用于获取预测 — 唯一可能的用途是向迭代器提供数据,然后从该迭代器构建 DMatrix。

有关更多信息和示例用法,请参见 xgb.ExtMemDMatrix() 的文档。

用法

xgb.DataBatch(
  data,
  label = NULL,
  weight = NULL,
  base_margin = NULL,
  feature_names = colnames(data),
  feature_types = NULL,
  group = NULL,
  qid = NULL,
  label_lower_bound = NULL,
  label_upper_bound = NULL,
  feature_weights = NULL
)

参数

数据

属于此批次的数据批次。

请注意,并非 xgb.DMatrix() 支持的所有输入类型都可以在此处传递。支持的类型有:

  • matrix,类型为 numericintegerlogical。请注意,对于 integerlogical 类型,缺失值可能不会自动识别为缺失值 — 有关详细信息,请参见 xgb.ExtMemDMatrix()missing 参数的文档。

  • data.frame,支持与 'xgb.DMatrix' 相同的类型,并应用相同的转换。有关详细信息,请参见 xgb.DMatrix()data 参数的文档。

  • CSR 矩阵,作为 "Matrix" 包中的 dgRMatrix 类。

label

训练数据的标签。对于分类问题,应将其编码为从零开始的整数。

weight

每个实例的权重。

请注意,对于排序任务,权重是按组分配的。在排序任务中,每个组(而不是每个数据点)分配一个权重。这是因为我们只关心每个组内数据点的相对排序,因此为单个数据点分配权重没有意义。

基本边距

从现有模型进行提升所使用的基本边距。

在多输出模型的情况下,还可以传递多维的 base_margin

特征名称

设置特征名称。覆盖数据框和矩阵中的列名。

注意:调用 predict 时不会按名称引用列,因此那里的列顺序必须与 DMatrix 构建中的顺序相同,无论列名如何。

feature_types

设置特征类型。

如果 datadata.frame 且未提供 feature_types,则特征类型将自动从列类型中推断出来。

否则,可以传递一个字符向量,其长度与 data 中的列数相同,可能的值如下:

  • "c",表示分类列。

  • "q",表示数值列。

  • "int",表示整数列。

  • "i",表示逻辑(布尔)列。

请注意,虽然分类类型在模型拟合目的方面与其他类型不同,但其他类型不影响生成的模型,但在特征重要性等其他功能中会产生影响。

重要:分类特征,如果通过 feature_types 手动指定,必须编码为从零开始的整数,并且在将数据传递给 predict() 时需要应用相同的编码。即使传递 factor 类型,编码也不会保存,因此请确保传递给 predictfactor 列具有相同的 levels

group

所有排序组的组大小。

qid

数据样本的查询 ID,用于排序。

label_lower_bound

生存训练的下限。

label_upper_bound

生存训练的上限。

特征权重

设置用于列采样的特征权重。

一个 xgb.DataBatch 类的对象,它只是一个包含此处传递的数据和参数的列表。它继承自 xgb.DMatrix