从由 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
并正确解释不同类型(如numeric
和integer
)的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 时支持。