通过 xgb.DataIter() 提供的外部数据创建一个 xgb.QuantileDMatrix 对象(与调用函数 xgb.QuantileDMatrix() 返回的类完全相同,具有相同的优点和限制),可能以批次形式从一个可能无法完全载入内存的更大数据集传入,与 xgb.ExtMemDMatrix() 的方式相同。
请注意,虽然外部数据将仅通过迭代器加载(因此完整数据可能不会完全保留在内存中),但数据的量化表示将在内存中创建,从对数据迭代器的多次调用中拼接而成。量化版本通常比原始数据更轻,因此在某些情况下,即使完整数据不适合内存,这种表示也可能适合内存。
有关更多信息,请参阅指南“使用XGBoost外部内存版本”:https://docs.xgboost.com.cn/en/stable/tutorials/external_memory.html
用法
xgb.QuantileDMatrix.from_iterator(
data_iterator,
missing = NA,
nthread = NULL,
ref = NULL,
max_bin = NULL
)参数
- data_iterator
由
xgb.DataIter()返回的数据迭代器结构,它包含一个在函数调用之间共享的环境,以及按需批量访问数据的函数。- 缺失值
一个浮点值,表示数据中的缺失值。
请注意,虽然像
xgb.DMatrix()这样的函数可以接受通用的NA并针对numeric和integer等不同类型正确解释它,但如果此处传入NA值,它将不会适应不同的输入类型。例如,在 R
integer类型中,缺失值由整数-2147483648表示(因为机器“整数”类型没有固有的“NA”值)——因此,如果传入NA(被xgb.ExtMemDMatrix()和xgb.QuantileDMatrix.from_iterator()解释为浮点 NaN),这些整数缺失值将不会被视为缺失。这对于numeric类型不应该造成任何问题,因为它们确实具有固有的 NaN 值。- 线程数
用于创建 DMatrix 的线程数。
- ref
提供分位数信息的训练数据集,在创建验证/测试数据集时需要与
xgb.QuantileDMatrix()配合使用。将训练 DMatrix 作为参考意味着应用于训练数据的相同量化将应用于验证/测试数据。- 最大 bin 数
直方图箱的数量,应与训练参数
max_bin保持一致。此功能仅在构造 QuantileDMatrix 时受支持。