当通过 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,类型为numeric、integer和logical。请注意,对于integer和logical类型,缺失值可能不会自动识别为缺失值 — 有关详细信息,请参见xgb.ExtMemDMatrix()中missing参数的文档。data.frame,支持与 'xgb.DMatrix' 相同的类型,并应用相同的转换。有关详细信息,请参见xgb.DMatrix()中data参数的文档。CSR 矩阵,作为 "Matrix" 包中的
dgRMatrix类。
- label
训练数据的标签。对于分类问题,应将其编码为从零开始的整数。
- weight
每个实例的权重。
请注意,对于排序任务,权重是按组分配的。在排序任务中,每个组(而不是每个数据点)分配一个权重。这是因为我们只关心每个组内数据点的相对排序,因此为单个数据点分配权重没有意义。
- 基本边距
从现有模型进行提升所使用的基本边距。
在多输出模型的情况下,还可以传递多维的
base_margin。- 特征名称
设置特征名称。覆盖数据框和矩阵中的列名。
注意:调用
predict时不会按名称引用列,因此那里的列顺序必须与 DMatrix 构建中的顺序相同,无论列名如何。- feature_types
设置特征类型。
如果
data是data.frame且未提供feature_types,则特征类型将自动从列类型中推断出来。否则,可以传递一个字符向量,其长度与
data中的列数相同,可能的值如下:"c",表示分类列。
"q",表示数值列。
"int",表示整数列。
"i",表示逻辑(布尔)列。
请注意,虽然分类类型在模型拟合目的方面与其他类型不同,但其他类型不影响生成的模型,但在特征重要性等其他功能中会产生影响。
重要:分类特征,如果通过
feature_types手动指定,必须编码为从零开始的整数,并且在将数据传递给predict()时需要应用相同的编码。即使传递factor类型,编码也不会保存,因此请确保传递给predict的factor列具有相同的levels。- group
所有排序组的组大小。
- qid
数据样本的查询 ID,用于排序。
- label_lower_bound
生存训练的下限。
- label_upper_bound
生存训练的上限。
- 特征权重
设置用于列采样的特征权重。