通过 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 时受支持。