在通过外部内存通过 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
,类型为numeric
、integer
和logical
。请注意,对于integer
和logical
类型,缺失值可能不会自动识别为缺失值 - 有关此内容的详细信息,请参阅xgb.ExtMemDMatrix()
中参数missing
的文档。data.frame
,类型与 'xgb.DMatrix' 支持的类型相同,并对其应用相同的转换。有关此内容的详细信息,请参阅xgb.DMatrix()
中参数data
的文档。CSR 矩阵,来自 "Matrix" 包的类
dgRMatrix
。
- label
训练数据的标签。对于分类问题,应编码为从零开始计数的整数传递。
- weight
每个实例的权重。
请注意,对于排序任务,权重是按组计算的。在排序任务中,每个组(而不是每个数据点)分配一个权重。这是因为我们只关心每个组内数据点的相对顺序,因此为单个数据点分配权重没有意义。
- base_margin
从现有模型进行提升时使用的基本边距。
在多输出模型的情况下,也可以传递多维基本边距。
- feature_names
设置特征名称。覆盖数据框和矩阵中的列名称。
注意:调用
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
生存训练的上界。
- feature_weights
设置用于列采样的特征权重。