跳到内容

在通过外部内存通过 xgb.ExtMemDMatrix() 或通过 xgb.QuantileDMatrix.from_iterator() 构建 DMatrix 时,用作数据迭代器提供批处理数据的辅助函数。

此函数只能在构建通过外部内存构建 DMatrix 时,在回调函数(作为参数传递给函数 xgb.DataIter() 来构建数据迭代器)内部调用 - 否则,应该调用 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
)

参数

data

属于此批次的批量数据。

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

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

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

  • CSR 矩阵,来自 "Matrix" 包的类 dgRMatrix

label

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

weight

每个实例的权重。

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

base_margin

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

在多输出模型的情况下,也可以传递多维基本边距。

feature_names

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

注意:调用 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

生存训练的上界。

feature_weights

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

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