跳过内容

从由 xgb.DataIter() 提供的外部数据创建一个 xgb.QuantileDMatrix 对象(与调用函数 xgb.QuantileDMatrix() 返回的对象具有完全相同的类,并且具有相同的优点和限制),数据可能以批处理方式从一个可能无法完全放入内存的更大集合中传入,与 xgb.ExtMemDMatrix() 的方式相同。

请注意,虽然外部数据将仅通过迭代器加载(因此完整数据可能不会完全保存在内存中),但数据的量化表示将在内存中创建,通过多次调用数据迭代器进行串联。量化版本通常比原始数据更轻,因此在某些情况下,即使完整数据无法放入内存,这种表示也可能适合内存。

更多信息,请参阅指南“使用 XGBoost 外部内存版本”:https://docs.xgboost.com.cn/en/release_3.0.0/tutorials/external_memory.html

用法

xgb.QuantileDMatrix.from_iterator(
  data_iterator,
  missing = NA,
  nthread = NULL,
  ref = NULL,
  max_bin = NULL
)

参数

data_iterator

xgb.DataIter() 返回的数据迭代器结构,它包含一个在函数调用之间共享的环境,以及按需批量访问数据的函数。

missing

用于表示数据中缺失值的浮点数值。

请注意,虽然像 xgb.DMatrix() 这样的函数可以接受通用的 NA 并正确解释不同类型(如 numericinteger)的 NA,但如果此处传递 NA 值,则它不会针对不同的输入类型进行调整。

例如,在 R 的 integer 类型中,缺失值由整数 -2147483648 表示(因为机器的 'integer' 类型没有固有的 'NA' 值) - 因此,如果传递 NA,它会被 xgb.ExtMemDMatrix()xgb.QuantileDMatrix.from_iterator() 解释为浮点 NaN,则这些整数缺失值将不会被视为缺失。对于 numeric 类型,这应该不会造成任何问题,因为它们确实具有固有的 NaN 值。

nthread

创建 DMatrix 使用的线程数。

ref

提供分位数信息的训练数据集,在使用 xgb.QuantileDMatrix() 创建验证/测试数据集时需要。提供训练 DMatrix 作为参考意味着应用于训练数据的相同量化将应用于验证/测试数据

max_bin

直方图分箱的数量,应与训练参数 max_bin 保持一致。

这仅在构建 QuantileDMatrix 时支持。

返回值

一个 'xgb.DMatrix' 对象,其子类为 'xgb.QuantileDMatrix'。