Python API 参考
此页面提供了 XGBoost 的 Python API 参考,有关 Python 包的更多信息,请参阅 Python 包介绍。
全局配置
- xgboost.config_context(**new_config)
XGBoost 全局配置的上下文管理器。
全局配置包含可以在全局范围内应用的参数集合。有关全局配置中支持的参数完整列表,请参阅 全局配置。
注意
退出上下文管理器时,所有设置,而不仅仅是当前修改的设置,都将恢复到之前的值。这并非线程安全。
在 1.4.0 版本中新增。
示例
import xgboost as xgb # Show all messages, including ones pertaining to debugging xgb.set_config(verbosity=2) # Get current value of global configuration # This is a dict containing all parameters in the global configuration, # including 'verbosity' config = xgb.get_config() assert config['verbosity'] == 2 # Example of using the context manager xgb.config_context(). # The context manager will restore the previous value of the global # configuration upon exiting. with xgb.config_context(verbosity=0): # Suppress warning caused by model generated with XGBoost version < 1.0.0 bst = xgb.Booster(model_file='./old_model.bin') assert xgb.get_config()['verbosity'] == 2 # old value restored
支持嵌套配置上下文
示例
with xgb.config_context(verbosity=3): assert xgb.get_config()["verbosity"] == 3 with xgb.config_context(verbosity=2): assert xgb.get_config()["verbosity"] == 2 xgb.set_config(verbosity=2) assert xgb.get_config()["verbosity"] == 2 with xgb.config_context(verbosity=3): assert xgb.get_config()["verbosity"] == 3
另请参见
set_config
设置 XGBoost 全局配置
get_config
获取全局配置的当前值
- xgboost.set_config(**new_config)
设置全局配置。
全局配置包含可以在全局范围内应用的参数集合。有关全局配置中支持的参数完整列表,请参阅 全局配置。
在 1.4.0 版本中新增。
示例
import xgboost as xgb # Show all messages, including ones pertaining to debugging xgb.set_config(verbosity=2) # Get current value of global configuration # This is a dict containing all parameters in the global configuration, # including 'verbosity' config = xgb.get_config() assert config['verbosity'] == 2 # Example of using the context manager xgb.config_context(). # The context manager will restore the previous value of the global # configuration upon exiting. with xgb.config_context(verbosity=0): # Suppress warning caused by model generated with XGBoost version < 1.0.0 bst = xgb.Booster(model_file='./old_model.bin') assert xgb.get_config()['verbosity'] == 2 # old value restored
支持嵌套配置上下文
示例
with xgb.config_context(verbosity=3): assert xgb.get_config()["verbosity"] == 3 with xgb.config_context(verbosity=2): assert xgb.get_config()["verbosity"] == 2 xgb.set_config(verbosity=2) assert xgb.get_config()["verbosity"] == 2 with xgb.config_context(verbosity=3): assert xgb.get_config()["verbosity"] == 3
- xgboost.get_config()
获取全局配置的当前值。
全局配置包含可以在全局范围内应用的参数集合。有关全局配置中支持的参数完整列表,请参阅 全局配置。
在 1.4.0 版本中新增。
- 返回:
args – 全局参数及其值的列表
- 返回类型:
Dict[str, Any]
示例
import xgboost as xgb # Show all messages, including ones pertaining to debugging xgb.set_config(verbosity=2) # Get current value of global configuration # This is a dict containing all parameters in the global configuration, # including 'verbosity' config = xgb.get_config() assert config['verbosity'] == 2 # Example of using the context manager xgb.config_context(). # The context manager will restore the previous value of the global # configuration upon exiting. with xgb.config_context(verbosity=0): # Suppress warning caused by model generated with XGBoost version < 1.0.0 bst = xgb.Booster(model_file='./old_model.bin') assert xgb.get_config()['verbosity'] == 2 # old value restored
支持嵌套配置上下文
示例
with xgb.config_context(verbosity=3): assert xgb.get_config()["verbosity"] == 3 with xgb.config_context(verbosity=2): assert xgb.get_config()["verbosity"] == 2 xgb.set_config(verbosity=2) assert xgb.get_config()["verbosity"] == 2 with xgb.config_context(verbosity=3): assert xgb.get_config()["verbosity"] == 3
核心数据结构
XGBoost 核心库。
- class xgboost.DMatrix(data, label=None, *, weight=None, base_margin=None, missing=None, silent=False, feature_names=None, feature_types=None, nthread=None, group=None, qid=None, label_lower_bound=None, label_upper_bound=None, feature_weights=None, enable_categorical=False, data_split_mode=DataSplitMode.ROW)
基类:
object
XGBoost 中使用的数据矩阵。
DMatrix 是 XGBoost 使用的内部数据结构,针对内存效率和训练速度进行了优化。您可以从多种不同的数据源构建 DMatrix。
- 参数:
data (Any) –
DMatrix 的数据源。有关支持的输入类型列表,请参阅 各种 XGBoost 函数支持的数据结构。
请注意,如果传递迭代器,它将在磁盘上缓存数据,并且像
label
这样的字段将通过对迭代器的多次调用在内存中连接起来。label (Any | None) – 训练数据的标签。
weight (Any | None) –
每个实例的权重。
注意
对于排序任务,权重按组分配。在排序任务中,每个组(而不是每个数据点)分配一个权重。这是因为我们只关心每个组内数据点的相对顺序,因此为单个数据点分配权重没有意义。
missing (float | None) – 输入数据中需要表示为缺失值的值。如果为 None,则默认为 np.nan。
silent (bool) – 构建期间是否打印消息
feature_types (Sequence[str] | None) –
设置特征类型。如果 data 是 DataFrame 类型且传递 enable_categorical=True,则将根据列类型自动推断类型。
否则,可以传递一个与 data 中列数长度相同的列表式输入,其可能值为:
“c”,表示分类列。
“q”,表示数值列。
“int”,表示整数列。
“i”,表示布尔列。
请注意,虽然出于模型拟合目的,分类类型与其他类型不同对待,但其他类型不会影响生成的模型,而是在特征重要性等其他功能中起作用。
对于分类特征,输入被假定已由用户预处理和编码。编码可以通过
sklearn.preprocessing.OrdinalEncoder
或 pandas dataframe 的 .cat.codes 方法完成。当用户想要指定分类特征而无需构建 DataFrame 作为输入时,这非常有用。nthread (int | None) – 在适用并行化时用于加载数据的线程数。如果为 -1,则使用系统上可用的最大线程数。
group (Any | None) – 所有排序组的组大小。
qid (Any | None) – 数据样本的查询 ID,用于排序。
label_lower_bound (Any | None) – 生存训练的下界。
label_upper_bound (Any | None) – 生存训练的上界。
feature_weights (Any | None) – 设置特征权重用于列采样。
enable_categorical (bool) –
在 1.3.0 版本中新增。
注意
此参数为实验性
实验性地支持对分类特征进行特殊处理。
如果传入 ‘True’ 并且 ‘data’ 是一个数据框(来自 Pandas、Modin 或 cuDF 等支持的库),则分类类型的列将在生成的 DMatrix 中自动设置为分类类型(feature_type=’c’)。
如果传入 ‘False’ 并且 ‘data’ 是一个包含分类列的数据框,则会引发错误。
如果 ‘data’ 不是数据框,则此参数被忽略。
这需要 JSON/UBJSON 序列化格式。
data_split_mode (DataSplitMode)
- data_split_mode()
获取 DMatrix 的数据分割模式。
在 2.1.0 版本中新增。
- 返回类型:
DataSplitMode
- property feature_types: Sequence[str] | None
特征类型(列类型)。
这用于显示结果和支持分类数据。有关详细信息,请参阅
DMatrix
。将其设置为
None
会重置现有的特征类型。
- get_base_margin()
获取 DMatrix 的基本边距 (base margin)。
- 返回类型:
base_margin
- get_data()
以 CSR 矩阵的形式从 DMatrix 中获取预测变量。此 getter 主要用于测试目的。如果这是量化的 DMatrix,则返回量化值而不是输入值。
在 1.7.0 版本中新增。
- 返回类型:
- get_float_info(field)
从 DMatrix 中获取浮点属性。
- 参数:
field (str) – 信息的字段名
- 返回:
info – 数据浮点信息的 numpy 数组
- 返回类型:
array
- get_group()
获取 DMatrix 的组信息。
- 返回类型:
group
- get_label()
获取 DMatrix 的标签。
- 返回:
label
- 返回类型:
array
- get_uint_info(field)
从 DMatrix 中获取无符号整数属性。
- 参数:
field (str) – 信息的字段名
- 返回:
info – 数据无符号整数信息的 numpy 数组
- 返回类型:
array
- get_weight()
获取 DMatrix 的权重。
- 返回:
weight
- 返回类型:
array
- save_binary(fname, silent=True)
将 DMatrix 保存到 XGBoost 缓冲区。保存的二进制文件稍后可以通过提供路径给
xgboost.DMatrix()
作为输入来加载。- 参数:
fname (string or os.PathLike) – 输出缓冲区文件的名称。
silent (bool (可选;默认值:True)) – 如果设置,则抑制输出。
- 返回类型:
无
- set_base_margin(margin)
设置 booster 的基本边距 (base margin) 作为起始值。
这可以用来指定现有模型的预测值作为 base_margin 然而,请记住需要的是边距值,而不是转换后的预测值,例如对于逻辑回归:需要在逻辑转换之前放入值,另请参阅 example/demo.py
- 参数:
margin (array like) – 每个数据点的预测边距 (prediction margin)
- 返回类型:
无
- set_float_info(field, data)
将浮点类型属性设置到 DMatrix 中。
- 参数:
field (str) – 信息的字段名
data (numpy array) – 要设置的数据数组
- 返回类型:
无
- set_float_info_npy2d(field, data)
- 将浮点类型属性设置到 DMatrix 中
用于 numpy 2d 数组输入
- 参数:
field (str) – 信息的字段名
data (numpy array) – 要设置的数据数组
- 返回类型:
无
- set_group(group)
设置 DMatrix 的组大小(用于排序)。
- 参数:
group (array like) – 每个组的组大小
- 返回类型:
无
- set_info(*, label=None, weight=None, base_margin=None, group=None, qid=None, label_lower_bound=None, label_upper_bound=None, feature_names=None, feature_types=None, feature_weights=None)
为 DMatrix 设置元信息。请参阅
xgboost.DMatrix
的文档字符串。
- set_label(label)
设置 dmatrix 的标签
- 参数:
label (array like) – 要设置到 DMatrix 中的标签信息
- 返回类型:
无
- set_uint_info(field, data)
将 uint 类型属性设置到 DMatrix 中。
- 参数:
field (str) – 信息的字段名
data (numpy array) – 要设置的数据数组
- 返回类型:
无
- set_weight(weight)
设置每个实例的权重。
- 参数:
weight (array like) –
每个数据点的权重
注意
对于排序任务,权重按组分配。
在排序任务中,每个组(而不是每个数据点)分配一个权重。这是因为我们只关心每个组内数据点的相对顺序,因此为单个数据点分配权重没有意义。
- 返回类型:
无
- class xgboost.QuantileDMatrix(data, label=None, *, weight=None, base_margin=None, missing=None, silent=False, feature_names=None, feature_types=None, nthread=None, max_bin=None, ref=None, group=None, qid=None, label_lower_bound=None, label_upper_bound=None, feature_weights=None, enable_categorical=False, max_quantile_batches=None, data_split_mode=DataSplitMode.ROW)
基类:
DMatrix
,_RefMixIn
一种 DMatrix 变体,可直接从输入生成量化数据,用于
hist
树方法。此 DMatrix 主要旨在通过避免中间存储来节省训练内存。设置max_bin
控制量化期间的 bin 数量,这应与训练参数max_bin
保持一致。当QuantileDMatrix
用于验证/测试数据集时,ref
应是从训练数据集构建的另一个QuantileDMatrix
或DMatrix
(但不推荐,因为它会违背节省内存的目的)。有关元信息,请参阅xgboost.DMatrix
的文档。注意
不要在不提供引用(训练数据集)
QuantileDMatrix
(通过ref
参数)的情况下将QuantileDMatrix
用作验证/测试数据集,因为在量化过程中可能会丢失一些信息。在 1.7.0 版本中新增。
示例
from sklearn.datasets import make_regression from sklearn.model_selection import train_test_split X, y = make_regression() X_train, X_test, y_train, y_test = train_test_split(X, y) Xy_train = xgb.QuantileDMatrix(X_train, y_train) # It's necessary to have the training DMatrix as a reference for valid quantiles. Xy_test = xgb.QuantileDMatrix(X_test, y_test, ref=Xy_train)
- 参数:
max_bin (int | None) – 直方图 bin 的数量,应与训练参数
max_bin
保持一致。ref (DMatrix | None) – 提供分位数信息的训练数据集,在使用
QuantileDMatrix
创建验证/测试数据集时需要。提供训练 DMatrix 作为引用意味着将应用于训练数据的相同量化应用于验证/测试数据max_quantile_batches (int | None) –
对于来自迭代器的基于 GPU 的输入,XGBoost 使用多个增长的子流处理传入的批次。此参数设置在 XGBoost 可以切断子流并创建一个新子流之前处理的最大批次数量。这有助于限制内存使用。默认情况下,XGBoost 会指数级地增长新的子流,直到批次用尽。仅用于训练数据集,默认值为 None(无限制)。最后,如果
data
是单个批次而不是迭代器,则此参数无效。版本 3.0.0 中添加。
警告
这是一个实验性参数,可能会发生变化。
data (Any) –
DMatrix 的数据源。有关支持的输入类型列表,请参阅 各种 XGBoost 函数支持的数据结构。
请注意,如果传递迭代器,它将在磁盘上缓存数据,并且像
label
这样的字段将通过对迭代器的多次调用在内存中连接起来。label (Any | None) – 训练数据的标签。
weight (Any | None) –
每个实例的权重。
注意
对于排序任务,权重按组分配。在排序任务中,每个组(而不是每个数据点)分配一个权重。这是因为我们只关心每个组内数据点的相对顺序,因此为单个数据点分配权重没有意义。
missing (float | None) – 输入数据中需要表示为缺失值的值。如果为 None,则默认为 np.nan。
silent (bool) – 构建期间是否打印消息
feature_types (Sequence[str] | None) –
设置特征类型。如果 data 是 DataFrame 类型且传递 enable_categorical=True,则将根据列类型自动推断类型。
否则,可以传递一个与 data 中列数长度相同的列表式输入,其可能值为:
“c”,表示分类列。
“q”,表示数值列。
“int”,表示整数列。
“i”,表示布尔列。
请注意,虽然出于模型拟合目的,分类类型与其他类型不同对待,但其他类型不会影响生成的模型,而是在特征重要性等其他功能中起作用。
对于分类特征,输入被假定已由用户预处理和编码。编码可以通过
sklearn.preprocessing.OrdinalEncoder
或 pandas dataframe 的 .cat.codes 方法完成。当用户想要指定分类特征而无需构建 DataFrame 作为输入时,这非常有用。nthread (int | None) – 在适用并行化时用于加载数据的线程数。如果为 -1,则使用系统上可用的最大线程数。
group (Any | None) – 所有排序组的组大小。
qid (Any | None) – 数据样本的查询 ID,用于排序。
label_lower_bound (Any | None) – 生存训练的下界。
label_upper_bound (Any | None) – 生存训练的上界。
feature_weights (Any | None) – 设置特征权重用于列采样。
enable_categorical (bool) –
在 1.3.0 版本中新增。
注意
此参数为实验性
实验性地支持对分类特征进行特殊处理。
如果传入 ‘True’ 并且 ‘data’ 是一个数据框(来自 Pandas、Modin 或 cuDF 等支持的库),则分类类型的列将在生成的 DMatrix 中自动设置为分类类型(feature_type=’c’)。
如果传入 ‘False’ 并且 ‘data’ 是一个包含分类列的数据框,则会引发错误。
如果 ‘data’ 不是数据框,则此参数被忽略。
这需要 JSON/UBJSON 序列化格式。
data_split_mode (DataSplitMode)
- data_split_mode()
获取 DMatrix 的数据分割模式。
在 2.1.0 版本中新增。
- 返回类型:
DataSplitMode
- property feature_types: Sequence[str] | None
特征类型(列类型)。
这用于显示结果和支持分类数据。有关详细信息,请参阅
DMatrix
。将其设置为
None
会重置现有的特征类型。
- get_base_margin()
获取 DMatrix 的基本边距 (base margin)。
- 返回类型:
base_margin
- get_data()
以 CSR 矩阵的形式从 DMatrix 中获取预测变量。此 getter 主要用于测试目的。如果这是量化的 DMatrix,则返回量化值而不是输入值。
在 1.7.0 版本中新增。
- 返回类型:
- get_float_info(field)
从 DMatrix 中获取浮点属性。
- 参数:
field (str) – 信息的字段名
- 返回:
info – 数据浮点信息的 numpy 数组
- 返回类型:
array
- get_group()
获取 DMatrix 的组信息。
- 返回类型:
group
- get_label()
获取 DMatrix 的标签。
- 返回:
label
- 返回类型:
array
- get_uint_info(field)
从 DMatrix 中获取无符号整数属性。
- 参数:
field (str) – 信息的字段名
- 返回:
info – 数据无符号整数信息的 numpy 数组
- 返回类型:
array
- get_weight()
获取 DMatrix 的权重。
- 返回:
weight
- 返回类型:
array
- save_binary(fname, silent=True)
将 DMatrix 保存到 XGBoost 缓冲区。保存的二进制文件稍后可以通过提供路径给
xgboost.DMatrix()
作为输入来加载。- 参数:
fname (string or os.PathLike) – 输出缓冲区文件的名称。
silent (bool (可选;默认值:True)) – 如果设置,则抑制输出。
- 返回类型:
无
- set_base_margin(margin)
设置 booster 的基本边距 (base margin) 作为起始值。
这可以用来指定现有模型的预测值作为 base_margin 然而,请记住需要的是边距值,而不是转换后的预测值,例如对于逻辑回归:需要在逻辑转换之前放入值,另请参阅 example/demo.py
- 参数:
margin (array like) – 每个数据点的预测边距 (prediction margin)
- 返回类型:
无
- set_float_info(field, data)
将浮点类型属性设置到 DMatrix 中。
- 参数:
field (str) – 信息的字段名
data (numpy array) – 要设置的数据数组
- 返回类型:
无
- set_float_info_npy2d(field, data)
- 将浮点类型属性设置到 DMatrix 中
用于 numpy 2d 数组输入
- 参数:
field (str) – 信息的字段名
data (numpy array) – 要设置的数据数组
- 返回类型:
无
- set_group(group)
设置 DMatrix 的组大小(用于排序)。
- 参数:
group (array like) – 每个组的组大小
- 返回类型:
无
- set_info(*, label=None, weight=None, base_margin=None, group=None, qid=None, label_lower_bound=None, label_upper_bound=None, feature_names=None, feature_types=None, feature_weights=None)
为 DMatrix 设置元信息。请参阅
xgboost.DMatrix
的文档字符串。
- set_label(label)
设置 dmatrix 的标签
- 参数:
label (array like) – 要设置到 DMatrix 中的标签信息
- 返回类型:
无
- set_uint_info(field, data)
将 uint 类型属性设置到 DMatrix 中。
- 参数:
field (str) – 信息的字段名
data (numpy array) – 要设置的数据数组
- 返回类型:
无
- set_weight(weight)
设置每个实例的权重。
- 参数:
weight (array like) –
每个数据点的权重
注意
对于排序任务,权重按组分配。
在排序任务中,每个组(而不是每个数据点)分配一个权重。这是因为我们只关心每个组内数据点的相对顺序,因此为单个数据点分配权重没有意义。
- 返回类型:
无
- class xgboost.ExtMemQuantileDMatrix(data, *, missing=None, nthread=None, max_bin=None, ref=None, enable_categorical=False, max_num_device_pages=None, max_quantile_batches=None)
基类:
DMatrix
,_RefMixIn
QuantileDMatrix
的外部内存版本。有关解释和使用示例,请参阅 Using XGBoost External Memory Version,有关参数文档,请参阅
QuantileDMatrix
。警告
这是一个实验性功能,可能会发生变化。
版本 3.0.0 中添加。
- 参数:
max_num_device_pages (int | None) – 对于基于 GPU 的验证数据集,XGBoost 可以选择将一些页面缓存到设备内存而不是主机内存中,以减少数据传输。每个缓存页面的大小为
min_cache_page_bytes
。如果您不想将页面缓存到设备内存中,请将其设置为 0。当存在多个验证数据集时,这对于防止 OOM 错误非常有用。基于设备的页面默认数量为 1。最后,XGBoost 通过检查 ref 是否为 None 来推断数据集是否用于验证。max_quantile_batches (int | None) – 参阅
QuantileDMatrix
。missing (float | None)
nthread (int | None)
max_bin (int | None)
ref (DMatrix | None)
enable_categorical (bool)
- data_split_mode()
获取 DMatrix 的数据分割模式。
在 2.1.0 版本中新增。
- 返回类型:
DataSplitMode
- property feature_types: Sequence[str] | None
特征类型(列类型)。
这用于显示结果和支持分类数据。有关详细信息,请参阅
DMatrix
。将其设置为
None
会重置现有的特征类型。
- get_base_margin()
获取 DMatrix 的基本边距 (base margin)。
- 返回类型:
base_margin
- get_data()
以 CSR 矩阵的形式从 DMatrix 中获取预测变量。此 getter 主要用于测试目的。如果这是量化的 DMatrix,则返回量化值而不是输入值。
在 1.7.0 版本中新增。
- 返回类型:
- get_float_info(field)
从 DMatrix 中获取浮点属性。
- 参数:
field (str) – 信息的字段名
- 返回:
info – 数据浮点信息的 numpy 数组
- 返回类型:
array
- get_group()
获取 DMatrix 的组信息。
- 返回类型:
group
- get_label()
获取 DMatrix 的标签。
- 返回:
label
- 返回类型:
array
- get_uint_info(field)
从 DMatrix 中获取无符号整数属性。
- 参数:
field (str) – 信息的字段名
- 返回:
info – 数据无符号整数信息的 numpy 数组
- 返回类型:
array
- get_weight()
获取 DMatrix 的权重。
- 返回:
weight
- 返回类型:
array
- save_binary(fname, silent=True)
将 DMatrix 保存到 XGBoost 缓冲区。保存的二进制文件稍后可以通过提供路径给
xgboost.DMatrix()
作为输入来加载。- 参数:
fname (string or os.PathLike) – 输出缓冲区文件的名称。
silent (bool (可选;默认值:True)) – 如果设置,则抑制输出。
- 返回类型:
无
- set_base_margin(margin)
设置 booster 的基本边距 (base margin) 作为起始值。
这可以用来指定现有模型的预测值作为 base_margin 然而,请记住需要的是边距值,而不是转换后的预测值,例如对于逻辑回归:需要在逻辑转换之前放入值,另请参阅 example/demo.py
- 参数:
margin (array like) – 每个数据点的预测边距 (prediction margin)
- 返回类型:
无
- set_float_info(field, data)
将浮点类型属性设置到 DMatrix 中。
- 参数:
field (str) – 信息的字段名
data (numpy array) – 要设置的数据数组
- 返回类型:
无
- set_float_info_npy2d(field, data)
- 将浮点类型属性设置到 DMatrix 中
用于 numpy 2d 数组输入
- 参数:
field (str) – 信息的字段名
data (numpy array) – 要设置的数据数组
- 返回类型:
无
- set_group(group)
设置 DMatrix 的组大小(用于排序)。
- 参数:
group (array like) – 每个组的组大小
- 返回类型:
无
- set_info(*, label=None, weight=None, base_margin=None, group=None, qid=None, label_lower_bound=None, label_upper_bound=None, feature_names=None, feature_types=None, feature_weights=None)
为 DMatrix 设置元信息。请参阅
xgboost.DMatrix
的文档字符串。
- set_label(label)
设置 dmatrix 的标签
- 参数:
label (array like) – 要设置到 DMatrix 中的标签信息
- 返回类型:
无
- set_uint_info(field, data)
将 uint 类型属性设置到 DMatrix 中。
- 参数:
field (str) – 信息的字段名
data (numpy array) – 要设置的数据数组
- 返回类型:
无
- set_weight(weight)
设置每个实例的权重。
- 参数:
weight (array like) –
每个数据点的权重
注意
对于排序任务,权重按组分配。
在排序任务中,每个组(而不是每个数据点)分配一个权重。这是因为我们只关心每个组内数据点的相对顺序,因此为单个数据点分配权重没有意义。
- 返回类型:
无
- class xgboost.Booster(params=None, cache=None, model_file=None)
基类:
object
XGBoost 的 Booster。
Booster 是 XGBoost 的模型,包含用于训练、预测和评估的底层例程。
- 参数:
- __getitem__(val)
获取树模型的切片。结果 booster 中会移除
best_iteration
和best_score
等属性。在 1.3.0 版本中新增。
- attributes()
将存储在 Booster 中的属性作为字典获取。
- 返回:
result – 如果没有属性,则返回一个空字典。
- 返回类型:
由字符串构成的 attribute_name: attribute_value 对的字典。
- boost(dtrain, iteration, grad, hess)
使用自定义梯度统计信息,将 booster 提升一个迭代。与
xgboost.Booster.update()
类似,此函数不应由用户直接调用。
- copy()
复制 booster 对象。
- 返回:
复制的 booster 模型
- 返回类型:
booster
- dump_model(fout, fmap='', with_stats=False, dump_format='text')
将模型转储到文本或 JSON 文件中。与
save_model()
不同,此输出格式主要用于可视化或解释,因此更易于人类阅读,但无法重新加载到 XGBoost 中。
- eval(data, name='eval', iteration=0)
在 mat 上评估模型。
- eval_set(evals, iteration=0, feval=None, output_margin=True)
评估一组数据。
- property feature_types: Sequence[str] | None
此 booster 的特征类型。可以直接通过输入数据设置或通过赋值设置。有关详细信息,请参阅
DMatrix
。
- get_dump(fmap='', with_stats=False, dump_format='text')
将模型转储作为字符串列表返回。与
save_model()
不同,此输出格式主要用于可视化或解释,因此更易于人类阅读,但无法重新加载到 XGBoost 中。
- get_fscore(fmap='')
获取每个特征的特征重要性。
注意
不会包含重要性为零的特征。
请注意,此函数不包含重要性为零的特征,即在任何分割条件中都未使用的特征。
- get_score(fmap='', importance_type='weight')
获取每个特征的特征重要性。对于树模型,重要性类型可以定义为
‘weight’: 在所有树中特征被用于分割数据的次数。
‘gain’: 特征在所有分割中获得的平均增益。
‘cover’: 特征在所有分割中覆盖的平均样本数(覆盖度)。
‘total_gain’: 特征在所有分割中获得的总增益。
‘total_cover’: 特征在所有分割中覆盖的总样本数(覆盖度)。
注意
对于线性模型,仅定义了“weight”,它是去除偏差后的归一化系数。
注意
不会包含重要性为零的特征。
请注意,此函数不包含重要性为零的特征,即在任何分割条件中都未使用的特征。
- get_split_value_histogram(feature, fmap='', bins=None, as_pandas=True)
获取特征的分割值直方图
- 参数:
- 返回:
指定特征使用的分割值的直方图,
以 numpy 数组或 pandas DataFrame 的形式返回。
- 返回类型:
- inplace_predict(data, *, iteration_range=(0, 0), predict_type='value', missing=nan, validate_features=True, base_margin=None, strict_shape=False)
如果可能,执行原地预测。与
predict()
方法不同,原地预测不会缓存预测结果。仅在多个线程中调用
inplace_predict
是安全且无锁的。但与其它方法结合使用时,安全性不成立。例如,您不能在一个线程中训练 booster,而在另一个线程中执行预测。注意
如果输入数据的设备序号与为 booster 配置的不匹配,数据将被复制到 booster 设备。
booster.set_param({"device": "cuda:0"}) booster.inplace_predict(cupy_array) booster.set_param({"device": "cpu"}) booster.inplace_predict(numpy_array)
版本 1.1.0 中添加。
- 参数:
data (Any) – 输入数据。
iteration_range (Tuple[int | integer, int | integer]) – 有关详细信息,请参阅
predict()
。predict_type (str) –
value 输出模型预测值。
margin 输出原始未转换的 margin 值。
missing (float) – 有关详细信息,请参阅
xgboost.DMatrix
。validate_features (bool) – 有关详细信息,请参阅
xgboost.Booster.predict()
。base_margin (Any) –
有关详细信息,请参阅
xgboost.DMatrix
。在 1.4.0 版本中新增。
strict_shape (bool) –
有关详细信息,请参阅
xgboost.Booster.predict()
。在 1.4.0 版本中新增。
- 返回:
prediction – 预测结果。当输入数据在 GPU 上时,预测结果存储在 cupy 数组中。
- 返回类型:
numpy.ndarray/cupy.ndarray
- load_model(fname)
从文件或 bytearray 加载模型。
模型以 XGBoost 内部格式保存,该格式在各种 XGBoost 接口中通用。Python Booster 对象的辅助属性(例如 feature_names)仅在使用 JSON 或 UBJSON(默认)格式时保存。此外,不属于模型的参数(如指标、
max_depth
等)不会保存,有关更多信息,请参阅 Model IO。model.save_model("model.json") model.load_model("model.json") # or model.save_model("model.ubj") model.load_model("model.ubj") # or buf = model.save_raw() model.load_model(buf)
- predict(data, *, output_margin=False, pred_leaf=False, pred_contribs=False, approx_contribs=False, pred_interactions=False, validate_features=True, training=False, iteration_range=(0, 0), strict_shape=False)
使用数据进行预测。除非指定
iteration_range
,否则将使用完整模型,这意味着用户必须切片模型或使用best_iteration
属性从早停返回的最佳模型中获取预测结果。注意
有关线程安全问题以及此函数输出的摘要,请参阅 Prediction。
- 参数:
data (DMatrix) – 存储输入的 dmatrix。
output_margin (bool) – 是否输出原始未转换的 margin 值。
pred_leaf (bool) – 启用此选项时,输出将是一个矩阵,形状为 (nsample, ntrees),每条记录表示每个样本在每棵树中的预测叶子索引。请注意,一棵树的叶子索引在该树中是唯一的,因此您可能会在树 1 和树 0 中找到叶子 1。
pred_contribs (bool) – 当此参数设置为 True 时,输出将是一个形状为 (nsample, nfeats + 1) 的矩阵,每条记录表示该预测的特征贡献(SHAP 值)。所有特征贡献的总和等于预测的原始未转换 margin 值。注意,最后一列是偏差项。
approx_contribs (bool) – 近似计算每个特征的贡献。在
pred_contribs
或pred_interactions
设置为 True 时使用。不建议更改此参数的默认值 (False)。pred_interactions (bool) – 当此参数设置为 True 时,输出将是一个形状为 (nsample, nfeats + 1, nfeats + 1) 的矩阵,表示每对特征的 SHAP 交互值。交互值每一行(或每一列)的总和等于相应的 SHAP 值(来自 pred_contribs),并且整个矩阵的总和等于预测的原始未转换 margin 值。注意,最后一行和最后一列对应于偏差项。
validate_features (bool) – 当此参数设置为 True 时,验证 Booster 和数据的 feature_names 是否完全一致。否则,假设 feature_names 是相同的。
training (bool) –
预测值是否用于训练。这可能会影响 dart booster,它在训练迭代期间执行 dropout,但在推理时使用所有树。如果您想获得带有 dropout 的结果,请将此参数设置为 True。此外,当为自定义目标函数获取预测结果时,此参数会设置为 true。
版本 1.0.0 中添加。
iteration_range (Tuple[int | integer, int | integer]) –
指定预测中使用哪一层次的树。例如,如果使用 100 轮训练了随机森林。指定 iteration_range=(10, 20),则此预测仅使用在 [10, 20)(半开区间)轮中构建的森林。
在 1.4.0 版本中新增。
strict_shape (bool) –
当设置为 True 时,输出形状与是否使用分类无关。对于 value 和 margin 预测,输出形状均为 (n_samples, n_groups),n_groups 在未使用多分类时等于 1。默认为 False,在这种情况下,如果未使用多分类,输出形状可能为 (n_samples, )。
在 1.4.0 版本中新增。
- 返回:
prediction
- 返回类型:
numpy array
- save_model(fname)
将模型保存到文件。
模型以 XGBoost 内部格式保存,该格式在各种 XGBoost 接口中通用。Python Booster 对象的辅助属性(例如 feature_names)仅在使用 JSON 或 UBJSON(默认)格式时保存。此外,不属于模型的参数(如指标、
max_depth
等)不会保存,有关更多信息,请参阅 Model IO。model.save_model("model.json") # or model.save_model("model.ubj")
- save_raw(raw_format='ubj')
将模型保存到内存缓冲区表示中,而不是文件。
模型以 XGBoost 内部格式保存,该格式在各种 XGBoost 接口中通用。Python Booster 对象的辅助属性(例如 feature_names)仅在使用 JSON 或 UBJSON(默认)格式时保存。此外,不属于模型的参数(如指标、
max_depth
等)不会保存,有关更多信息,请参阅 Model IO。- 参数:
raw_format (str) – 输出缓冲区的格式。可以是 json 或 ubj。
- 返回类型:
模型的内存缓冲区表示
- set_param(params, value=None)
将参数设置到 Booster 中。
- trees_to_dataframe(fmap='')
将提升树模型文本转储解析为 pandas DataFrame 结构。
此功能仅在选择决策树模型作为基础学习器 (booster in {gbtree, dart}) 时定义。对于其他基础学习器类型(如线性学习器,booster=gblinear)则未定义。
- class xgboost.DataIter(cache_prefix=None, release_data=True, *, on_host=True, min_cache_page_bytes=None)
基类:
ABC
用户定义数据迭代器的接口。该迭代器使用
DMatrix
或ExtMemQuantileDMatrix
支持分布式训练、QuantileDMatrix
和外部内存。大多数情况下,用户无需直接与此类交互。注意
该类使用 data 输入(预测器 X)作为键来缓存一些中间结果。不要重复使用不同元数据(如 label)的多个批次数据的 X,如有必要请创建副本。
- 参数:
cache_prefix (str | None) –
缓存文件的前缀,仅在外部内存中使用。
注意,对外部内存使用此类将在磁盘上缓存数据,缓存路径由此处传入。
release_data (bool) – 迭代器是否应在迭代过程中释放数据。如果数据转换(将数据转换为 np.float32 类型)占用大量内存,则将其设置为 True。否则,如果转换占用大量计算资源,则可以保留缓存。
on_host (bool) –
在使用 GPU 外部内存时,数据是否应缓存在主机内存而不是文件系统上。设置为 True (默认) 时,“外部内存”即 CPU (主机) 内存。更多信息请参见 Using XGBoost External Memory Version。
版本 3.0.0 中添加。
警告
这是一个实验性参数,可能会发生变化。
min_cache_page_bytes (int | None) –
每个缓存页的最小字节数。仅用于使用 GPU 基础的
ExtMemQuantileDMatrix
进行主机缓存时。当使用 GPU 基础的外部内存且数据缓存在主机内存中时,XGBoost 可以在内部连接页面以增加 GPU 的批处理大小。默认页面大小约为总设备内存的 1/8。用户可以根据实际硬件和数据集手动设置该值。将其设置为 0 可禁用页面连接。版本 3.0.0 中添加。
警告
这是一个实验性参数,可能会发生变化。
- get_callbacks(enable_categorical)
获取在 C 中迭代的回调函数。这是一个内部函数。
- abstract next(input_data)
设置下一个批次数据。
- 参数:
input_data (Callable) – 一个函数,具有与 xgboost.DMatrix 相同的数据字段,如 data、label。
- 返回类型:
如果没有更多批次,则为 False,否则为 True。
- property proxy: _ProxyDMatrix
DMatrix 代理的句柄。
- reraise()
重新抛出迭代期间发生的异常。
- 返回类型:
无
- abstract reset()
重置数据迭代器。用户定义函数的原型。
- 返回类型:
无
学习 API
包含训练例程的训练库。
- xgboost.train(params, dtrain, num_boost_round=10, *, evals=None, obj=None, maximize=None, early_stopping_rounds=None, evals_result=None, verbose_eval=True, xgb_model=None, callbacks=None, custom_metric=None)
使用给定参数训练一个 booster 模型。
- 参数:
dtrain (DMatrix) – 要训练的数据。
num_boost_round (int) – 提升迭代次数。
evals (Sequence[Tuple[DMatrix, str]] | None) – 训练期间将评估指标的验证集列表。验证指标将帮助我们跟踪模型的性能。
obj (Callable[[ndarray, DMatrix], Tuple[ndarray, ndarray]] | None) – 自定义目标函数。有关详细信息,请参阅 Custom Objective。
maximize (bool | None) – 是否最大化 custom_metric。
early_stopping_rounds (int | None) –
激活提前停止。为了继续训练,验证指标需要在每 early_stopping_rounds 轮中至少改进一次。
evals 中至少需要一个项目。
该方法返回最后一轮的模型(而不是最佳模型)。如果需要最佳模型,请使用自定义回调
EarlyStopping
或model slicing
。如果在 evals 中有多个项目,则使用最后一个条目进行提前停止。如果在 params 中给定的 eval_metric 参数中有多个指标,则使用最后一个指标进行提前停止。
如果发生提前停止,模型将有两个额外的字段:
bst.best_score
,bst.best_iteration
。evals_result (Dict[str, Dict[str, List[float] | List[Tuple[float, float]]]] | None) –
此字典存储 watchlist 中所有项目的评估结果。
示例:watchlist 包含
[(dtest,'eval'), (dtrain,'train')]
,参数包含('eval_metric': 'logloss')
,则 evals_result 返回{'train': {'logloss': ['0.48253', '0.35953']}, 'eval': {'logloss': ['0.480385', '0.357756']}}
verbose_eval (bool | int | None) –
evals 中至少需要一个项目。
如果 verbose_eval 为 True,则在每个提升阶段打印验证集上的评估指标。
如果 verbose_eval 是一个整数,则在每给定 verbose_eval 个提升阶段打印验证集上的评估指标。最后一个提升阶段/使用 early_stopping_rounds 找到的提升阶段也会被打印。
示例:设置
verbose_eval=4
并在 evals 中至少有一个项目,则每 4 个提升阶段打印一次评估指标,而不是每个提升阶段。xgb_model (str | PathLike | Booster | bytearray | None) – 训练前加载的 XGB 模型(允许训练继续)。
callbacks (Sequence[TrainingCallback] | None) –
在每次迭代结束时应用的 callback 函数列表。可以使用 Callback API 中预定义的回调。
注意
callback 中的状态在训练期间不会保留,这意味着 callback 对象不能在未经重新初始化或深拷贝的情况下重复用于多个训练会话。
for params in parameters_grid: # be sure to (re)initialize the callbacks before each run callbacks = [xgb.callback.LearningRateScheduler(custom_rates)] xgboost.train(params, Xy, callbacks=callbacks)
custom_metric (Callable[[ndarray, DMatrix], Tuple[str, float]] | None) –
自定义评估指标函数。有关详细信息,请参阅 Custom Metric。使用内置目标时,该指标接收转换后的预测(应用反向链接函数后),使用自定义目标时则接收原始输出。
- 返回:
Booster
- 返回类型:
一个训练好的 booster 模型
- xgboost.cv(params, dtrain, num_boost_round=10, *, nfold=3, stratified=False, folds=None, metrics=(), obj=None, maximize=None, early_stopping_rounds=None, fpreproc=None, as_pandas=True, verbose_eval=None, show_stdv=True, seed=0, callbacks=None, shuffle=True, custom_metric=None)
使用给定参数进行交叉验证。
- 参数:
params (dict) – Booster 参数。
num_boost_round (int) – 提升迭代次数。
nfold (int) – CV 中的折叠数。
stratified (bool) – 执行分层抽样。
folds (a KFold or StratifiedKFold instance or list of fold indices) – Sklearn KFolds 或 StratifiedKFolds 对象。或者可以显式传递每个折叠的样本索引。对于
n
个折叠,folds 应该是一个长度为n
的元组列表。每个元组是(in,out)
,其中in
是用于第n
个折叠的训练样本索引列表,out
是用于第n
个折叠的测试样本索引列表。metrics (string or list of strings) – 在 CV 中要关注的评估指标。
obj (Callable[[ndarray, DMatrix], Tuple[ndarray, ndarray]] | None) – 自定义目标函数。有关详细信息,请参阅 Custom Objective。
maximize (bool) – 是否最大化评估指标(得分或误差)。
early_stopping_rounds (int) – 激活提前停止。交叉验证指标(在 CV 折叠上计算的验证指标平均值)需要在每 early_stopping_rounds 轮中至少改进一次以继续训练。评估历史中的最后一个条目将代表最佳迭代。如果在 params 中给定的 eval_metric 参数中有多个指标,则使用最后一个指标进行提前停止。
fpreproc (function) – 预处理函数,接受 (dtrain, dtest, param) 并返回转换后的版本。
as_pandas (bool, default True) – 如果安装了 pandas,则返回 pd.DataFrame。如果为 False 或未安装 pandas,则返回 np.ndarray
verbose_eval (bool, int, or None, default None) – 是否显示进度。如果为 None,当返回 np.ndarray 时将显示进度。如果为 True,将在提升阶段显示进度。如果给定一个整数,则在每给定 verbose_eval 个提升阶段显示进度。
show_stdv (bool, default True) – 是否在进度中显示标准差。结果不受影响,并且始终包含标准差。
seed (int) – 用于生成折叠的种子(传递给 numpy.random.seed)。
callbacks (Sequence[TrainingCallback] | None) –
在每次迭代结束时应用的 callback 函数列表。可以使用 Callback API 中预定义的回调。
注意
callback 中的状态在训练期间不会保留,这意味着 callback 对象不能在未经重新初始化或深拷贝的情况下重复用于多个训练会话。
for params in parameters_grid: # be sure to (re)initialize the callbacks before each run callbacks = [xgb.callback.LearningRateScheduler(custom_rates)] xgboost.train(params, Xy, callbacks=callbacks)
shuffle (bool) – 在创建折叠之前打乱数据。
custom_metric (Callable[[ndarray, DMatrix], Tuple[str, float]] | None) –
自定义评估指标函数。有关详细信息,请参阅 Custom Metric。
- 返回:
评估历史
- 返回类型:
list(string)
Scikit-Learn API
XGBoost 的 Scikit-Learn Wrapper 接口。
- class xgboost.XGBRegressor(*, objective='reg:squarederror', **kwargs)
基类:
RegressorMixin
,XGBModel
XGBoost 回归的 scikit-learn API 实现。有关更多信息,请参阅 Using the Scikit-Learn Estimator Interface。
- 参数:
树生长策略。
depthwise: 倾向于在最靠近根节点的节点处进行分裂,
lossguide: 倾向于在损失变化最大的节点处进行分裂。
objective (Union[str, xgboost.sklearn._SklObjWProto, Callable[[Any, Any], Tuple[numpy.ndarray, numpy.ndarray]], NoneType]) –
指定要使用的学习任务和相应的学习目标或自定义目标函数。
对于自定义目标,有关详细信息以及函数签名的末尾注释,请参阅 Custom Objective and Evaluation Metric 和 Custom objective and metric。
booster (Optional[str]) – 指定使用哪个 booster:
gbtree
、gblinear
或dart
。tree_method (Optional[str]) – 指定使用哪个树方法。默认为 auto。如果此参数设置为 default,XGBoost 将选择最保守的可用选项。建议从参数文档 tree method 中研究此选项。
n_jobs (Optional[int]) – 用于运行 XGBoost 的并行线程数。与其他 Scikit-Learn 算法(如网格搜索)一起使用时,您可以选择并行化哪个算法并平衡线程。创建线程争用将显著降低两种算法的速度。
gamma (Optional[float]) – (min_split_loss) 在树的叶节点上进行进一步划分所需的最小损失减少量。
min_child_weight (Optional[float]) – 子节点中所需的最小实例权重 (hessian) 总和。
sampling_method (Optional[str]) –
采样方法。仅由
hist
树方法的 GPU 版本使用。uniform
: 均匀随机选择训练实例。gradient_based
: 在梯度和 Hessian 较大时以更高概率随机选择训练实例。(参见 CatBoost)当梯度和 Hessian 值较大时。(参见 CatBoost)
random_state (Union[numpy.random.mtrand.RandomState, numpy.random._generator.Generator, int, NoneType]) –
随机数种子。
注意
使用带有 shotgun 更新器的 gblinear booster 是非确定性的,因为它使用 Hogwild 算法。
monotone_constraints (Union[Dict[str, int], str, NoneType]) – 变量单调性的约束。有关详细信息,请参阅 tutorial。
interaction_constraints (Union[str, List[Tuple[str]], NoneType]) – 表示允许交互的交互约束。约束必须以嵌套列表的形式指定,例如
[[0, 1], [2, 3, 4]]
,其中每个内部列表是一组允许相互交互的特征索引。有关更多信息,请参阅 tutorial。importance_type (Optional[str]) –
feature_importances_ 属性的特征重要性类型
对于树模型,可以是“gain”、“weight”、“cover”、“total_gain”或“total_cover”。
对于线性模型,仅定义了“weight”,它是去除偏差后的归一化系数。
在 2.0.0 版本中新增。
设备序号,可用选项有 cpu、cuda 和 gpu。
feature_types (Optional[Sequence[str]]) –
在 1.7.0 版本中新增。
用于在不构建 dataframe 的情况下指定特征类型。有关详细信息,请参阅
DMatrix
。feature_weights (Optional[ArrayLike]) – 每个特征的权重,定义在使用 colsample 时选择每个特征的概率。所有值必须大于 0,否则抛出 ValueError。
max_cat_to_onehot (Optional[int]) –
在 1.6.0 版本中新增。
注意
此参数为实验性
决定 XGBoost 是否应对分类数据使用 one-hot 编码分割的阈值。当类别数量小于阈值时,选择 one-hot 编码,否则类别将被划分到子节点中。此外,需要设置 enable_categorical 才能支持分类特征。有关详细信息,请参阅 Categorical Data 和 Parameters for Categorical Feature。
max_cat_threshold (Optional[int]) –
在 1.7.0 版本中新增。
注意
此参数为实验性
每次分裂时考虑的最大类别数。仅用于基于分区的分裂,以防止过拟合。此外,需要设置 enable_categorical 才能支持分类特征。有关详细信息,请参阅 Categorical Data 和 Parameters for Categorical Feature。
multi_strategy (Optional[str]) –
在 2.0.0 版本中新增。
注意
此参数正在开发中。
用于训练多目标模型(包括多目标回归和多类分类)的策略。有关更多信息,请参阅 Multiple Outputs。
one_output_per_tree
: 每个目标一个模型。multi_output_tree
: 使用多目标树。
eval_metric (Union[str, List[str], Callable, NoneType]) –
在 1.6.0 版本中新增。
用于监控训练结果和提前停止的指标。它可以是字符串或字符串列表,作为 XGBoost 中预定义指标的名称(参见 XGBoost Parameters),也可以是
sklearn.metrics
中的指标之一,或者任何看起来像 sklearn.metrics 的用户自定义指标。如果同时提供了自定义目标,则自定义指标应实现相应的反向链接函数。
与 scikit-learn 中常用的 scoring 参数不同,当提供可调用对象时,它被认为是代价函数,XGBoost 默认会在提前停止期间最小化结果。
关于提前停止的高级用法,例如直接选择最大化而不是最小化,请参阅
xgboost.callback.EarlyStopping
。有关详细信息,请参阅 Custom Objective and Evaluation Metric 和 Custom objective and metric。
from sklearn.datasets import load_diabetes from sklearn.metrics import mean_absolute_error X, y = load_diabetes(return_X_y=True) reg = xgb.XGBRegressor( tree_method="hist", eval_metric=mean_absolute_error, ) reg.fit(X, y, eval_set=[(X, y)])
early_stopping_rounds (Optional[int]) –
在 1.6.0 版本中新增。
激活提前停止。为了继续训练,验证指标需要在每 early_stopping_rounds 轮中至少改进一次。要求
fit()
中的 eval_set 至少有一个项目。如果发生提前停止,模型将有两个额外的属性:
best_score
和best_iteration
。这些属性用于predict()
和apply()
方法,以确定推理期间的最佳树数量。如果用户想要访问完整模型(包括提前停止后构建的树),他们可以在这些推理方法中指定 iteration_range。此外,模型绘图等其他工具也可以使用整个模型。如果您更喜欢丢弃 best_iteration 之后的树,请考虑使用回调函数
xgboost.callback.EarlyStopping
。如果在 eval_set 中有多个项目,则使用最后一个条目进行提前停止。如果在 eval_metric 中有多个指标,则使用最后一个指标进行提前停止。
callbacks (Optional[List[xgboost.callback.TrainingCallback]]) –
在每次迭代结束时应用的 callback 函数列表。可以使用 Callback API 中预定义的回调。
注意
callback 中的状态在训练期间不会保留,这意味着 callback 对象不能在未经重新初始化或深拷贝的情况下重复用于多个训练会话。
for params in parameters_grid: # be sure to (re)initialize the callbacks before each run callbacks = [xgb.callback.LearningRateScheduler(custom_rates)] reg = xgboost.XGBRegressor(**params, callbacks=callbacks) reg.fit(X, y)
XGBoost Booster 对象的关键字参数。参数的完整文档可以在 这里 找到。尝试通过构造函数参数和 **kwargs 字典同时设置参数将导致 TypeError。
注意
**kwargs 不受 scikit-learn 支持
**kwargs 不受 scikit-learn 支持。我们不保证通过此参数传递的参数能与 scikit-learn 正确交互。
注意
自定义目标函数
可以为
objective
参数提供自定义目标函数。在这种情况下,它应该具有签名objective(y_true, y_pred) -> [grad, hess]
或objective(y_true, y_pred, *, sample_weight) -> [grad, hess]
- y_true: array_like of shape [n_samples]
目标值
- y_pred: array_like of shape [n_samples]
预测值
- sample_weight
可选的样本权重。
- grad: array_like of shape [n_samples]
每个样本点的梯度值。
- hess: array_like of shape [n_samples]
每个样本点的二阶导数值
请注意,如果自定义目标为 Hessian 产生负值,这些值将被裁剪。如果目标是非凸的,也可以考虑使用期望的 Hessian(Fisher 信息)。
- apply(X, iteration_range=None)
返回每个样本的每棵树预测到的叶子。如果模型通过提前停止进行训练,则自动使用
best_iteration
。- 参数:
- 返回:
X_leaves – 对于 X 中的每个数据点 x 和每棵树,返回 x 最终到达的叶子索引。叶子的编号在
[0; 2**(self.max_depth+1))
范围内,编号可能存在间隔。- 返回类型:
array_like, shape=[n_samples, n_trees]
- property coef_: ndarray
系数属性
注意
系数仅对线性学习器定义
系数仅在选择线性模型作为基础学习器 (booster=gblinear) 时定义。对于其他基础学习器类型(如树学习器,booster=gbtree)则未定义。
- 返回:
coef_
- 返回类型:
形状为
[n_features]
或[n_classes, n_features]
的数组
- evals_result()
返回评估结果。
如果将 eval_set 传递给
fit()
函数,您可以调用evals_result()
以获取所有传递的 eval_sets 的评估结果。当也将 eval_metric 传递给fit()
函数时,evals_result 将包含传递给fit()
函数的 eval_metrics。返回的评估结果是一个字典
{'validation_0': {'logloss': ['0.604835', '0.531479']}, 'validation_1': {'logloss': ['0.41965', '0.17686']}}
- 返回类型:
evals_result
- property feature_importances_: ndarray
特征重要性属性,返回值取决于 importance_type 参数。当模型使用多类/多标签/多目标数据集训练时,特征重要性是所有目标的“平均值”。“平均值”的定义基于重要性类型。例如,如果重要性类型是“total_gain”,则得分是所有树中每次分裂的损失变化总和。
- 返回:
feature_importances_ (形状为
[n_features]
的数组,多类除外)线性模型返回形状为 (n_features, n_classes) 的数组
- fit(X, y, *, sample_weight=None, base_margin=None, eval_set=None, verbose=True, xgb_model=None, sample_weight_eval_set=None, base_margin_eval_set=None, feature_weights=None)
拟合梯度提升模型。
请注意,多次调用
fit()
将导致模型对象从头开始重新拟合。要从上一个检查点继续训练,请显式传递xgb_model
参数。- 参数:
X (Any) –
输入特征矩阵。有关支持的类型列表,请参见 Supported data structures for various XGBoost functions。
当
tree_method
设置为hist
时,内部将使用QuantileDMatrix
而不是DMatrix
以节省内存。但是,当输入数据设备与算法不匹配时,这会影响性能。例如,如果输入是 CPU 上的 numpy 数组但使用cuda
进行训练,则数据首先在 CPU 上处理,然后传输到 GPU。y (Any) – 标签
sample_weight (Any | None) – 实例权重
eval_set (Sequence[Tuple[Any, Any]] | None) – 用作验证集 (X, y) 元组对的列表,将计算这些验证集的指标。验证指标将帮助我们跟踪模型的性能。
verbose (bool | int | None) – 如果 verbose 为 True 且使用了评估集,则在每个提升阶段将验证集上衡量的评估指标打印到 stdout。如果 verbose 是一个整数,则在每 verbose 个提升阶段打印评估指标。使用 early_stopping_rounds 找到的最后一个提升阶段/提升阶段也会被打印。
xgb_model (Booster | XGBModel | str | None) – 要加载的文件名或 ‘Booster’ 实例 XGBoost 模型,可在训练前加载(允许继续训练)。
sample_weight_eval_set (Sequence[Any] | None) – 形式为 [L_1, L_2, …, L_n] 的列表,其中每个 L_i 是一个类数组对象,存储第 i 个验证集的实例权重。
base_margin_eval_set (Sequence[Any] | None) – 形式为 [M_1, M_2, …, M_n] 的列表,其中每个 M_i 是一个类数组对象,存储第 i 个验证集的基准边距 (base margin)。
feature_weights (Any | None) –
自 3.0.0 版本起已弃用。
请改用
__init__()
或set_params()
中的 feature_weights。
- 返回类型:
XGBModel
- get_booster()
获取此模型底层的 xgboost Booster。
如果在 fit 方法未被调用时,这将引发异常。
- 返回:
booster
- 返回类型:
底层模型的 xgboost Booster 实例
- get_metadata_routing()
获取此对象的元数据路由。
请查阅用户指南,了解路由机制的工作原理。
- 返回:
routing – 一个
MetadataRequest
,封装了路由信息。- 返回类型:
MetadataRequest
- property intercept_: ndarray
截距(偏差)属性
对于基于树的模型,返回的值是 base_score。
- 返回:
intercept_
- 返回类型:
形状为
(1,)
或[n_classes]
的数组
- load_model(fname)
从文件或 bytearray 加载模型。
模型以 XGBoost 内部格式保存,该格式在各种 XGBoost 接口中通用。Python Booster 对象的辅助属性(例如 feature_names)仅在使用 JSON 或 UBJSON(默认)格式时保存。此外,不属于模型的参数(如指标、
max_depth
等)不会保存,有关更多信息,请参阅 Model IO。model.save_model("model.json") model.load_model("model.json") # or model.save_model("model.ubj") model.load_model("model.ubj") # or buf = model.save_raw() model.load_model(buf)
- predict(X, *, output_margin=False, validate_features=True, base_margin=None, iteration_range=None)
使用 X 进行预测。如果模型使用早停训练,则自动使用
best_iteration
。估计器默认使用 inplace_predict,如果数据与估计器之间的设备不匹配,则回退到使用DMatrix
。注意
此函数仅对 gbtree 和 dart 线程安全。
- 参数:
X (Any) – 用于预测的数据。有关支持的类型列表,请参阅各种 XGBoost 函数支持的数据结构。
output_margin (bool) – 是否输出原始未转换的 margin 值。
validate_features (bool) – 当此参数设置为 True 时,验证 Booster 和数据的 feature_names 是否完全一致。否则,假设 feature_names 是相同的。
iteration_range (Tuple[int | integer, int | integer] | None) –
指定预测中使用哪一层树。例如,如果随机森林训练了 100 轮。指定
iteration_range=(10, 20)
,则在此预测中仅使用在 [10, 20)(左闭右开区间)轮次期间构建的森林。在 1.4.0 版本中新增。
- 返回类型:
prediction
- save_model(fname)
将模型保存到文件。
模型以 XGBoost 内部格式保存,该格式在各种 XGBoost 接口中通用。Python Booster 对象的辅助属性(例如 feature_names)仅在使用 JSON 或 UBJSON(默认)格式时保存。此外,不属于模型的参数(如指标、
max_depth
等)不会保存,有关更多信息,请参阅 Model IO。model.save_model("model.json") # or model.save_model("model.ubj")
- score(X, y, sample_weight=None)
返回预测的决定系数 (coefficient of determination)。
决定系数 \(R^2\) 定义为 \((1 - \frac{u}{v})\),其中 \(u\) 是残差平方和
((y_true - y_pred)** 2).sum()
,\(v\) 是总平方和((y_true - y_true.mean()) ** 2).sum()
。最佳分数是 1.0,它也可以是负数(因为模型可能任意差)。忽略输入特征,总是预测 y 的期望值的常数模型将获得 0.0 的 \(R^2\) 分数。- 参数:
X (array-like of shape (n_samples, n_features)) – 测试样本。对于某些估计器,这可能是预计算的核矩阵,或者形状为
(n_samples, n_samples_fitted)
的通用对象列表,其中n_samples_fitted
是估计器拟合中使用的样本数量。y (array-like of shape (n_samples,) or (n_samples, n_outputs)) – X 的真实值。
sample_weight (array-like of shape (n_samples,), default=None) – 样本权重。
- 返回:
score –
self.predict(X)
相对于 y 的 \(R^2\) 值。- 返回类型:
注意
在回归器上调用
score
时使用的 \(R^2\) 分数从 0.23 版本开始使用multioutput='uniform_average'
,以便与r2_score()
的默认值保持一致。这会影响所有多输出回归器(MultiOutputRegressor
除外)的score
方法。
- set_fit_request(*, base_margin='$UNCHANGED$', base_margin_eval_set='$UNCHANGED$', eval_set='$UNCHANGED$', feature_weights='$UNCHANGED$', sample_weight='$UNCHANGED$', sample_weight_eval_set='$UNCHANGED$', verbose='$UNCHANGED$', xgb_model='$UNCHANGED$')
请求传递给
fit
方法的元数据。请注意,此方法仅在
enable_metadata_routing=True
时相关(参见sklearn.set_config()
)。请参阅用户指南,了解路由机制的工作原理。每个参数的选项如下:
True
: 请求元数据,如果提供,则传递给fit
。如果未提供元数据,则忽略该请求。False
: 不请求元数据,元估计器不会将其传递给fit
。None
: 不请求元数据,如果用户提供了元数据,元估计器将引发错误。str
: 应使用给定的别名而不是原始名称将元数据传递给元估计器。
默认值 (
sklearn.utils.metadata_routing.UNCHANGED
) 保留现有请求。这允许您更改某些参数的请求而不更改其他参数。添加于 1.3 版本。
注意
此方法仅在此估计器用作元估计器的子估计器时相关,例如在
Pipeline
中使用时。否则,它无效。- 参数:
base_margin (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于
fit
方法中base_margin
参数的元数据路由。base_margin_eval_set (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于
fit
方法中base_margin_eval_set
参数的元数据路由。eval_set (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于
fit
方法中eval_set
参数的元数据路由。feature_weights (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于
fit
方法中feature_weights
参数的元数据路由。sample_weight (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于
fit
方法中sample_weight
参数的元数据路由。sample_weight_eval_set (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于
fit
方法中sample_weight_eval_set
参数的元数据路由。verbose (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于
fit
方法中verbose
参数的元数据路由。xgb_model (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于
fit
方法中xgb_model
参数的元数据路由。self (XGBRegressor)自身
- 返回:
self – 更新后的对象。
- 返回类型:
- set_params(**params)
设置此估计器的参数。修改了 sklearn 方法以允许未知关键字参数。这使得在 sklearn 网格搜索中可以使用未定义为成员变量的全部 xgboost 参数范围。
- 返回类型:
自身
- 参数:
params (Any)
- set_predict_request(*, base_margin='$UNCHANGED$', iteration_range='$UNCHANGED$', output_margin='$UNCHANGED$', validate_features='$UNCHANGED$')
请求传递给
predict
方法的元数据。请注意,此方法仅在
enable_metadata_routing=True
时相关(参见sklearn.set_config()
)。请参阅用户指南,了解路由机制的工作原理。每个参数的选项如下:
True
: 请求元数据,如果提供,则传递给predict
。如果未提供元数据,则忽略该请求。False
: 不请求元数据,元估计器不会将其传递给predict
。None
: 不请求元数据,如果用户提供了元数据,元估计器将引发错误。str
: 应使用给定的别名而不是原始名称将元数据传递给元估计器。
默认值 (
sklearn.utils.metadata_routing.UNCHANGED
) 保留现有请求。这允许您更改某些参数的请求而不更改其他参数。添加于 1.3 版本。
注意
此方法仅在此估计器用作元估计器的子估计器时相关,例如在
Pipeline
中使用时。否则,它无效。- 参数:
base_margin (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于
predict
方法中base_margin
参数的元数据路由。iteration_range (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于
predict
方法中iteration_range
参数的元数据路由。output_margin (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于
predict
方法中output_margin
参数的元数据路由。validate_features (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于
predict
方法中validate_features
参数的元数据路由。self (XGBRegressor)自身
- 返回:
self – 更新后的对象。
- 返回类型:
- set_score_request(*, sample_weight='$UNCHANGED$')
请求传递给
score
方法的元数据。请注意,此方法仅在
enable_metadata_routing=True
时相关(参见sklearn.set_config()
)。请参阅用户指南,了解路由机制的工作原理。每个参数的选项如下:
True
: 请求元数据,如果提供,则传递给score
。如果未提供元数据,则忽略该请求。False
: 不请求元数据,元估计器不会将其传递给score
。None
: 不请求元数据,如果用户提供了元数据,元估计器将引发错误。str
: 应使用给定的别名而不是原始名称将元数据传递给元估计器。
默认值 (
sklearn.utils.metadata_routing.UNCHANGED
) 保留现有请求。这允许您更改某些参数的请求而不更改其他参数。添加于 1.3 版本。
注意
此方法仅在此估计器用作元估计器的子估计器时相关,例如在
Pipeline
中使用时。否则,它无效。- 参数:
sample_weight (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于
score
方法中sample_weight
参数的元数据路由。self (XGBRegressor)自身
- 返回:
self – 更新后的对象。
- 返回类型:
- class xgboost.XGBClassifier(*, objective='binary:logistic', **kwargs)
Bases:
ClassifierMixin
,XGBModel
XGBoost 分类器的 scikit-learn API 实现。有关更多信息,请参阅使用 Scikit-Learn 估计器接口。
- 参数:
n_estimators (Optional[int]) – 提升轮次 (boosting rounds) 的数量。
树生长策略。
depthwise: 倾向于在最靠近根节点的节点处进行分裂,
lossguide: 倾向于在损失变化最大的节点处进行分裂。
objective (Union[str, xgboost.sklearn._SklObjWProto, Callable[[Any, Any], Tuple[numpy.ndarray, numpy.ndarray]], NoneType]) –
指定要使用的学习任务和相应的学习目标或自定义目标函数。
对于自定义目标,有关详细信息以及函数签名的末尾注释,请参阅 Custom Objective and Evaluation Metric 和 Custom objective and metric。
booster (Optional[str]) – 指定使用哪个 booster:
gbtree
、gblinear
或dart
。tree_method (Optional[str]) – 指定使用哪个树方法。默认为 auto。如果此参数设置为 default,XGBoost 将选择最保守的可用选项。建议从参数文档 tree method 中研究此选项。
n_jobs (Optional[int]) – 用于运行 XGBoost 的并行线程数。与其他 Scikit-Learn 算法(如网格搜索)一起使用时,您可以选择并行化哪个算法并平衡线程。创建线程争用将显著降低两种算法的速度。
gamma (Optional[float]) – (min_split_loss) 在树的叶节点上进行进一步划分所需的最小损失减少量。
min_child_weight (Optional[float]) – 子节点中所需的最小实例权重 (hessian) 总和。
sampling_method (Optional[str]) –
采样方法。仅由
hist
树方法的 GPU 版本使用。uniform
: 均匀随机选择训练实例。gradient_based
: 在梯度和 Hessian 较大时以更高概率随机选择训练实例。(参见 CatBoost)当梯度和 Hessian 值较大时。(参见 CatBoost)
random_state (Union[numpy.random.mtrand.RandomState, numpy.random._generator.Generator, int, NoneType]) –
随机数种子。
注意
使用带有 shotgun 更新器的 gblinear booster 是非确定性的,因为它使用 Hogwild 算法。
monotone_constraints (Union[Dict[str, int], str, NoneType]) – 变量单调性的约束。有关详细信息,请参阅 tutorial。
interaction_constraints (Union[str, List[Tuple[str]], NoneType]) – 表示允许交互的交互约束。约束必须以嵌套列表的形式指定,例如
[[0, 1], [2, 3, 4]]
,其中每个内部列表是一组允许相互交互的特征索引。有关更多信息,请参阅 tutorial。importance_type (Optional[str]) –
feature_importances_ 属性的特征重要性类型
对于树模型,可以是“gain”、“weight”、“cover”、“total_gain”或“total_cover”。
对于线性模型,仅定义了“weight”,它是去除偏差后的归一化系数。
在 2.0.0 版本中新增。
设备序号,可用选项有 cpu、cuda 和 gpu。
feature_types (Optional[Sequence[str]]) –
在 1.7.0 版本中新增。
用于在不构建 dataframe 的情况下指定特征类型。有关详细信息,请参阅
DMatrix
。feature_weights (Optional[ArrayLike]) – 每个特征的权重,定义在使用 colsample 时选择每个特征的概率。所有值必须大于 0,否则抛出 ValueError。
max_cat_to_onehot (Optional[int]) –
在 1.6.0 版本中新增。
注意
此参数为实验性
决定 XGBoost 是否应对分类数据使用 one-hot 编码分割的阈值。当类别数量小于阈值时,选择 one-hot 编码,否则类别将被划分到子节点中。此外,需要设置 enable_categorical 才能支持分类特征。有关详细信息,请参阅 Categorical Data 和 Parameters for Categorical Feature。
max_cat_threshold (Optional[int]) –
在 1.7.0 版本中新增。
注意
此参数为实验性
每次分裂时考虑的最大类别数。仅用于基于分区的分裂,以防止过拟合。此外,需要设置 enable_categorical 才能支持分类特征。有关详细信息,请参阅 Categorical Data 和 Parameters for Categorical Feature。
multi_strategy (Optional[str]) –
在 2.0.0 版本中新增。
注意
此参数正在开发中。
用于训练多目标模型(包括多目标回归和多类分类)的策略。有关更多信息,请参阅 Multiple Outputs。
one_output_per_tree
: 每个目标一个模型。multi_output_tree
: 使用多目标树。
eval_metric (Union[str, List[str], Callable, NoneType]) –
在 1.6.0 版本中新增。
用于监控训练结果和提前停止的指标。它可以是字符串或字符串列表,作为 XGBoost 中预定义指标的名称(参见 XGBoost Parameters),也可以是
sklearn.metrics
中的指标之一,或者任何看起来像 sklearn.metrics 的用户自定义指标。如果同时提供了自定义目标,则自定义指标应实现相应的反向链接函数。
与 scikit-learn 中常用的 scoring 参数不同,当提供可调用对象时,它被认为是代价函数,XGBoost 默认会在提前停止期间最小化结果。
关于提前停止的高级用法,例如直接选择最大化而不是最小化,请参阅
xgboost.callback.EarlyStopping
。有关详细信息,请参阅 Custom Objective and Evaluation Metric 和 Custom objective and metric。
from sklearn.datasets import load_diabetes from sklearn.metrics import mean_absolute_error X, y = load_diabetes(return_X_y=True) reg = xgb.XGBRegressor( tree_method="hist", eval_metric=mean_absolute_error, ) reg.fit(X, y, eval_set=[(X, y)])
early_stopping_rounds (Optional[int]) –
在 1.6.0 版本中新增。
激活早停。验证指标需要在每 early_stopping_rounds 轮次中至少改进一次才能继续训练。需要在
fit()
中至少有一个 eval_set 项目。如果发生早停,模型将有两个额外的属性:
best_score
和best_iteration
。这些属性被predict()
和apply()
方法用于在推理期间确定最佳树的数量。如果用户想访问完整模型(包括早停后构建的树),可以在这些推理方法中指定 iteration_range。此外,其他工具,如模型绘图,也可以使用整个模型。如果您更喜欢丢弃 best_iteration 之后的树,请考虑使用回调函数
xgboost.callback.EarlyStopping
。如果在 eval_set 中有多个项目,则使用最后一个条目进行提前停止。如果在 eval_metric 中有多个指标,则使用最后一个指标进行提前停止。
callbacks (Optional[List[xgboost.callback.TrainingCallback]]) –
在每次迭代结束时应用的 callback 函数列表。可以使用 Callback API 中预定义的回调。
注意
callback 中的状态在训练期间不会保留,这意味着 callback 对象不能在未经重新初始化或深拷贝的情况下重复用于多个训练会话。
for params in parameters_grid: # be sure to (re)initialize the callbacks before each run callbacks = [xgb.callback.LearningRateScheduler(custom_rates)] reg = xgboost.XGBRegressor(**params, callbacks=callbacks) reg.fit(X, y)
XGBoost Booster 对象的关键字参数。参数的完整文档可以在 这里 找到。尝试通过构造函数参数和 **kwargs 字典同时设置参数将导致 TypeError。
注意
**kwargs 不受 scikit-learn 支持
**kwargs 不受 scikit-learn 支持。我们不保证通过此参数传递的参数能与 scikit-learn 正确交互。
注意
自定义目标函数
可以为
objective
参数提供自定义目标函数。在这种情况下,它应该具有签名objective(y_true, y_pred) -> [grad, hess]
或objective(y_true, y_pred, *, sample_weight) -> [grad, hess]
- y_true: array_like of shape [n_samples]
目标值
- y_pred: array_like of shape [n_samples]
预测值
- sample_weight
可选的样本权重。
- grad: array_like of shape [n_samples]
每个样本点的梯度值。
- hess: array_like of shape [n_samples]
每个样本点的二阶导数值
请注意,如果自定义目标为 Hessian 产生负值,这些值将被裁剪。如果目标是非凸的,也可以考虑使用期望的 Hessian(Fisher 信息)。
- apply(X, iteration_range=None)
返回每个样本在每棵树上的预测叶子。如果模型使用早停训练,则自动使用
best_iteration
。- 参数:
- 返回:
X_leaves – 对于 X 中的每个数据点 x 和每棵树,返回 x 最终到达的叶子索引。叶子的编号在
[0; 2**(self.max_depth+1))
范围内,编号可能存在间隔。- 返回类型:
array_like, shape=[n_samples, n_trees]
- property coef_: ndarray
系数属性
注意
系数仅对线性学习器定义
系数仅在选择线性模型作为基础学习器 (booster=gblinear) 时定义。对于其他基础学习器类型(如树学习器,booster=gbtree)则未定义。
- 返回:
coef_
- 返回类型:
形状为
[n_features]
或[n_classes, n_features]
的数组
- evals_result()
返回评估结果。
如果将 eval_set 传递给
fit()
函数,您可以调用evals_result()
来获取所有传递的 eval_sets 的评估结果。当同时将 eval_metric 传递给fit()
函数时,evals_result 将包含传递给fit()
函数的 eval_metrics。返回的评估结果是一个字典
{'validation_0': {'logloss': ['0.604835', '0.531479']}, 'validation_1': {'logloss': ['0.41965', '0.17686']}}
- 返回类型:
evals_result
- property feature_importances_: ndarray
特征重要性属性,返回值取决于 importance_type 参数。当模型使用多类/多标签/多目标数据集训练时,特征重要性是所有目标的“平均值”。“平均值”的定义基于重要性类型。例如,如果重要性类型是“total_gain”,则得分是所有树中每次分裂的损失变化总和。
- 返回:
feature_importances_ (形状为
[n_features]
的数组,多类除外)线性模型返回形状为 (n_features, n_classes) 的数组
- fit(X, y, *, sample_weight=None, base_margin=None, eval_set=None, verbose=True, xgb_model=None, sample_weight_eval_set=None, base_margin_eval_set=None, feature_weights=None)
拟合梯度提升分类器。
请注意,多次调用
fit()
将导致模型对象从头开始重新拟合。要从上一个检查点继续训练,请显式传递xgb_model
参数。- 参数:
X (Any) –
输入特征矩阵。有关支持的类型列表,请参见 Supported data structures for various XGBoost functions。
当
tree_method
设置为hist
时,内部将使用QuantileDMatrix
而不是DMatrix
以节省内存。但是,当输入数据设备与算法不匹配时,这会影响性能。例如,如果输入是 CPU 上的 numpy 数组但使用cuda
进行训练,则数据首先在 CPU 上处理,然后传输到 GPU。y (Any) – 标签
sample_weight (Any | None) – 实例权重
eval_set (Sequence[Tuple[Any, Any]] | None) – 用作验证集 (X, y) 元组对的列表,将计算这些验证集的指标。验证指标将帮助我们跟踪模型的性能。
verbose (bool | int | None) – 如果 verbose 为 True 且使用了评估集,则在每个提升阶段将验证集上衡量的评估指标打印到 stdout。如果 verbose 是一个整数,则在每 verbose 个提升阶段打印评估指标。使用 early_stopping_rounds 找到的最后一个提升阶段/提升阶段也会被打印。
xgb_model (Booster | str | XGBModel | None) – 要加载的文件名或 ‘Booster’ 实例 XGBoost 模型,可在训练前加载(允许继续训练)。
sample_weight_eval_set (Sequence[Any] | None) – 形式为 [L_1, L_2, …, L_n] 的列表,其中每个 L_i 是一个类数组对象,存储第 i 个验证集的实例权重。
base_margin_eval_set (Sequence[Any] | None) – 形式为 [M_1, M_2, …, M_n] 的列表,其中每个 M_i 是一个类数组对象,存储第 i 个验证集的基准边距 (base margin)。
feature_weights (Any | None) –
自 3.0.0 版本起已弃用。
请改用
__init__()
或set_params()
中的 feature_weights。
- 返回类型:
- get_booster()
获取此模型底层的 xgboost Booster。
如果在 fit 方法未被调用时,这将引发异常。
- 返回:
booster
- 返回类型:
底层模型的 xgboost Booster 实例
- get_metadata_routing()
获取此对象的元数据路由。
请查阅用户指南,了解路由机制的工作原理。
- 返回:
routing – 一个
MetadataRequest
,封装了路由信息。- 返回类型:
MetadataRequest
- property intercept_: ndarray
截距(偏差)属性
对于基于树的模型,返回的值是 base_score。
- 返回:
intercept_
- 返回类型:
形状为
(1,)
或[n_classes]
的数组
- load_model(fname)
从文件或 bytearray 加载模型。
模型以 XGBoost 内部格式保存,该格式在各种 XGBoost 接口中通用。Python Booster 对象的辅助属性(例如 feature_names)仅在使用 JSON 或 UBJSON(默认)格式时保存。此外,不属于模型的参数(如指标、
max_depth
等)不会保存,有关更多信息,请参阅 Model IO。model.save_model("model.json") model.load_model("model.json") # or model.save_model("model.ubj") model.load_model("model.ubj") # or buf = model.save_raw() model.load_model(buf)
- predict(X, *, output_margin=False, validate_features=True, base_margin=None, iteration_range=None)
使用 X 进行预测。如果模型使用早停训练,则自动使用
best_iteration
。估计器默认使用 inplace_predict,如果数据与估计器之间的设备不匹配,则回退到使用DMatrix
。注意
此函数仅对 gbtree 和 dart 线程安全。
- 参数:
X (Any) – 用于预测的数据。有关支持的类型列表,请参阅各种 XGBoost 函数支持的数据结构。
output_margin (bool) – 是否输出原始未转换的 margin 值。
validate_features (bool) – 当此参数设置为 True 时,验证 Booster 和数据的 feature_names 是否完全一致。否则,假设 feature_names 是相同的。
iteration_range (Tuple[int | integer, int | integer] | None) –
指定预测中使用哪一层树。例如,如果随机森林训练了 100 轮。指定
iteration_range=(10, 20)
,则在此预测中仅使用在 [10, 20)(左闭右开区间)轮次期间构建的森林。在 1.4.0 版本中新增。
- 返回类型:
prediction
- predict_proba(X, validate_features=True, base_margin=None, iteration_range=None)
预测每个 X 样本属于给定类别的概率。如果模型使用早停训练,则自动使用
best_iteration
。估计器默认使用 inplace_predict,如果数据与估计器之间的设备不匹配,则回退到使用DMatrix
。注意
此函数仅对 gbtree 和 dart 线程安全。
- 参数:
X (Any) – 特征矩阵。有关支持的类型列表,请参阅各种 XGBoost 函数支持的数据结构。
validate_features (bool) – 当此参数设置为 True 时,验证 Booster 和数据的 feature_names 是否完全一致。否则,假设 feature_names 是相同的。
iteration_range (Tuple[int | integer, int | integer] | None) – 指定预测中使用哪一层树。例如,如果随机森林训练了 100 轮。指定 iteration_range=(10, 20),则在此预测中仅使用在 [10, 20)(左闭右开区间)轮次期间构建的森林。
- 返回:
一个 numpy 数组,形状类似数组,形状为 (n_samples, n_classes),包含每个数据样本属于给定类别的概率。
- 返回类型:
prediction
- save_model(fname)
将模型保存到文件。
模型以 XGBoost 内部格式保存,该格式在各种 XGBoost 接口中通用。Python Booster 对象的辅助属性(例如 feature_names)仅在使用 JSON 或 UBJSON(默认)格式时保存。此外,不属于模型的参数(如指标、
max_depth
等)不会保存,有关更多信息,请参阅 Model IO。model.save_model("model.json") # or model.save_model("model.ubj")
- score(X, y, sample_weight=None)
返回给定测试数据和标签的平均准确率。
在多标签分类中,这是子集准确率,这是一个严格的指标,因为它要求每个样本的每个标签集合都被正确预测。
- 参数:
X (array-like of shape (n_samples, n_features)) – 测试样本。
y (array-like of shape (n_samples,) or (n_samples, n_outputs)) – X 的真实标签。
sample_weight (array-like of shape (n_samples,), default=None) – 样本权重。
- 返回:
score –
self.predict(X)
相对于 y 的平均准确率。- 返回类型:
- set_fit_request(*, base_margin='$UNCHANGED$', base_margin_eval_set='$UNCHANGED$', eval_set='$UNCHANGED$', feature_weights='$UNCHANGED$', sample_weight='$UNCHANGED$', sample_weight_eval_set='$UNCHANGED$', verbose='$UNCHANGED$', xgb_model='$UNCHANGED$')
请求传递给
fit
方法的元数据。请注意,此方法仅在
enable_metadata_routing=True
时相关(参见sklearn.set_config()
)。请参阅用户指南,了解路由机制的工作原理。每个参数的选项如下:
True
: 请求元数据,如果提供,则传递给fit
。如果未提供元数据,则忽略该请求。False
: 不请求元数据,元估计器不会将其传递给fit
。None
: 不请求元数据,如果用户提供了元数据,元估计器将引发错误。str
: 应使用给定的别名而不是原始名称将元数据传递给元估计器。
默认值 (
sklearn.utils.metadata_routing.UNCHANGED
) 保留现有请求。这允许您更改某些参数的请求而不更改其他参数。添加于 1.3 版本。
注意
此方法仅在此估计器用作元估计器的子估计器时相关,例如在
Pipeline
中使用时。否则,它无效。- 参数:
base_margin (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于
fit
方法中base_margin
参数的元数据路由。base_margin_eval_set (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于
fit
方法中base_margin_eval_set
参数的元数据路由。eval_set (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于
fit
方法中eval_set
参数的元数据路由。feature_weights (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于
fit
方法中feature_weights
参数的元数据路由。sample_weight (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于
fit
方法中sample_weight
参数的元数据路由。sample_weight_eval_set (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于
fit
方法中sample_weight_eval_set
参数的元数据路由。verbose (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于
fit
方法中verbose
参数的元数据路由。xgb_model (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于
fit
方法中xgb_model
参数的元数据路由。self (XGBClassifier)自身
- 返回:
self – 更新后的对象。
- 返回类型:
- set_params(**params)
设置此估计器的参数。修改了 sklearn 方法以允许未知关键字参数。这使得在 sklearn 网格搜索中可以使用未定义为成员变量的全部 xgboost 参数范围。
- 返回类型:
自身
- 参数:
params (Any)
- set_predict_proba_request(*, base_margin='$UNCHANGED$', iteration_range='$UNCHANGED$', validate_features='$UNCHANGED$')
请求传递给
predict_proba
方法的元数据。请注意,此方法仅在
enable_metadata_routing=True
时相关(参见sklearn.set_config()
)。请参阅用户指南,了解路由机制的工作原理。每个参数的选项如下:
True
: 请求元数据,如果提供,则传递给predict_proba
。如果未提供元数据,则忽略该请求。False
: 不请求元数据,元估计器不会将其传递给predict_proba
。None
: 不请求元数据,如果用户提供了元数据,元估计器将引发错误。str
: 应使用给定的别名而不是原始名称将元数据传递给元估计器。
默认值 (
sklearn.utils.metadata_routing.UNCHANGED
) 保留现有请求。这允许您更改某些参数的请求而不更改其他参数。添加于 1.3 版本。
注意
此方法仅在此估计器用作元估计器的子估计器时相关,例如在
Pipeline
中使用时。否则,它无效。- 参数:
base_margin (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于
predict_proba
方法中base_margin
参数的元数据路由。iteration_range (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于
predict_proba
方法中iteration_range
参数的元数据路由。validate_features (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于
predict_proba
方法中validate_features
参数的元数据路由。self (XGBClassifier)自身
- 返回:
self – 更新后的对象。
- 返回类型:
- set_predict_request(*, base_margin='$UNCHANGED$', iteration_range='$UNCHANGED$', output_margin='$UNCHANGED$', validate_features='$UNCHANGED$')
请求传递给
predict
方法的元数据。请注意,此方法仅在
enable_metadata_routing=True
时相关(参见sklearn.set_config()
)。请参阅用户指南,了解路由机制的工作原理。每个参数的选项如下:
True
: 请求元数据,如果提供,则传递给predict
。如果未提供元数据,则忽略该请求。False
: 不请求元数据,元估计器不会将其传递给predict
。None
: 不请求元数据,如果用户提供了元数据,元估计器将引发错误。str
: 应使用给定的别名而不是原始名称将元数据传递给元估计器。
默认值 (
sklearn.utils.metadata_routing.UNCHANGED
) 保留现有请求。这允许您更改某些参数的请求而不更改其他参数。添加于 1.3 版本。
注意
此方法仅在此估计器用作元估计器的子估计器时相关,例如在
Pipeline
中使用时。否则,它无效。- 参数:
base_margin (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于
predict
方法中base_margin
参数的元数据路由。iteration_range (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于
predict
方法中iteration_range
参数的元数据路由。output_margin (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于
predict
方法中output_margin
参数的元数据路由。validate_features (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于
predict
方法中validate_features
参数的元数据路由。self (XGBClassifier)自身
- 返回:
self – 更新后的对象。
- 返回类型:
- set_score_request(*, sample_weight='$UNCHANGED$')
请求传递给
score
方法的元数据。请注意,此方法仅在
enable_metadata_routing=True
时相关(参见sklearn.set_config()
)。请参阅用户指南,了解路由机制的工作原理。每个参数的选项如下:
True
: 请求元数据,如果提供,则传递给score
。如果未提供元数据,则忽略该请求。False
: 不请求元数据,元估计器不会将其传递给score
。None
: 不请求元数据,如果用户提供了元数据,元估计器将引发错误。str
: 应使用给定的别名而不是原始名称将元数据传递给元估计器。
默认值 (
sklearn.utils.metadata_routing.UNCHANGED
) 保留现有请求。这允许您更改某些参数的请求而不更改其他参数。添加于 1.3 版本。
注意
此方法仅在此估计器用作元估计器的子估计器时相关,例如在
Pipeline
中使用时。否则,它无效。- 参数:
sample_weight (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于
score
方法中sample_weight
参数的元数据路由。self (XGBClassifier)自身
- 返回:
self – 更新后的对象。
- 返回类型:
- class xgboost.XGBRanker(*, objective='rank:ndcg', **kwargs)
Bases:
XGBRankerMixIn
,XGBModel
XGBoost 排序的 Scikit-Learn API 实现。
有关介绍,请参阅排序学习。
有关更多信息,请参阅使用 Scikit-Learn 估计器接口。
- 参数:
树生长策略。
depthwise: 倾向于在最靠近根节点的节点处进行分裂,
lossguide: 倾向于在损失变化最大的节点处进行分裂。
objective (Union[str, xgboost.sklearn._SklObjWProto, Callable[[Any, Any], Tuple[numpy.ndarray, numpy.ndarray]], NoneType]) –
指定要使用的学习任务和相应的学习目标或自定义目标函数。
对于自定义目标,有关详细信息以及函数签名的末尾注释,请参阅 Custom Objective and Evaluation Metric 和 Custom objective and metric。
booster (Optional[str]) – 指定使用哪个 booster:
gbtree
、gblinear
或dart
。tree_method (Optional[str]) – 指定使用哪个树方法。默认为 auto。如果此参数设置为 default,XGBoost 将选择最保守的可用选项。建议从参数文档 tree method 中研究此选项。
n_jobs (Optional[int]) – 用于运行 XGBoost 的并行线程数。与其他 Scikit-Learn 算法(如网格搜索)一起使用时,您可以选择并行化哪个算法并平衡线程。创建线程争用将显著降低两种算法的速度。
gamma (Optional[float]) – (min_split_loss) 在树的叶节点上进行进一步划分所需的最小损失减少量。
min_child_weight (Optional[float]) – 子节点中所需的最小实例权重 (hessian) 总和。
sampling_method (Optional[str]) –
采样方法。仅由
hist
树方法的 GPU 版本使用。uniform
: 均匀随机选择训练实例。gradient_based
: 在梯度和 Hessian 较大时以更高概率随机选择训练实例。(参见 CatBoost)当梯度和 Hessian 值较大时。(参见 CatBoost)
random_state (Union[numpy.random.mtrand.RandomState, numpy.random._generator.Generator, int, NoneType]) –
随机数种子。
注意
使用带有 shotgun 更新器的 gblinear booster 是非确定性的,因为它使用 Hogwild 算法。
monotone_constraints (Union[Dict[str, int], str, NoneType]) – 变量单调性的约束。有关详细信息,请参阅 tutorial。
interaction_constraints (Union[str, List[Tuple[str]], NoneType]) – 表示允许交互的交互约束。约束必须以嵌套列表的形式指定,例如
[[0, 1], [2, 3, 4]]
,其中每个内部列表是一组允许相互交互的特征索引。有关更多信息,请参阅 tutorial。importance_type (Optional[str]) –
feature_importances_ 属性的特征重要性类型
对于树模型,可以是“gain”、“weight”、“cover”、“total_gain”或“total_cover”。
对于线性模型,仅定义了“weight”,它是去除偏差后的归一化系数。
在 2.0.0 版本中新增。
设备序号,可用选项有 cpu、cuda 和 gpu。
feature_types (Optional[Sequence[str]]) –
在 1.7.0 版本中新增。
用于在不构建 dataframe 的情况下指定特征类型。有关详细信息,请参阅
DMatrix
。feature_weights (Optional[ArrayLike]) – 每个特征的权重,定义在使用 colsample 时选择每个特征的概率。所有值必须大于 0,否则抛出 ValueError。
max_cat_to_onehot (Optional[int]) –
在 1.6.0 版本中新增。
注意
此参数为实验性
决定 XGBoost 是否应对分类数据使用 one-hot 编码分割的阈值。当类别数量小于阈值时,选择 one-hot 编码,否则类别将被划分到子节点中。此外,需要设置 enable_categorical 才能支持分类特征。有关详细信息,请参阅 Categorical Data 和 Parameters for Categorical Feature。
max_cat_threshold (Optional[int]) –
在 1.7.0 版本中新增。
注意
此参数为实验性
每次分裂时考虑的最大类别数。仅用于基于分区的分裂,以防止过拟合。此外,需要设置 enable_categorical 才能支持分类特征。有关详细信息,请参阅 Categorical Data 和 Parameters for Categorical Feature。
multi_strategy (Optional[str]) –
在 2.0.0 版本中新增。
注意
此参数正在开发中。
用于训练多目标模型(包括多目标回归和多类分类)的策略。有关更多信息,请参阅 Multiple Outputs。
one_output_per_tree
: 每个目标一个模型。multi_output_tree
: 使用多目标树。
eval_metric (Union[str, List[str], Callable, NoneType]) –
在 1.6.0 版本中新增。
用于监控训练结果和提前停止的指标。它可以是字符串或字符串列表,作为 XGBoost 中预定义指标的名称(参见 XGBoost Parameters),也可以是
sklearn.metrics
中的指标之一,或者任何看起来像 sklearn.metrics 的用户自定义指标。如果同时提供了自定义目标,则自定义指标应实现相应的反向链接函数。
与 scikit-learn 中常用的 scoring 参数不同,当提供可调用对象时,它被认为是代价函数,XGBoost 默认会在提前停止期间最小化结果。
关于提前停止的高级用法,例如直接选择最大化而不是最小化,请参阅
xgboost.callback.EarlyStopping
。有关详细信息,请参阅 Custom Objective and Evaluation Metric 和 Custom objective and metric。
from sklearn.datasets import load_diabetes from sklearn.metrics import mean_absolute_error X, y = load_diabetes(return_X_y=True) reg = xgb.XGBRegressor( tree_method="hist", eval_metric=mean_absolute_error, ) reg.fit(X, y, eval_set=[(X, y)])
early_stopping_rounds (Optional[int]) –
在 1.6.0 版本中新增。
激活早停。验证指标需要在每 early_stopping_rounds 轮次中至少改进一次才能继续训练。需要在
fit()
中至少有一个 eval_set 项目。如果发生早停,模型将有两个额外的属性:
best_score
和best_iteration
。这些属性被predict()
和apply()
方法用于在推理期间确定最佳树的数量。如果用户想访问完整模型(包括早停后构建的树),可以在这些推理方法中指定 iteration_range。此外,其他工具,如模型绘图,也可以使用整个模型。如果您更喜欢丢弃 best_iteration 之后的树,请考虑使用回调函数
xgboost.callback.EarlyStopping
。如果在 eval_set 中有多个项目,则使用最后一个条目进行提前停止。如果在 eval_metric 中有多个指标,则使用最后一个指标进行提前停止。
callbacks (Optional[List[xgboost.callback.TrainingCallback]]) –
在每次迭代结束时应用的 callback 函数列表。可以使用 Callback API 中预定义的回调。
注意
callback 中的状态在训练期间不会保留,这意味着 callback 对象不能在未经重新初始化或深拷贝的情况下重复用于多个训练会话。
for params in parameters_grid: # be sure to (re)initialize the callbacks before each run callbacks = [xgb.callback.LearningRateScheduler(custom_rates)] reg = xgboost.XGBRegressor(**params, callbacks=callbacks) reg.fit(X, y)
XGBoost Booster 对象的关键字参数。参数的完整文档可以在 这里 找到。尝试通过构造函数参数和 **kwargs 字典同时设置参数将导致 TypeError。
注意
**kwargs 不受 scikit-learn 支持
**kwargs 不受 scikit-learn 支持。我们不保证通过此参数传递的参数能与 scikit-learn 正确交互。
注意
XGBRanker 当前不支持自定义目标函数。
注意
查询组信息仅在排序训练中需要,预测时不需要。可以在一次调用
predict()
中预测多个组。使用 group 参数拟合模型时,您的数据需要先按查询组排序。group 是一个数组,包含每个查询组的大小。
类似地,使用 qid 参数拟合模型时,数据应按查询索引排序,qid 是一个数组,包含每个训练样本的查询索引。
例如,如果您的原始数据如下所示:
qid
label
features
1
0
x_1
1
1
x_2
1
0
x_3
2
0
x_4
2
1
x_5
2
1
x_6
2
1
x_7
则可以调用
fit()
方法,其中 group 数组为[3, 4]
,或者 qid 为[1, 1, 1, 2, 2, 2, 2]
,即 qid 列。此外,qid 可以是输入 X 的特殊列,而不是单独的参数,更多信息请参阅fit()
。
- apply(X, iteration_range=None)
返回每个样本在每棵树上的预测叶子。如果模型使用早停训练,则自动使用
best_iteration
。- 参数:
- 返回:
X_leaves – 对于 X 中的每个数据点 x 和每棵树,返回 x 最终到达的叶子索引。叶子的编号在
[0; 2**(self.max_depth+1))
范围内,编号可能存在间隔。- 返回类型:
array_like, shape=[n_samples, n_trees]
- property coef_: ndarray
系数属性
注意
系数仅对线性学习器定义
系数仅在选择线性模型作为基础学习器 (booster=gblinear) 时定义。对于其他基础学习器类型(如树学习器,booster=gbtree)则未定义。
- 返回:
coef_
- 返回类型:
形状为
[n_features]
或[n_classes, n_features]
的数组
- evals_result()
返回评估结果。
如果将 eval_set 传递给
fit()
函数,您可以调用evals_result()
来获取所有传递的 eval_sets 的评估结果。当同时将 eval_metric 传递给fit()
函数时,evals_result 将包含传递给fit()
函数的 eval_metrics。返回的评估结果是一个字典
{'validation_0': {'logloss': ['0.604835', '0.531479']}, 'validation_1': {'logloss': ['0.41965', '0.17686']}}
- 返回类型:
evals_result
- property feature_importances_: ndarray
特征重要性属性,返回值取决于 importance_type 参数。当模型使用多类/多标签/多目标数据集训练时,特征重要性是所有目标的“平均值”。“平均值”的定义基于重要性类型。例如,如果重要性类型是“total_gain”,则得分是所有树中每次分裂的损失变化总和。
- 返回:
feature_importances_ (形状为
[n_features]
的数组,多类除外)线性模型返回形状为 (n_features, n_classes) 的数组
- fit(X, y, *, group=None, qid=None, sample_weight=None, base_margin=None, eval_set=None, eval_group=None, eval_qid=None, verbose=False, xgb_model=None, sample_weight_eval_set=None, base_margin_eval_set=None, feature_weights=None)
拟合梯度提升排序器
请注意,多次调用
fit()
将导致模型对象从头开始重新拟合。要从上一个检查点继续训练,请显式传递xgb_model
参数。- 参数:
X (Any) –
特征矩阵。有关支持的类型列表,请参阅各种 XGBoost 函数支持的数据结构。
当这是一个
pandas.DataFrame
或cudf.DataFrame
时,它可能包含一个名为qid
的特殊列,用于指定查询索引。使用特殊列与使用 qid 参数相同,只是前者与 sklearn 工具函数(如sklearn.model_selection.cross_validation()
)兼容。相同的约定也适用于XGBRanker.score()
和XGBRanker.predict()
。qid
feat_0
feat_1
0
\(x_{00}\)
\(x_{01}\)
1
\(x_{10}\)
\(x_{11}\)
1
\(x_{20}\)
\(x_{21}\)
当
tree_method
设置为hist
时,内部将使用QuantileDMatrix
而不是DMatrix
以节省内存。但是,当输入数据设备与算法不匹配时,这会影响性能。例如,如果输入是 CPU 上的 numpy 数组但使用cuda
进行训练,则数据首先在 CPU 上处理,然后传输到 GPU。y (Any) – 标签
group (Any | None) – 训练数据中每个查询组的大小。其元素数量应与训练数据中的查询组数量相同。如果设置为 None,则用户必须提供 qid。
qid (Any | None) – 每个训练样本的查询 ID。大小应为 n_samples。如果设置为 None,则用户必须提供 group 或 X 中的特殊列。
sample_weight (Any | None) –
查询组权重
注意
排序任务中权重是按组分配的
在排序任务中,每个查询组/ID(而不是每个数据点)分配一个权重。这是因为我们只关注每个组内数据点的相对排序,因此为单个数据点分配权重没有意义。
eval_set (Sequence[Tuple[Any, Any]] | None) – 用作验证集 (X, y) 元组对的列表,将计算这些验证集的指标。验证指标将帮助我们跟踪模型的性能。
eval_group (Sequence[Any] | None) – 一个列表,其中
eval_group[i]
是包含 eval_set 中第i
对数据中所有查询组大小的列表。eval_qid (Sequence[Any] | None) – 一个列表,其中
eval_qid[i]
是包含 eval_set 中第i
对数据的查询 ID 数组。X 中的特殊列约定也适用于验证数据集。verbose (bool | int | None) – 如果 verbose 为 True 且使用了评估集,则在每个提升阶段将验证集上衡量的评估指标打印到 stdout。如果 verbose 是一个整数,则在每 verbose 个提升阶段打印评估指标。使用 early_stopping_rounds 找到的最后一个提升阶段/提升阶段也会被打印。
xgb_model (Booster | str | XGBModel | None) – 要加载的文件名或 ‘Booster’ 实例 XGBoost 模型,可在训练前加载(允许继续训练)。
sample_weight_eval_set (Sequence[Any] | None) –
形式为 [L_1, L_2, …, L_n] 的列表,其中每个 L_i 是第 i 个验证集上的组权重列表。
注意
排序任务中权重是按组分配的
在排序任务中,每个查询组(而不是每个数据点)分配一个权重。这是因为我们只关注每个组内数据点的相对排序,因此为单个数据点分配权重没有意义。
base_margin_eval_set (Sequence[Any] | None) – 形式为 [M_1, M_2, …, M_n] 的列表,其中每个 M_i 是一个类数组对象,存储第 i 个验证集的基准边距 (base margin)。
feature_weights (Any | None) – 每个特征的权重,定义了使用 colsample 时每个特征被选中的概率。所有值必须大于 0,否则会引发 ValueError。
- 返回类型:
- get_booster()
获取此模型底层的 xgboost Booster。
如果在 fit 方法未被调用时,这将引发异常。
- 返回:
booster
- 返回类型:
底层模型的 xgboost Booster 实例
- get_metadata_routing()
获取此对象的元数据路由。
请查阅用户指南,了解路由机制的工作原理。
- 返回:
routing – 一个
MetadataRequest
,封装了路由信息。- 返回类型:
MetadataRequest
- property intercept_: ndarray
截距(偏差)属性
对于基于树的模型,返回的值是 base_score。
- 返回:
intercept_
- 返回类型:
形状为
(1,)
或[n_classes]
的数组
- load_model(fname)
从文件或 bytearray 加载模型。
模型以 XGBoost 内部格式保存,该格式在各种 XGBoost 接口中通用。Python Booster 对象的辅助属性(例如 feature_names)仅在使用 JSON 或 UBJSON(默认)格式时保存。此外,不属于模型的参数(如指标、
max_depth
等)不会保存,有关更多信息,请参阅 Model IO。model.save_model("model.json") model.load_model("model.json") # or model.save_model("model.ubj") model.load_model("model.ubj") # or buf = model.save_raw() model.load_model(buf)
- predict(X, *, output_margin=False, validate_features=True, base_margin=None, iteration_range=None)
使用 X 进行预测。如果模型使用早停训练,则自动使用
best_iteration
。估计器默认使用 inplace_predict,如果数据与估计器之间的设备不匹配,则回退到使用DMatrix
。注意
此函数仅对 gbtree 和 dart 线程安全。
- 参数:
X (Any) – 用于预测的数据。有关支持的类型列表,请参阅各种 XGBoost 函数支持的数据结构。
output_margin (bool) – 是否输出原始未转换的 margin 值。
validate_features (bool) – 当此参数设置为 True 时,验证 Booster 和数据的 feature_names 是否完全一致。否则,假设 feature_names 是相同的。
iteration_range (Tuple[int | integer, int | integer] | None) –
指定预测中使用哪一层树。例如,如果随机森林训练了 100 轮。指定
iteration_range=(10, 20)
,则在此预测中仅使用在 [10, 20)(左闭右开区间)轮次期间构建的森林。在 1.4.0 版本中新增。
- 返回类型:
prediction
- save_model(fname)
将模型保存到文件。
模型以 XGBoost 内部格式保存,该格式在各种 XGBoost 接口中通用。Python Booster 对象的辅助属性(例如 feature_names)仅在使用 JSON 或 UBJSON(默认)格式时保存。此外,不属于模型的参数(如指标、
max_depth
等)不会保存,有关更多信息,请参阅 Model IO。model.save_model("model.json") # or model.save_model("model.ubj")
- score(X, y)
使用最后一个评估指标评估数据的分数。如果模型使用早停训练,则自动使用
best_iteration
。- 参数:
X (Union[pd.DataFrame, cudf.DataFrame]) – 特征矩阵。一个带有特殊 qid 列的 DataFrame。
y (Any) – 标签
- 返回:
排序器的第一个评估指标结果。
- 返回类型:
score
- set_fit_request(*, base_margin='$UNCHANGED$', base_margin_eval_set='$UNCHANGED$', eval_group='$UNCHANGED$', eval_qid='$UNCHANGED$', eval_set='$UNCHANGED$', feature_weights='$UNCHANGED$', group='$UNCHANGED$', qid='$UNCHANGED$', sample_weight='$UNCHANGED$', sample_weight_eval_set='$UNCHANGED$', verbose='$UNCHANGED$', xgb_model='$UNCHANGED$')
请求传递给
fit
方法的元数据。请注意,此方法仅在
enable_metadata_routing=True
时相关(参见sklearn.set_config()
)。请参阅用户指南,了解路由机制的工作原理。每个参数的选项如下:
True
: 请求元数据,如果提供,则传递给fit
。如果未提供元数据,则忽略该请求。False
: 不请求元数据,元估计器不会将其传递给fit
。None
: 不请求元数据,如果用户提供了元数据,元估计器将引发错误。str
: 应使用给定的别名而不是原始名称将元数据传递给元估计器。
默认值 (
sklearn.utils.metadata_routing.UNCHANGED
) 保留现有请求。这允许您更改某些参数的请求而不更改其他参数。添加于 1.3 版本。
注意
此方法仅在此估计器用作元估计器的子估计器时相关,例如在
Pipeline
中使用时。否则,它无效。- 参数:
base_margin (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于
fit
方法中base_margin
参数的元数据路由。base_margin_eval_set (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于
fit
方法中base_margin_eval_set
参数的元数据路由。eval_group (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于
fit
方法中eval_group
参数的元数据路由。eval_qid (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于
fit
方法中eval_qid
参数的元数据路由。eval_set (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于
fit
方法中eval_set
参数的元数据路由。feature_weights (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于
fit
方法中feature_weights
参数的元数据路由。group (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于
fit
方法中group
参数的元数据路由。qid (字符串, 真, 假, or 无, 默认值=sklearn.utils.metadata_routing.UNCHANGED) – 用于
fit
方法中qid
参数的元数据路由。sample_weight (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于
fit
方法中sample_weight
参数的元数据路由。sample_weight_eval_set (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于
fit
方法中sample_weight_eval_set
参数的元数据路由。verbose (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于
fit
方法中verbose
参数的元数据路由。xgb_model (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于
fit
方法中xgb_model
参数的元数据路由。self (XGBRanker)
- 返回:
self – 更新后的对象。
- 返回类型:
- set_params(**params)
设置此估计器的参数。修改了 sklearn 方法以允许未知关键字参数。这使得在 sklearn 网格搜索中可以使用未定义为成员变量的全部 xgboost 参数范围。
- 返回类型:
自身
- 参数:
params (Any)
- set_predict_request(*, base_margin='$UNCHANGED$', iteration_range='$UNCHANGED$', output_margin='$UNCHANGED$', validate_features='$UNCHANGED$')
请求传递给
predict
方法的元数据。请注意,此方法仅在
enable_metadata_routing=True
时相关(参见sklearn.set_config()
)。请参阅用户指南,了解路由机制的工作原理。每个参数的选项如下:
True
: 请求元数据,如果提供,则传递给predict
。如果未提供元数据,则忽略该请求。False
: 不请求元数据,元估计器不会将其传递给predict
。None
: 不请求元数据,如果用户提供了元数据,元估计器将引发错误。str
: 应使用给定的别名而不是原始名称将元数据传递给元估计器。
默认值 (
sklearn.utils.metadata_routing.UNCHANGED
) 保留现有请求。这允许您更改某些参数的请求而不更改其他参数。添加于 1.3 版本。
注意
此方法仅在此估计器用作元估计器的子估计器时相关,例如在
Pipeline
中使用时。否则,它无效。- 参数:
base_margin (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于
predict
方法中base_margin
参数的元数据路由。iteration_range (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于
predict
方法中iteration_range
参数的元数据路由。output_margin (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于
predict
方法中output_margin
参数的元数据路由。validate_features (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于
predict
方法中validate_features
参数的元数据路由。self (XGBRanker)
- 返回:
self – 更新后的对象。
- 返回类型:
- class xgboost.XGBRFRegressor(*, learning_rate=1.0, subsample=0.8, colsample_bynode=0.8, reg_lambda=1e-05, **kwargs)
基类:
XGBRegressor
用于 XGBoost 随机森林回归的 scikit-learn API。详见使用 Scikit-Learn 估计器接口。
- 参数:
n_estimators (可选的[整数]) – 要拟合的随机森林中的树数量。
树生长策略。
depthwise: 倾向于在最靠近根节点的节点处进行分裂,
lossguide: 倾向于在损失变化最大的节点处进行分裂。
objective (Union[str, xgboost.sklearn._SklObjWProto, Callable[[Any, Any], Tuple[numpy.ndarray, numpy.ndarray]], NoneType]) –
指定要使用的学习任务和相应的学习目标或自定义目标函数。
对于自定义目标,有关详细信息以及函数签名的末尾注释,请参阅 Custom Objective and Evaluation Metric 和 Custom objective and metric。
booster (Optional[str]) – 指定使用哪个 booster:
gbtree
、gblinear
或dart
。tree_method (Optional[str]) – 指定使用哪个树方法。默认为 auto。如果此参数设置为 default,XGBoost 将选择最保守的可用选项。建议从参数文档 tree method 中研究此选项。
n_jobs (Optional[int]) – 用于运行 XGBoost 的并行线程数。与其他 Scikit-Learn 算法(如网格搜索)一起使用时,您可以选择并行化哪个算法并平衡线程。创建线程争用将显著降低两种算法的速度。
gamma (Optional[float]) – (min_split_loss) 在树的叶节点上进行进一步划分所需的最小损失减少量。
min_child_weight (Optional[float]) – 子节点中所需的最小实例权重 (hessian) 总和。
sampling_method (Optional[str]) –
采样方法。仅由
hist
树方法的 GPU 版本使用。uniform
: 均匀随机选择训练实例。gradient_based
: 在梯度和 Hessian 较大时以更高概率随机选择训练实例。(参见 CatBoost)当梯度和 Hessian 值较大时。(参见 CatBoost)
random_state (Union[numpy.random.mtrand.RandomState, numpy.random._generator.Generator, int, NoneType]) –
随机数种子。
注意
使用带有 shotgun 更新器的 gblinear booster 是非确定性的,因为它使用 Hogwild 算法。
monotone_constraints (Union[Dict[str, int], str, NoneType]) – 变量单调性的约束。有关详细信息,请参阅 tutorial。
interaction_constraints (Union[str, List[Tuple[str]], NoneType]) – 表示允许交互的交互约束。约束必须以嵌套列表的形式指定,例如
[[0, 1], [2, 3, 4]]
,其中每个内部列表是一组允许相互交互的特征索引。有关更多信息,请参阅 tutorial。importance_type (Optional[str]) –
feature_importances_ 属性的特征重要性类型
对于树模型,可以是“gain”、“weight”、“cover”、“total_gain”或“total_cover”。
对于线性模型,仅定义了“weight”,它是去除偏差后的归一化系数。
在 2.0.0 版本中新增。
设备序号,可用选项有 cpu、cuda 和 gpu。
feature_types (Optional[Sequence[str]]) –
在 1.7.0 版本中新增。
用于在不构建 dataframe 的情况下指定特征类型。有关详细信息,请参阅
DMatrix
。feature_weights (Optional[ArrayLike]) – 每个特征的权重,定义在使用 colsample 时选择每个特征的概率。所有值必须大于 0,否则抛出 ValueError。
max_cat_to_onehot (Optional[int]) –
在 1.6.0 版本中新增。
注意
此参数为实验性
决定 XGBoost 是否应对分类数据使用 one-hot 编码分割的阈值。当类别数量小于阈值时,选择 one-hot 编码,否则类别将被划分到子节点中。此外,需要设置 enable_categorical 才能支持分类特征。有关详细信息,请参阅 Categorical Data 和 Parameters for Categorical Feature。
max_cat_threshold (Optional[int]) –
在 1.7.0 版本中新增。
注意
此参数为实验性
每次分裂时考虑的最大类别数。仅用于基于分区的分裂,以防止过拟合。此外,需要设置 enable_categorical 才能支持分类特征。有关详细信息,请参阅 Categorical Data 和 Parameters for Categorical Feature。
multi_strategy (Optional[str]) –
在 2.0.0 版本中新增。
注意
此参数正在开发中。
用于训练多目标模型(包括多目标回归和多类分类)的策略。有关更多信息,请参阅 Multiple Outputs。
one_output_per_tree
: 每个目标一个模型。multi_output_tree
: 使用多目标树。
eval_metric (Union[str, List[str], Callable, NoneType]) –
在 1.6.0 版本中新增。
用于监控训练结果和提前停止的指标。它可以是字符串或字符串列表,作为 XGBoost 中预定义指标的名称(参见 XGBoost Parameters),也可以是
sklearn.metrics
中的指标之一,或者任何看起来像 sklearn.metrics 的用户自定义指标。如果同时提供了自定义目标,则自定义指标应实现相应的反向链接函数。
与 scikit-learn 中常用的 scoring 参数不同,当提供可调用对象时,它被认为是代价函数,XGBoost 默认会在提前停止期间最小化结果。
关于提前停止的高级用法,例如直接选择最大化而不是最小化,请参阅
xgboost.callback.EarlyStopping
。有关详细信息,请参阅 Custom Objective and Evaluation Metric 和 Custom objective and metric。
from sklearn.datasets import load_diabetes from sklearn.metrics import mean_absolute_error X, y = load_diabetes(return_X_y=True) reg = xgb.XGBRegressor( tree_method="hist", eval_metric=mean_absolute_error, ) reg.fit(X, y, eval_set=[(X, y)])
early_stopping_rounds (Optional[int]) –
在 1.6.0 版本中新增。
激活早停。验证指标需要在每early_stopping_rounds轮训练中至少改善一次才能继续训练。要求在
fit()
中至少包含一个eval_set项。如果发生早停,模型将具有两个额外的属性:
best_score
和best_iteration
。这些属性由predict()
和apply()
方法使用,以在推理过程中确定最优的树数量。如果用户希望访问完整的模型(包括早停后构建的树),他们可以在这些推理方法中指定iteration_range。此外,其他实用工具(如模型绘制)也可以使用整个模型。如果您更喜欢丢弃 best_iteration 之后的树,请考虑使用回调函数
xgboost.callback.EarlyStopping
。如果在 eval_set 中有多个项目,则使用最后一个条目进行提前停止。如果在 eval_metric 中有多个指标,则使用最后一个指标进行提前停止。
callbacks (Optional[List[xgboost.callback.TrainingCallback]]) –
在每次迭代结束时应用的 callback 函数列表。可以使用 Callback API 中预定义的回调。
注意
callback 中的状态在训练期间不会保留,这意味着 callback 对象不能在未经重新初始化或深拷贝的情况下重复用于多个训练会话。
for params in parameters_grid: # be sure to (re)initialize the callbacks before each run callbacks = [xgb.callback.LearningRateScheduler(custom_rates)] reg = xgboost.XGBRegressor(**params, callbacks=callbacks) reg.fit(X, y)
XGBoost Booster 对象的关键字参数。参数的完整文档可以在 这里 找到。尝试通过构造函数参数和 **kwargs 字典同时设置参数将导致 TypeError。
注意
**kwargs 不受 scikit-learn 支持
**kwargs 不受 scikit-learn 支持。我们不保证通过此参数传递的参数能与 scikit-learn 正确交互。
注意
自定义目标函数
可以为
objective
参数提供自定义目标函数。在这种情况下,它应该具有签名objective(y_true, y_pred) -> [grad, hess]
或objective(y_true, y_pred, *, sample_weight) -> [grad, hess]
- y_true: array_like of shape [n_samples]
目标值
- y_pred: array_like of shape [n_samples]
预测值
- sample_weight
可选的样本权重。
- grad: array_like of shape [n_samples]
每个样本点的梯度值。
- hess: array_like of shape [n_samples]
每个样本点的二阶导数值
请注意,如果自定义目标为 Hessian 产生负值,这些值将被裁剪。如果目标是非凸的,也可以考虑使用期望的 Hessian(Fisher 信息)。
- apply(X, iteration_range=None)
返回每个样本在每棵树中的预测叶子。如果模型使用早停进行训练,则
best_iteration
会自动使用。- 参数:
- 返回:
X_leaves – 对于 X 中的每个数据点 x 和每棵树,返回 x 最终到达的叶子索引。叶子的编号在
[0; 2**(self.max_depth+1))
范围内,编号可能存在间隔。- 返回类型:
array_like, shape=[n_samples, n_trees]
- property coef_: ndarray
系数属性
注意
系数仅对线性学习器定义
系数仅在选择线性模型作为基础学习器 (booster=gblinear) 时定义。对于其他基础学习器类型(如树学习器,booster=gbtree)则未定义。
- 返回:
coef_
- 返回类型:
形状为
[n_features]
或[n_classes, n_features]
的数组
- evals_result()
返回评估结果。
如果将eval_set传递给
fit()
函数,可以调用evals_result()
来获取所有传入的eval_sets的评估结果。如果同时将eval_metric传递给fit()
函数,则evals_result将包含传递给fit()
函数的eval_metrics。返回的评估结果是一个字典
{'validation_0': {'logloss': ['0.604835', '0.531479']}, 'validation_1': {'logloss': ['0.41965', '0.17686']}}
- 返回类型:
evals_result
- property feature_importances_: ndarray
特征重要性属性,返回值取决于 importance_type 参数。当模型使用多类/多标签/多目标数据集训练时,特征重要性是所有目标的“平均值”。“平均值”的定义基于重要性类型。例如,如果重要性类型是“total_gain”,则得分是所有树中每次分裂的损失变化总和。
- 返回:
feature_importances_ (形状为
[n_features]
的数组,多类除外)线性模型返回形状为 (n_features, n_classes) 的数组
- fit(X, y, *, sample_weight=None, base_margin=None, eval_set=None, verbose=True, xgb_model=None, sample_weight_eval_set=None, base_margin_eval_set=None, feature_weights=None)
拟合梯度提升模型。
请注意,多次调用
fit()
将导致模型对象从头开始重新拟合。要从上一个检查点继续训练,请显式传递xgb_model
参数。- 参数:
X (Any) –
输入特征矩阵。有关支持的类型列表,请参见 Supported data structures for various XGBoost functions。
当
tree_method
设置为hist
时,内部将使用QuantileDMatrix
而不是DMatrix
以节省内存。但是,当输入数据设备与算法不匹配时,这会影响性能。例如,如果输入是 CPU 上的 numpy 数组但使用cuda
进行训练,则数据首先在 CPU 上处理,然后传输到 GPU。y (Any) – 标签
sample_weight (Any | None) – 实例权重
eval_set (Sequence[Tuple[Any, Any]] | None) – 用作验证集 (X, y) 元组对的列表,将计算这些验证集的指标。验证指标将帮助我们跟踪模型的性能。
verbose (bool | int | None) – 如果 verbose 为 True 且使用了评估集,则在每个提升阶段将验证集上衡量的评估指标打印到 stdout。如果 verbose 是一个整数,则在每 verbose 个提升阶段打印评估指标。使用 early_stopping_rounds 找到的最后一个提升阶段/提升阶段也会被打印。
xgb_model (Booster | str | XGBModel | None) – 要加载的文件名或 ‘Booster’ 实例 XGBoost 模型,可在训练前加载(允许继续训练)。
sample_weight_eval_set (Sequence[Any] | None) – 形式为 [L_1, L_2, …, L_n] 的列表,其中每个 L_i 是一个类数组对象,存储第 i 个验证集的实例权重。
base_margin_eval_set (Sequence[Any] | None) – 形式为 [M_1, M_2, …, M_n] 的列表,其中每个 M_i 是一个类数组对象,存储第 i 个验证集的基准边距 (base margin)。
feature_weights (Any | None) –
自 3.0.0 版本起已弃用。
请改用feature_weights在
__init__()
或set_params()
中。
- 返回类型:
- get_booster()
获取此模型底层的 xgboost Booster。
如果在 fit 方法未被调用时,这将引发异常。
- 返回:
booster
- 返回类型:
底层模型的 xgboost Booster 实例
- get_metadata_routing()
获取此对象的元数据路由。
请查阅用户指南,了解路由机制的工作原理。
- 返回:
routing – 一个
MetadataRequest
,封装了路由信息。- 返回类型:
MetadataRequest
- property intercept_: ndarray
截距(偏差)属性
对于基于树的模型,返回的值是 base_score。
- 返回:
intercept_
- 返回类型:
形状为
(1,)
或[n_classes]
的数组
- load_model(fname)
从文件或 bytearray 加载模型。
模型以 XGBoost 内部格式保存,该格式在各种 XGBoost 接口中通用。Python Booster 对象的辅助属性(例如 feature_names)仅在使用 JSON 或 UBJSON(默认)格式时保存。此外,不属于模型的参数(如指标、
max_depth
等)不会保存,有关更多信息,请参阅 Model IO。model.save_model("model.json") model.load_model("model.json") # or model.save_model("model.ubj") model.load_model("model.ubj") # or buf = model.save_raw() model.load_model(buf)
- predict(X, *, output_margin=False, validate_features=True, base_margin=None, iteration_range=None)
使用X进行预测。如果模型使用早停进行训练,则
best_iteration
会自动使用。估计器默认使用inplace_predict,如果数据和估计器之间的设备不匹配,则会回退到使用DMatrix
。注意
此函数仅对 gbtree 和 dart 线程安全。
- 参数:
X (Any) – 用于预测的数据。有关支持的类型列表,请参阅各种 XGBoost 函数支持的数据结构。
output_margin (bool) – 是否输出原始未转换的 margin 值。
validate_features (bool) – 当此参数设置为 True 时,验证 Booster 和数据的 feature_names 是否完全一致。否则,假设 feature_names 是相同的。
iteration_range (Tuple[int | integer, int | integer] | None) –
指定预测中使用哪一层树。例如,如果随机森林训练了 100 轮。指定
iteration_range=(10, 20)
,则在此预测中仅使用在 [10, 20)(左闭右开区间)轮次期间构建的森林。在 1.4.0 版本中新增。
- 返回类型:
prediction
- save_model(fname)
将模型保存到文件。
模型以 XGBoost 内部格式保存,该格式在各种 XGBoost 接口中通用。Python Booster 对象的辅助属性(例如 feature_names)仅在使用 JSON 或 UBJSON(默认)格式时保存。此外,不属于模型的参数(如指标、
max_depth
等)不会保存,有关更多信息,请参阅 Model IO。model.save_model("model.json") # or model.save_model("model.ubj")
- score(X, y, sample_weight=None)
返回预测的决定系数 (coefficient of determination)。
决定系数 \(R^2\) 定义为 \((1 - \frac{u}{v})\),其中 \(u\) 是残差平方和
((y_true - y_pred)** 2).sum()
,\(v\) 是总平方和((y_true - y_true.mean()) ** 2).sum()
。最佳分数是 1.0,它也可以是负数(因为模型可能任意差)。忽略输入特征,总是预测 y 的期望值的常数模型将获得 0.0 的 \(R^2\) 分数。- 参数:
X (array-like of shape (n_samples, n_features)) – 测试样本。对于某些估计器,这可能是预计算的核矩阵,或者形状为
(n_samples, n_samples_fitted)
的通用对象列表,其中n_samples_fitted
是估计器拟合中使用的样本数量。y (array-like of shape (n_samples,) or (n_samples, n_outputs)) – X 的真实值。
sample_weight (array-like of shape (n_samples,), default=None) – 样本权重。
- 返回:
score –
self.predict(X)
相对于 y 的 \(R^2\) 值。- 返回类型:
注意
在回归器上调用
score
时使用的 \(R^2\) 分数从 0.23 版本开始使用multioutput='uniform_average'
,以便与r2_score()
的默认值保持一致。这会影响所有多输出回归器(MultiOutputRegressor
除外)的score
方法。
- set_fit_request(*, base_margin='$UNCHANGED$', base_margin_eval_set='$UNCHANGED$', eval_set='$UNCHANGED$', feature_weights='$UNCHANGED$', sample_weight='$UNCHANGED$', sample_weight_eval_set='$UNCHANGED$', verbose='$UNCHANGED$', xgb_model='$UNCHANGED$')
请求传递给
fit
方法的元数据。请注意,此方法仅在
enable_metadata_routing=True
时相关(参见sklearn.set_config()
)。请参阅用户指南,了解路由机制的工作原理。每个参数的选项如下:
True
: 请求元数据,如果提供,则传递给fit
。如果未提供元数据,则忽略该请求。False
: 不请求元数据,元估计器不会将其传递给fit
。None
: 不请求元数据,如果用户提供了元数据,元估计器将引发错误。str
: 应使用给定的别名而不是原始名称将元数据传递给元估计器。
默认值 (
sklearn.utils.metadata_routing.UNCHANGED
) 保留现有请求。这允许您更改某些参数的请求而不更改其他参数。添加于 1.3 版本。
注意
此方法仅在此估计器用作元估计器的子估计器时相关,例如在
Pipeline
中使用时。否则,它无效。- 参数:
base_margin (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于
fit
方法中base_margin
参数的元数据路由。base_margin_eval_set (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于
fit
方法中base_margin_eval_set
参数的元数据路由。eval_set (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于
fit
方法中eval_set
参数的元数据路由。feature_weights (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于
fit
方法中feature_weights
参数的元数据路由。sample_weight (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于
fit
方法中sample_weight
参数的元数据路由。sample_weight_eval_set (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于
fit
方法中sample_weight_eval_set
参数的元数据路由。verbose (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于
fit
方法中verbose
参数的元数据路由。xgb_model (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于
fit
方法中xgb_model
参数的元数据路由。self (XGBRFRegressor)
- 返回:
self – 更新后的对象。
- 返回类型:
- set_params(**params)
设置此估计器的参数。修改了 sklearn 方法以允许未知关键字参数。这使得在 sklearn 网格搜索中可以使用未定义为成员变量的全部 xgboost 参数范围。
- 返回类型:
自身
- 参数:
params (Any)
- set_predict_request(*, base_margin='$UNCHANGED$', iteration_range='$UNCHANGED$', output_margin='$UNCHANGED$', validate_features='$UNCHANGED$')
请求传递给
predict
方法的元数据。请注意,此方法仅在
enable_metadata_routing=True
时相关(参见sklearn.set_config()
)。请参阅用户指南,了解路由机制的工作原理。每个参数的选项如下:
True
: 请求元数据,如果提供,则传递给predict
。如果未提供元数据,则忽略该请求。False
: 不请求元数据,元估计器不会将其传递给predict
。None
: 不请求元数据,如果用户提供了元数据,元估计器将引发错误。str
: 应使用给定的别名而不是原始名称将元数据传递给元估计器。
默认值 (
sklearn.utils.metadata_routing.UNCHANGED
) 保留现有请求。这允许您更改某些参数的请求而不更改其他参数。添加于 1.3 版本。
注意
此方法仅在此估计器用作元估计器的子估计器时相关,例如在
Pipeline
中使用时。否则,它无效。- 参数:
base_margin (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于
predict
方法中base_margin
参数的元数据路由。iteration_range (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于
predict
方法中iteration_range
参数的元数据路由。output_margin (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于
predict
方法中output_margin
参数的元数据路由。validate_features (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于
predict
方法中validate_features
参数的元数据路由。self (XGBRFRegressor)
- 返回:
self – 更新后的对象。
- 返回类型:
- set_score_request(*, sample_weight='$UNCHANGED$')
请求传递给
score
方法的元数据。请注意,此方法仅在
enable_metadata_routing=True
时相关(参见sklearn.set_config()
)。请参阅用户指南,了解路由机制的工作原理。每个参数的选项如下:
True
: 请求元数据,如果提供,则传递给score
。如果未提供元数据,则忽略该请求。False
: 不请求元数据,元估计器不会将其传递给score
。None
: 不请求元数据,如果用户提供了元数据,元估计器将引发错误。str
: 应使用给定的别名而不是原始名称将元数据传递给元估计器。
默认值 (
sklearn.utils.metadata_routing.UNCHANGED
) 保留现有请求。这允许您更改某些参数的请求而不更改其他参数。添加于 1.3 版本。
注意
此方法仅在此估计器用作元估计器的子估计器时相关,例如在
Pipeline
中使用时。否则,它无效。- 参数:
sample_weight (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于
score
方法中sample_weight
参数的元数据路由。self (XGBRFRegressor)
- 返回:
self – 更新后的对象。
- 返回类型:
- class xgboost.XGBRFClassifier(*, learning_rate=1.0, subsample=0.8, colsample_bynode=0.8, reg_lambda=1e-05, **kwargs)
基类:
XGBClassifier
用于 XGBoost 随机森林分类的 scikit-learn API。详见使用 Scikit-Learn 估计器接口。
- 参数:
n_estimators (可选的[整数]) – 要拟合的随机森林中的树数量。
树生长策略。
depthwise: 倾向于在最靠近根节点的节点处进行分裂,
lossguide: 倾向于在损失变化最大的节点处进行分裂。
objective (Union[str, xgboost.sklearn._SklObjWProto, Callable[[Any, Any], Tuple[numpy.ndarray, numpy.ndarray]], NoneType]) –
指定要使用的学习任务和相应的学习目标或自定义目标函数。
对于自定义目标,有关详细信息以及函数签名的末尾注释,请参阅 Custom Objective and Evaluation Metric 和 Custom objective and metric。
booster (Optional[str]) – 指定使用哪个 booster:
gbtree
、gblinear
或dart
。tree_method (Optional[str]) – 指定使用哪个树方法。默认为 auto。如果此参数设置为 default,XGBoost 将选择最保守的可用选项。建议从参数文档 tree method 中研究此选项。
n_jobs (Optional[int]) – 用于运行 XGBoost 的并行线程数。与其他 Scikit-Learn 算法(如网格搜索)一起使用时,您可以选择并行化哪个算法并平衡线程。创建线程争用将显著降低两种算法的速度。
gamma (Optional[float]) – (min_split_loss) 在树的叶节点上进行进一步划分所需的最小损失减少量。
min_child_weight (Optional[float]) – 子节点中所需的最小实例权重 (hessian) 总和。
sampling_method (Optional[str]) –
采样方法。仅由
hist
树方法的 GPU 版本使用。uniform
: 均匀随机选择训练实例。gradient_based
: 在梯度和 Hessian 较大时以更高概率随机选择训练实例。(参见 CatBoost)当梯度和 Hessian 值较大时。(参见 CatBoost)
random_state (Union[numpy.random.mtrand.RandomState, numpy.random._generator.Generator, int, NoneType]) –
随机数种子。
注意
使用带有 shotgun 更新器的 gblinear booster 是非确定性的,因为它使用 Hogwild 算法。
monotone_constraints (Union[Dict[str, int], str, NoneType]) – 变量单调性的约束。有关详细信息,请参阅 tutorial。
interaction_constraints (Union[str, List[Tuple[str]], NoneType]) – 表示允许交互的交互约束。约束必须以嵌套列表的形式指定,例如
[[0, 1], [2, 3, 4]]
,其中每个内部列表是一组允许相互交互的特征索引。有关更多信息,请参阅 tutorial。importance_type (Optional[str]) –
feature_importances_ 属性的特征重要性类型
对于树模型,可以是“gain”、“weight”、“cover”、“total_gain”或“total_cover”。
对于线性模型,仅定义了“weight”,它是去除偏差后的归一化系数。
在 2.0.0 版本中新增。
设备序号,可用选项有 cpu、cuda 和 gpu。
feature_types (Optional[Sequence[str]]) –
在 1.7.0 版本中新增。
用于在不构建 dataframe 的情况下指定特征类型。有关详细信息,请参阅
DMatrix
。feature_weights (Optional[ArrayLike]) – 每个特征的权重,定义在使用 colsample 时选择每个特征的概率。所有值必须大于 0,否则抛出 ValueError。
max_cat_to_onehot (Optional[int]) –
在 1.6.0 版本中新增。
注意
此参数为实验性
决定 XGBoost 是否应对分类数据使用 one-hot 编码分割的阈值。当类别数量小于阈值时,选择 one-hot 编码,否则类别将被划分到子节点中。此外,需要设置 enable_categorical 才能支持分类特征。有关详细信息,请参阅 Categorical Data 和 Parameters for Categorical Feature。
max_cat_threshold (Optional[int]) –
在 1.7.0 版本中新增。
注意
此参数为实验性
每次分裂时考虑的最大类别数。仅用于基于分区的分裂,以防止过拟合。此外,需要设置 enable_categorical 才能支持分类特征。有关详细信息,请参阅 Categorical Data 和 Parameters for Categorical Feature。
multi_strategy (Optional[str]) –
在 2.0.0 版本中新增。
注意
此参数正在开发中。
用于训练多目标模型(包括多目标回归和多类分类)的策略。有关更多信息,请参阅 Multiple Outputs。
one_output_per_tree
: 每个目标一个模型。multi_output_tree
: 使用多目标树。
eval_metric (Union[str, List[str], Callable, NoneType]) –
在 1.6.0 版本中新增。
用于监控训练结果和提前停止的指标。它可以是字符串或字符串列表,作为 XGBoost 中预定义指标的名称(参见 XGBoost Parameters),也可以是
sklearn.metrics
中的指标之一,或者任何看起来像 sklearn.metrics 的用户自定义指标。如果同时提供了自定义目标,则自定义指标应实现相应的反向链接函数。
与 scikit-learn 中常用的 scoring 参数不同,当提供可调用对象时,它被认为是代价函数,XGBoost 默认会在提前停止期间最小化结果。
关于提前停止的高级用法,例如直接选择最大化而不是最小化,请参阅
xgboost.callback.EarlyStopping
。有关详细信息,请参阅 Custom Objective and Evaluation Metric 和 Custom objective and metric。
from sklearn.datasets import load_diabetes from sklearn.metrics import mean_absolute_error X, y = load_diabetes(return_X_y=True) reg = xgb.XGBRegressor( tree_method="hist", eval_metric=mean_absolute_error, ) reg.fit(X, y, eval_set=[(X, y)])
early_stopping_rounds (Optional[int]) –
在 1.6.0 版本中新增。
激活早停。验证指标需要在每early_stopping_rounds轮训练中至少改善一次才能继续训练。要求在
fit()
中至少包含一个eval_set项。如果发生早停,模型将具有两个额外的属性:
best_score
和best_iteration
。这些属性由predict()
和apply()
方法使用,以在推理过程中确定最优的树数量。如果用户希望访问完整的模型(包括早停后构建的树),他们可以在这些推理方法中指定iteration_range。此外,其他实用工具(如模型绘制)也可以使用整个模型。如果您更喜欢丢弃 best_iteration 之后的树,请考虑使用回调函数
xgboost.callback.EarlyStopping
。如果在 eval_set 中有多个项目,则使用最后一个条目进行提前停止。如果在 eval_metric 中有多个指标,则使用最后一个指标进行提前停止。
callbacks (Optional[List[xgboost.callback.TrainingCallback]]) –
在每次迭代结束时应用的 callback 函数列表。可以使用 Callback API 中预定义的回调。
注意
callback 中的状态在训练期间不会保留,这意味着 callback 对象不能在未经重新初始化或深拷贝的情况下重复用于多个训练会话。
for params in parameters_grid: # be sure to (re)initialize the callbacks before each run callbacks = [xgb.callback.LearningRateScheduler(custom_rates)] reg = xgboost.XGBRegressor(**params, callbacks=callbacks) reg.fit(X, y)
XGBoost Booster 对象的关键字参数。参数的完整文档可以在 这里 找到。尝试通过构造函数参数和 **kwargs 字典同时设置参数将导致 TypeError。
注意
**kwargs 不受 scikit-learn 支持
**kwargs 不受 scikit-learn 支持。我们不保证通过此参数传递的参数能与 scikit-learn 正确交互。
注意
自定义目标函数
可以为
objective
参数提供自定义目标函数。在这种情况下,它应该具有签名objective(y_true, y_pred) -> [grad, hess]
或objective(y_true, y_pred, *, sample_weight) -> [grad, hess]
- y_true: array_like of shape [n_samples]
目标值
- y_pred: array_like of shape [n_samples]
预测值
- sample_weight
可选的样本权重。
- grad: array_like of shape [n_samples]
每个样本点的梯度值。
- hess: array_like of shape [n_samples]
每个样本点的二阶导数值
请注意,如果自定义目标为 Hessian 产生负值,这些值将被裁剪。如果目标是非凸的,也可以考虑使用期望的 Hessian(Fisher 信息)。
- apply(X, iteration_range=None)
返回每个样本在每棵树中的预测叶子。如果模型使用早停进行训练,则
best_iteration
会自动使用。- 参数:
- 返回:
X_leaves – 对于 X 中的每个数据点 x 和每棵树,返回 x 最终到达的叶子索引。叶子的编号在
[0; 2**(self.max_depth+1))
范围内,编号可能存在间隔。- 返回类型:
array_like, shape=[n_samples, n_trees]
- property coef_: ndarray
系数属性
注意
系数仅对线性学习器定义
系数仅在选择线性模型作为基础学习器 (booster=gblinear) 时定义。对于其他基础学习器类型(如树学习器,booster=gbtree)则未定义。
- 返回:
coef_
- 返回类型:
形状为
[n_features]
或[n_classes, n_features]
的数组
- evals_result()
返回评估结果。
如果将eval_set传递给
fit()
函数,可以调用evals_result()
来获取所有传入的eval_sets的评估结果。如果同时将eval_metric传递给fit()
函数,则evals_result将包含传递给fit()
函数的eval_metrics。返回的评估结果是一个字典
{'validation_0': {'logloss': ['0.604835', '0.531479']}, 'validation_1': {'logloss': ['0.41965', '0.17686']}}
- 返回类型:
evals_result
- property feature_importances_: ndarray
特征重要性属性,返回值取决于 importance_type 参数。当模型使用多类/多标签/多目标数据集训练时,特征重要性是所有目标的“平均值”。“平均值”的定义基于重要性类型。例如,如果重要性类型是“total_gain”,则得分是所有树中每次分裂的损失变化总和。
- 返回:
feature_importances_ (形状为
[n_features]
的数组,多类除外)线性模型返回形状为 (n_features, n_classes) 的数组
- fit(X, y, *, sample_weight=None, base_margin=None, eval_set=None, verbose=True, xgb_model=None, sample_weight_eval_set=None, base_margin_eval_set=None, feature_weights=None)
拟合梯度提升分类器。
请注意,多次调用
fit()
将导致模型对象从头开始重新拟合。要从上一个检查点继续训练,请显式传递xgb_model
参数。- 参数:
X (Any) –
输入特征矩阵。有关支持的类型列表,请参见 Supported data structures for various XGBoost functions。
当
tree_method
设置为hist
时,内部将使用QuantileDMatrix
而不是DMatrix
以节省内存。但是,当输入数据设备与算法不匹配时,这会影响性能。例如,如果输入是 CPU 上的 numpy 数组但使用cuda
进行训练,则数据首先在 CPU 上处理,然后传输到 GPU。y (Any) – 标签
sample_weight (Any | None) – 实例权重
eval_set (Sequence[Tuple[Any, Any]] | None) – 用作验证集 (X, y) 元组对的列表,将计算这些验证集的指标。验证指标将帮助我们跟踪模型的性能。
verbose (bool | int | None) – 如果 verbose 为 True 且使用了评估集,则在每个提升阶段将验证集上衡量的评估指标打印到 stdout。如果 verbose 是一个整数,则在每 verbose 个提升阶段打印评估指标。使用 early_stopping_rounds 找到的最后一个提升阶段/提升阶段也会被打印。
xgb_model (Booster | str | XGBModel | None) – 要加载的文件名或 ‘Booster’ 实例 XGBoost 模型,可在训练前加载(允许继续训练)。
sample_weight_eval_set (Sequence[Any] | None) – 形式为 [L_1, L_2, …, L_n] 的列表,其中每个 L_i 是一个类数组对象,存储第 i 个验证集的实例权重。
base_margin_eval_set (Sequence[Any] | None) – 形式为 [M_1, M_2, …, M_n] 的列表,其中每个 M_i 是一个类数组对象,存储第 i 个验证集的基准边距 (base margin)。
feature_weights (Any | None) –
自 3.0.0 版本起已弃用。
请改用feature_weights在
__init__()
或set_params()
中。
- 返回类型:
- get_booster()
获取此模型底层的 xgboost Booster。
如果在 fit 方法未被调用时,这将引发异常。
- 返回:
booster
- 返回类型:
底层模型的 xgboost Booster 实例
- get_metadata_routing()
获取此对象的元数据路由。
请查阅用户指南,了解路由机制的工作原理。
- 返回:
routing – 一个
MetadataRequest
,封装了路由信息。- 返回类型:
MetadataRequest
- property intercept_: ndarray
截距(偏差)属性
对于基于树的模型,返回的值是 base_score。
- 返回:
intercept_
- 返回类型:
形状为
(1,)
或[n_classes]
的数组
- load_model(fname)
从文件或 bytearray 加载模型。
模型以 XGBoost 内部格式保存,该格式在各种 XGBoost 接口中通用。Python Booster 对象的辅助属性(例如 feature_names)仅在使用 JSON 或 UBJSON(默认)格式时保存。此外,不属于模型的参数(如指标、
max_depth
等)不会保存,有关更多信息,请参阅 Model IO。model.save_model("model.json") model.load_model("model.json") # or model.save_model("model.ubj") model.load_model("model.ubj") # or buf = model.save_raw() model.load_model(buf)
- predict(X, *, output_margin=False, validate_features=True, base_margin=None, iteration_range=None)
使用X进行预测。如果模型使用早停进行训练,则
best_iteration
会自动使用。估计器默认使用inplace_predict,如果数据和估计器之间的设备不匹配,则会回退到使用DMatrix
。注意
此函数仅对 gbtree 和 dart 线程安全。
- 参数:
X (Any) – 用于预测的数据。有关支持的类型列表,请参阅各种 XGBoost 函数支持的数据结构。
output_margin (bool) – 是否输出原始未转换的 margin 值。
validate_features (bool) – 当此参数设置为 True 时,验证 Booster 和数据的 feature_names 是否完全一致。否则,假设 feature_names 是相同的。
iteration_range (Tuple[int | integer, int | integer] | None) –
指定预测中使用哪一层树。例如,如果随机森林训练了 100 轮。指定
iteration_range=(10, 20)
,则在此预测中仅使用在 [10, 20)(左闭右开区间)轮次期间构建的森林。在 1.4.0 版本中新增。
- 返回类型:
prediction
- predict_proba(X, validate_features=True, base_margin=None, iteration_range=None)
预测每个X样本属于给定类别的概率。如果模型使用早停进行训练,则
best_iteration
会自动使用。估计器默认使用inplace_predict,如果数据和估计器之间的设备不匹配,则会回退到使用DMatrix
。注意
此函数仅对 gbtree 和 dart 线程安全。
- 参数:
X (Any) – 特征矩阵。有关支持的类型列表,请参阅各种 XGBoost 函数支持的数据结构。
validate_features (bool) – 当此参数设置为 True 时,验证 Booster 和数据的 feature_names 是否完全一致。否则,假设 feature_names 是相同的。
iteration_range (Tuple[int | integer, int | integer] | None) – 指定预测中使用哪一层树。例如,如果随机森林训练了 100 轮。指定 iteration_range=(10, 20),则在此预测中仅使用在 [10, 20)(左闭右开区间)轮次期间构建的森林。
- 返回:
一个 numpy 数组,形状类似数组,形状为 (n_samples, n_classes),包含每个数据样本属于给定类别的概率。
- 返回类型:
prediction
- save_model(fname)
将模型保存到文件。
模型以 XGBoost 内部格式保存,该格式在各种 XGBoost 接口中通用。Python Booster 对象的辅助属性(例如 feature_names)仅在使用 JSON 或 UBJSON(默认)格式时保存。此外,不属于模型的参数(如指标、
max_depth
等)不会保存,有关更多信息,请参阅 Model IO。model.save_model("model.json") # or model.save_model("model.ubj")
- score(X, y, sample_weight=None)
返回给定测试数据和标签的平均准确率。
在多标签分类中,这是子集准确率,这是一个严格的指标,因为它要求每个样本的每个标签集合都被正确预测。
- 参数:
X (array-like of shape (n_samples, n_features)) – 测试样本。
y (array-like of shape (n_samples,) or (n_samples, n_outputs)) – X 的真实标签。
sample_weight (array-like of shape (n_samples,), default=None) – 样本权重。
- 返回:
score –
self.predict(X)
相对于 y 的平均准确率。- 返回类型:
- set_fit_request(*, base_margin='$UNCHANGED$', base_margin_eval_set='$UNCHANGED$', eval_set='$UNCHANGED$', feature_weights='$UNCHANGED$', sample_weight='$UNCHANGED$', sample_weight_eval_set='$UNCHANGED$', verbose='$UNCHANGED$', xgb_model='$UNCHANGED$')
请求传递给
fit
方法的元数据。请注意,此方法仅在
enable_metadata_routing=True
时相关(参见sklearn.set_config()
)。请参阅用户指南,了解路由机制的工作原理。每个参数的选项如下:
True
: 请求元数据,如果提供,则传递给fit
。如果未提供元数据,则忽略该请求。False
: 不请求元数据,元估计器不会将其传递给fit
。None
: 不请求元数据,如果用户提供了元数据,元估计器将引发错误。str
: 应使用给定的别名而不是原始名称将元数据传递给元估计器。
默认值 (
sklearn.utils.metadata_routing.UNCHANGED
) 保留现有请求。这允许您更改某些参数的请求而不更改其他参数。添加于 1.3 版本。
注意
此方法仅在此估计器用作元估计器的子估计器时相关,例如在
Pipeline
中使用时。否则,它无效。- 参数:
base_margin (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于
fit
方法中base_margin
参数的元数据路由。base_margin_eval_set (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于
fit
方法中base_margin_eval_set
参数的元数据路由。eval_set (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于
fit
方法中eval_set
参数的元数据路由。feature_weights (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于
fit
方法中feature_weights
参数的元数据路由。sample_weight (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于
fit
方法中sample_weight
参数的元数据路由。sample_weight_eval_set (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于
fit
方法中sample_weight_eval_set
参数的元数据路由。verbose (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于
fit
方法中verbose
参数的元数据路由。xgb_model (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于
fit
方法中xgb_model
参数的元数据路由。self (XGBRFClassifier)
- 返回:
self – 更新后的对象。
- 返回类型:
- set_params(**params)
设置此估计器的参数。修改了 sklearn 方法以允许未知关键字参数。这使得在 sklearn 网格搜索中可以使用未定义为成员变量的全部 xgboost 参数范围。
- 返回类型:
自身
- 参数:
params (Any)
- set_predict_proba_request(*, base_margin='$UNCHANGED$', iteration_range='$UNCHANGED$', validate_features='$UNCHANGED$')
请求传递给
predict_proba
方法的元数据。请注意,此方法仅在
enable_metadata_routing=True
时相关(参见sklearn.set_config()
)。请参阅用户指南,了解路由机制的工作原理。每个参数的选项如下:
True
: 请求元数据,如果提供,则传递给predict_proba
。如果未提供元数据,则忽略该请求。False
: 不请求元数据,元估计器不会将其传递给predict_proba
。None
: 不请求元数据,如果用户提供了元数据,元估计器将引发错误。str
: 应使用给定的别名而不是原始名称将元数据传递给元估计器。
默认值 (
sklearn.utils.metadata_routing.UNCHANGED
) 保留现有请求。这允许您更改某些参数的请求而不更改其他参数。添加于 1.3 版本。
注意
此方法仅在此估计器用作元估计器的子估计器时相关,例如在
Pipeline
中使用时。否则,它无效。- 参数:
base_margin (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于
predict_proba
方法中base_margin
参数的元数据路由。iteration_range (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于
predict_proba
方法中iteration_range
参数的元数据路由。validate_features (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于
predict_proba
方法中validate_features
参数的元数据路由。self (XGBRFClassifier)
- 返回:
self – 更新后的对象。
- 返回类型:
- set_predict_request(*, base_margin='$UNCHANGED$', iteration_range='$UNCHANGED$', output_margin='$UNCHANGED$', validate_features='$UNCHANGED$')
请求传递给
predict
方法的元数据。请注意,此方法仅在
enable_metadata_routing=True
时相关(参见sklearn.set_config()
)。请参阅用户指南,了解路由机制的工作原理。每个参数的选项如下:
True
: 请求元数据,如果提供,则传递给predict
。如果未提供元数据,则忽略该请求。False
: 不请求元数据,元估计器不会将其传递给predict
。None
: 不请求元数据,如果用户提供了元数据,元估计器将引发错误。str
: 应使用给定的别名而不是原始名称将元数据传递给元估计器。
默认值 (
sklearn.utils.metadata_routing.UNCHANGED
) 保留现有请求。这允许您更改某些参数的请求而不更改其他参数。添加于 1.3 版本。
注意
此方法仅在此估计器用作元估计器的子估计器时相关,例如在
Pipeline
中使用时。否则,它无效。- 参数:
base_margin (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于
predict
方法中base_margin
参数的元数据路由。iteration_range (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于
predict
方法中iteration_range
参数的元数据路由。output_margin (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于
predict
方法中output_margin
参数的元数据路由。validate_features (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于
predict
方法中validate_features
参数的元数据路由。self (XGBRFClassifier)
- 返回:
self – 更新后的对象。
- 返回类型:
- set_score_request(*, sample_weight='$UNCHANGED$')
请求传递给
score
方法的元数据。请注意,此方法仅在
enable_metadata_routing=True
时相关(参见sklearn.set_config()
)。请参阅用户指南,了解路由机制的工作原理。每个参数的选项如下:
True
: 请求元数据,如果提供,则传递给score
。如果未提供元数据,则忽略该请求。False
: 不请求元数据,元估计器不会将其传递给score
。None
: 不请求元数据,如果用户提供了元数据,元估计器将引发错误。str
: 应使用给定的别名而不是原始名称将元数据传递给元估计器。
默认值 (
sklearn.utils.metadata_routing.UNCHANGED
) 保留现有请求。这允许您更改某些参数的请求而不更改其他参数。添加于 1.3 版本。
注意
此方法仅在此估计器用作元估计器的子估计器时相关,例如在
Pipeline
中使用时。否则,它无效。- 参数:
sample_weight (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于
score
方法中sample_weight
参数的元数据路由。self (XGBRFClassifier)
- 返回:
self – 更新后的对象。
- 返回类型:
绘图API
绘图库。
- xgboost.plot_importance(booster, *, ax=None, height=0.2, xlim=None, ylim=None, title='Feature importance', xlabel='Importance score', ylabel='Features', fmap='', importance_type='weight', max_num_features=None, grid=True, show_values=True, values_format='{v}', **kwargs)
根据已拟合的树绘制重要性。
- 参数:
booster (XGBModel | Booster | dict) – Booster 或 XGBModel 实例,或 Booster.get_fscore() 获取的字典
ax (matplotlib Axes) – 目标 Axes 实例。如果为 None,将创建新的图形和 Axes。
grid (bool) – 开启或关闭 Axes 网格。默认值为 True (开启)。
importance_type (str) –
重要性如何计算:可以是 “weight”、“gain” 或 “cover”
“weight” 表示特征在树中出现的次数
“gain” 表示使用该特征进行分割的平均增益
“cover” 表示使用该特征进行分割的平均覆盖度,覆盖度定义为受该分割影响的样本数量
max_num_features (int | None) – 图表中显示的最大顶部特征数量。如果为 None,则显示所有特征。
height (float) – 条形图高度,传递给 ax.barh()
xlim (tuple | None) – 传递给 axes.xlim() 的元组
ylim (tuple | None) – 传递给 axes.ylim() 的元组
title (str) – Axes 标题。要禁用,传递 None。
xlabel (str) – X 轴标题标签。要禁用,传递 None。
ylabel (str) – Y 轴标题标签。要禁用,传递 None。
show_values (bool) – 在图表中显示值。要禁用,传递 False。
values_format (str) – 值的格式字符串。“v” 将被替换为特征重要性的值。例如,传递 “{v:.2f}” 可以将图表上每个值的小数点后的位数限制为两位。
kwargs (Any) – 传递给 ax.barh() 的其他关键字参数
- 返回:
ax
- 返回类型:
matplotlib Axes
- xgboost.plot_tree(booster, *, fmap='', num_trees=None, rankdir=None, ax=None, with_stats=False, tree_idx=0, **kwargs)
绘制指定的树。
- 参数:
booster (Booster | XGBModel) – Booster 或 XGBModel 实例
fmap (str (optional)) – 特征映射文件的名称
num_trees (int | None) –
自版本 3.0 起已弃用。
rankdir (str, default "TB") – 通过 graph_attr 传递给 graphviz
ax (matplotlib Axes, default None) – 目标 Axes 实例。如果为 None,将创建新的图形和 Axes。
with_stats (bool) –
自版本 3.0 添加。
参阅
to_graphviz()
。tree_idx (int) –
自版本 3.0 添加。
参阅
to_graphviz()
。kwargs (Any) – 传递给
to_graphviz()
的其他关键字参数
- 返回:
ax
- 返回类型:
matplotlib Axes
- xgboost.to_graphviz(booster, *, fmap='', num_trees=None, rankdir=None, yes_color=None, no_color=None, condition_node_params=None, leaf_node_params=None, with_stats=False, tree_idx=0, **kwargs)
将指定的树转换为 graphviz 实例。IPython 可以自动绘制返回的 graphviz 实例。否则,您应调用返回的 graphviz 实例的 .render() 方法。
- 参数:
booster (Booster | XGBModel) – Booster 或 XGBModel 实例
num_trees (int | None) –
自版本 3.0 起已弃用。
指定目标树的序号
rankdir (str | None) – 通过 graph_attr 传递给 graphviz
yes_color (str | None) – 满足节点条件时的边颜色。
no_color (str | None) – 不满足节点条件时的边颜色。
condition_node_params (dict | None) –
graphviz 的条件节点配置。示例
{'shape': 'box', 'style': 'filled,rounded', 'fillcolor': '#78bceb'}
leaf_node_params (dict | None) –
graphviz 的叶节点配置。示例
{'shape': 'box', 'style': 'filled', 'fillcolor': '#e48038'}
with_stats (bool) –
自版本 3.0 添加。
控制是否应包含分割统计信息。
tree_idx (int) –
自版本 3.0 添加。
指定目标树的序数索引。
kwargs (Any) – 传递给 graphviz graph_attr 的其他关键字参数,例如
graph [ {key} = {value} ]
- 返回:
graph
- 返回类型:
graphviz.Source
回调 API
包含训练例程的回调库。有关快速介绍,请参阅 回调函数。
- class xgboost.callback.TrainingCallback
训练回调的接口。
在 1.3.0 版本中新增。
- after_iteration(model, epoch, evals_log)
每次迭代后运行。训练应停止时返回 True。
- before_iteration(model, epoch, evals_log)
每次迭代前运行。训练应停止时返回 True。有关详细信息,请参阅
after_iteration()
。
- class xgboost.callback.EvaluationMonitor(rank=0, period=1, show_stdv=False, logger=<function communicator_print>)
基类:
TrainingCallback
在每次迭代时打印评估结果。
在 1.3.0 版本中新增。
- 参数:
- after_iteration(model, epoch, evals_log)
每次迭代后运行。训练应停止时返回 True。
- class xgboost.callback.EarlyStopping(*, rounds, metric_name=None, data_name=None, maximize=None, save_best=False, min_delta=0.0)
基类:
TrainingCallback
用于提前停止的回调函数
在 1.3.0 版本中新增。
- 参数:
rounds (int) – 提前停止的迭代次数。
metric_name (str | None) – 用于提前停止的指标名称。
data_name (str | None) – 用于提前停止的数据集名称。
maximize (bool | None) – 是否最大化评估指标。None 表示自动(不推荐)。
save_best (bool | None) – 训练是否应返回最佳模型或最后一个模型。如果设置为 True,它将只保留检测到的最佳迭代之前的 Boosting 轮次,丢弃之后的轮次。这仅支持树方法(不支持 gblinear)。此外,cv 函数不返回模型,此参数不适用。
min_delta (float) –
自版本 1.5.0 添加。
视为改进的最小绝对分数变化。
示例
es = xgboost.callback.EarlyStopping( rounds=2, min_delta=1e-3, save_best=True, maximize=False, data_name="validation_0", metric_name="mlogloss", ) clf = xgboost.XGBClassifier(tree_method="hist", device="cuda", callbacks=[es]) X, y = load_digits(return_X_y=True) clf.fit(X, y, eval_set=[(X, y)])
- after_iteration(model, epoch, evals_log)
每次迭代后运行。训练应停止时返回 True。
- class xgboost.callback.LearningRateScheduler(learning_rates)
基类:
TrainingCallback
用于调度学习率的回调函数。
在 1.3.0 版本中新增。
- class xgboost.callback.TrainingCheckPoint(directory, name='model', as_pickle=False, interval=100)
基类:
TrainingCallback
检查点操作。建议用户创建自己的回调函数进行检查点操作,因为 XGBoost 不处理分布式文件系统。在分布式系统上进行检查点操作时,请务必了解工作进程的排名,以避免多个工作进程保存到同一位置。
在 1.3.0 版本中新增。
自 XGBoost 2.1.0 起,默认格式更改为 UBJSON。
- 参数:
- after_iteration(model, epoch, evals_log)
每次迭代后运行。训练应停止时返回 True。
Dask API
PySpark API
PySpark XGBoost 集成接口
- class xgboost.spark.SparkXGBClassifier(*, features_col='features', label_col='label', prediction_col='prediction', probability_col='probability', raw_prediction_col='rawPrediction', pred_contrib_col=None, validation_indicator_col=None, weight_col=None, base_margin_col=None, num_workers=1, use_gpu=None, device=None, force_repartition=False, repartition_random_shuffle=False, enable_sparse_data_optim=False, launch_tracker_on_driver=True, coll_cfg=None, **kwargs)
基类:
_SparkXGBEstimator
,HasProbabilityCol
,HasRawPredictionCol
SparkXGBClassifier 是一个 PySpark ML 估计器。它基于 XGBoost python 库实现了 XGBoost 分类算法,并且可以在 PySpark Pipeline 和 PySpark ML 元算法中使用,例如 -
CrossValidator
/ -TrainValidationSplit
/ -OneVsRest
SparkXGBClassifier 自动支持
xgboost.XGBClassifier
构造函数中的大多数参数以及xgboost.XGBClassifier.fit()
和xgboost.XGBClassifier.predict()
方法中使用的参数。要启用 GPU 支持,请将 device 设置为 cuda 或 gpu。
SparkXGBClassifier 不支持显式设置 base_margin,但支持另一个参数 base_margin_col。有关详细信息,请参阅下面的文档。
SparkXGBClassifier 不支持设置 output_margin,但我们可以从原始预测列中获取输出边距。有关详细信息,请参阅下面的 raw_prediction_col 参数文档。
SparkXGBClassifier 不支持 validate_features 和 output_margin 参数。
SparkXGBClassifier 不支持设置 nthread xgboost 参数,相反,每个 xgboost 工作进程的 nthread 参数将被设置为等于 spark.task.cpus 配置值。
- 参数:
features_col (str | List[str]) – 当值为字符串时,要求特征列为向量类型。当值为字符串列表时,要求所有特征列为数值类型。
label_col (str) – 标签列名称。默认为 “label”。
prediction_col (str) – 预测列名称。默认为 “prediction”
probability_col (str) – 预测类别条件概率的列名称。默认为 probabilityCol
raw_prediction_col (str) – output_margin=True 由 rawPredictionCol 输出列隐式支持,该列始终返回预测的边距值。
pred_contrib_col (pyspark.ml.param.Param[str]) – 贡献预测列名称。
validation_indicator_col (str | None) – 对于与使用评估数据集监督训练 xgboost.XGBClassifier 相关的参数,请设置
xgboost.spark.SparkXGBClassifier.validation_indicator_col
参数,而不是在 xgboost.XGBClassifier fit 方法中设置 eval_set 参数。weight_col (str | None) – 要指定训练和验证数据集的权重,请设置
xgboost.spark.SparkXGBClassifier.weight_col
参数,而不是在 xgboost.XGBClassifier fit 方法中设置 sample_weight 和 sample_weight_eval_set 参数。base_margin_col (str | None) – 要指定训练和验证数据集的基础边距,请设置
xgboost.spark.SparkXGBClassifier.base_margin_col
参数,而不是在 xgboost.XGBClassifier fit 方法中设置 base_margin 和 base_margin_eval_set。num_workers (int) – 用于训练的 XGBoost 工作进程数量。每个 XGBoost 工作进程对应一个 Spark 任务。
use_gpu (bool | None) –
自版本 2.0.0 起已弃用。
请改用 device。
device (str | None) –
在 2.0.0 版本中新增。
XGBoost 工作进程的设备,可用选项有 cpu、cuda 和 gpu。
force_repartition (bool) – 一个布尔值,指定在 XGBoost 训练前是否强制对输入数据集进行重新分区。
repartition_random_shuffle (bool) – 一个布尔值,指定在需要重新分区时是否随机混洗数据集。
enable_sparse_data_optim (bool) – 一个布尔值,指定是否启用稀疏数据优化,如果为 True,将从稀疏矩阵而不是密集矩阵构建 Xgboost DMatrix 对象。
launch_tracker_on_driver (bool) – 一个布尔值,指示 tracker 应在驱动程序端还是执行程序端启动。
kwargs (Any) – XGBoost 参数的字典,请参阅 https://docs.xgboost.com.cn/en/release_3.0.0/parameter.html
注意
上面的参数图表包含需要特殊处理的参数。有关完整参数列表,请参阅下面的 Param(parent=… 条目。
此 API 是实验性的。
示例
>>> from xgboost.spark import SparkXGBClassifier >>> from pyspark.ml.linalg import Vectors >>> df_train = spark.createDataFrame([ ... (Vectors.dense(1.0, 2.0, 3.0), 0, False, 1.0), ... (Vectors.sparse(3, {1: 1.0, 2: 5.5}), 1, False, 2.0), ... (Vectors.dense(4.0, 5.0, 6.0), 0, True, 1.0), ... (Vectors.sparse(3, {1: 6.0, 2: 7.5}), 1, True, 2.0), ... ], ["features", "label", "isVal", "weight"]) >>> df_test = spark.createDataFrame([ ... (Vectors.dense(1.0, 2.0, 3.0), ), ... ], ["features"]) >>> xgb_classifier = SparkXGBClassifier(max_depth=5, missing=0.0, ... validation_indicator_col='isVal', weight_col='weight', ... early_stopping_rounds=1, eval_metric='logloss') >>> xgb_clf_model = xgb_classifier.fit(df_train) >>> xgb_clf_model.transform(df_test).show()
- copy(extra=None)
创建此实例的副本,具有相同的 uid 和一些额外参数。默认实现使用
copy.copy()
创建浅层副本,然后复制嵌入参数和额外参数并返回副本。如果默认方法不足,子类应覆盖此方法。- 参数:
extra (dict, optional) – 复制到新实例的额外参数
self (P)
- 返回:
此实例的副本
- 返回类型:
参数
- extractParamMap(extra=None)
提取嵌入的默认参数值和用户提供的值,然后将其与输入中的额外值合并到平面参数映射中,如果存在冲突,则使用后者的值,即排序如下:默认参数值 < 用户提供的值 < 额外值。
- fit(dataset, params=None)
使用可选参数将模型拟合到输入数据集。
在 1.3.0 版本中新增。
- 参数:
dataset (
pyspark.sql.DataFrame
) – 输入数据集。params (dict or list or tuple, optional) – 覆盖嵌入参数的可选参数映射。如果提供参数映射列表/元组,则此函数将在每个参数映射上调用 fit 并返回模型列表。
- 返回:
拟合的模型
- 返回类型:
Transformer
或Transformer
列表
- fitMultiple(dataset, paramMaps)
对于 paramMaps 中的每个参数映射,将模型拟合到输入数据集。
自版本 2.3.0 添加。
- 参数:
dataset (
pyspark.sql.DataFrame
) – 输入数据集。paramMaps (
collections.abc.Sequence
) – 参数映射序列。
- 返回:
一个线程安全的迭代器,其中包含每个参数映射的模型。每次调用 next(modelIterator) 将返回 (index, model),其中 model 是使用 paramMaps[index] 拟合的。index 值可能不是连续的。
- 返回类型:
_FitMultipleIterator
- getOrDefault(param)
获取用户提供的参数映射中某个参数的值或其默认值。如果两者都未设置,则引发错误。
- classmethod read()
返回用于加载估计器的读取器。
- 返回类型:
SparkXGBReader
- uid
对象的唯一 ID。
- write()
返回用于保存估计器的写入器。
- 返回类型:
SparkXGBWriter
- class xgboost.spark.SparkXGBClassifierModel(xgb_sklearn_model=None, training_summary=None)
基类:
_ClassificationModel
xgboost.spark.SparkXGBClassifier.fit() 返回的模型
注意
此 API 是实验性的。
- 参数:
xgb_sklearn_model (XGBModel | None)
training_summary (XGBoostTrainingSummary | None)
- copy(extra=None)
创建此实例的副本,具有相同的 uid 和一些额外参数。默认实现使用
copy.copy()
创建浅层副本,然后复制嵌入参数和额外参数并返回副本。如果默认方法不足,子类应覆盖此方法。- 参数:
extra (dict, optional) – 复制到新实例的额外参数
self (P)
- 返回:
此实例的副本
- 返回类型:
参数
- extractParamMap(extra=None)
提取嵌入的默认参数值和用户提供的值,然后将其与输入中的额外值合并到平面参数映射中,如果存在冲突,则使用后者的值,即排序如下:默认参数值 < 用户提供的值 < 额外值。
- getOrDefault(param)
获取用户提供的参数映射中某个参数的值或其默认值。如果两者都未设置,则引发错误。
- get_feature_importances(importance_type='weight')
获取每个特征的特征重要性。重要性类型可以定义为
‘weight’: 在所有树中特征被用于分割数据的次数。
‘gain’: 特征在所有分割中获得的平均增益。
‘cover’: 特征在所有分割中覆盖的平均样本数(覆盖度)。
‘total_gain’: 特征在所有分割中获得的总增益。
‘total_cover’: 特征在所有分割中覆盖的总样本数(覆盖度)。
- classmethod read()
返回用于加载模型的读取器。
- 返回类型:
SparkXGBModelReader
- transform(dataset, params=None)
使用可选参数转换输入数据集。
在 1.3.0 版本中新增。
- 参数:
dataset (
pyspark.sql.DataFrame
) – 输入数据集params (dict, optional) – 覆盖嵌入参数的可选参数映射。
- 返回:
转换后的数据集
- 返回类型:
- uid
对象的唯一 ID。
- write()
返回用于保存模型的写入器。
- 返回类型:
SparkXGBModelWriter
- class xgboost.spark.SparkXGBRegressor(*, features_col='features', label_col='label', prediction_col='prediction', pred_contrib_col=None, validation_indicator_col=None, weight_col=None, base_margin_col=None, num_workers=1, use_gpu=None, device=None, force_repartition=False, repartition_random_shuffle=False, enable_sparse_data_optim=False, launch_tracker_on_driver=True, coll_cfg=None, **kwargs)
基类:
_SparkXGBEstimator
SparkXGBRegressor 是一个 PySpark ML 估计器。它实现了基于 XGBoost python 库的 XGBoost 回归算法,并且可以用于 PySpark Pipeline 和 PySpark ML 元算法,例如 -
CrossValidator
/ -TrainValidationSplit
/ -OneVsRest
SparkXGBRegressor 自动支持
xgboost.XGBRegressor
构造函数中的大部分参数以及xgboost.XGBRegressor.fit()
和xgboost.XGBRegressor.predict()
方法中使用的大部分参数。要启用 GPU 支持,请将 device 设置为 cuda 或 gpu。
SparkXGBRegressor 也不支持显式设置 base_margin 参数,但支持另一个参数称为 base_margin_col。更多细节请参阅下面的文档。
SparkXGBRegressor 不支持 validate_features 和 output_margin 参数。
SparkXGBRegressor 不支持设置 nthread xgboost 参数,相反,每个 xgboost 工作器的 nthread 参数将被设置为等于 spark.task.cpus 配置值。
- 参数:
features_col (str | List[str]) – 当值为字符串时,要求特征列为向量类型。当值为字符串列表时,要求所有特征列为数值类型。
label_col (str) – 标签列名称。默认为 “label”。
prediction_col (str) – 预测列名称。默认为 “prediction”
pred_contrib_col (pyspark.ml.param.Param[str]) – 贡献预测列名称。
validation_indicator_col (str | None) – 对于与使用评估数据集监督进行 xgboost.XGBRegressor 训练相关的参数,请设置
xgboost.spark.SparkXGBRegressor.validation_indicator_col
参数,而不是在 xgboost.XGBRegressor 的 fit 方法中设置 eval_set 参数。weight_col (str | None) – 要指定训练和验证数据集的权重,请设置
xgboost.spark.SparkXGBRegressor.weight_col
参数,而不是在 xgboost.XGBRegressor 的 fit 方法中设置 sample_weight 和 sample_weight_eval_set 参数。base_margin_col (str | None) – 要指定训练和验证数据集的基准边距,请设置
xgboost.spark.SparkXGBRegressor.base_margin_col
参数,而不是在 xgboost.XGBRegressor 的 fit 方法中设置 base_margin 和 base_margin_eval_set。num_workers (int) – 用于训练的 XGBoost 工作进程数量。每个 XGBoost 工作进程对应一个 Spark 任务。
use_gpu (bool | None) –
自版本 2.0.0 起已弃用。
请改用 device。
device (str | None) –
在 2.0.0 版本中新增。
XGBoost 工作进程的设备,可用选项有 cpu、cuda 和 gpu。
force_repartition (bool) – 一个布尔值,指定在 XGBoost 训练前是否强制对输入数据集进行重新分区。
repartition_random_shuffle (bool) – 一个布尔值,指定在需要重新分区时是否随机混洗数据集。
enable_sparse_data_optim (bool) – 一个布尔值,指定是否启用稀疏数据优化,如果为 True,将从稀疏矩阵而不是密集矩阵构建 Xgboost DMatrix 对象。
launch_tracker_on_driver (bool) – 一个布尔值,指示 tracker 应在驱动程序端还是执行程序端启动。
kwargs (Any) – XGBoost 参数的字典,请参阅 https://docs.xgboost.com.cn/en/release_3.0.0/parameter.html
注意
上面的参数图表包含需要特殊处理的参数。有关完整参数列表,请参阅下面的 Param(parent=… 条目。
此 API 是实验性的。
示例
>>> from xgboost.spark import SparkXGBRegressor >>> from pyspark.ml.linalg import Vectors >>> df_train = spark.createDataFrame([ ... (Vectors.dense(1.0, 2.0, 3.0), 0, False, 1.0), ... (Vectors.sparse(3, {1: 1.0, 2: 5.5}), 1, False, 2.0), ... (Vectors.dense(4.0, 5.0, 6.0), 2, True, 1.0), ... (Vectors.sparse(3, {1: 6.0, 2: 7.5}), 3, True, 2.0), ... ], ["features", "label", "isVal", "weight"]) >>> df_test = spark.createDataFrame([ ... (Vectors.dense(1.0, 2.0, 3.0), ), ... (Vectors.sparse(3, {1: 1.0, 2: 5.5}), ) ... ], ["features"]) >>> xgb_regressor = SparkXGBRegressor(max_depth=5, missing=0.0, ... validation_indicator_col='isVal', weight_col='weight', ... early_stopping_rounds=1, eval_metric='rmse') >>> xgb_reg_model = xgb_regressor.fit(df_train) >>> xgb_reg_model.transform(df_test)
- copy(extra=None)
创建此实例的副本,具有相同的 uid 和一些额外参数。默认实现使用
copy.copy()
创建浅层副本,然后复制嵌入参数和额外参数并返回副本。如果默认方法不足,子类应覆盖此方法。- 参数:
extra (dict, optional) – 复制到新实例的额外参数
self (P)
- 返回:
此实例的副本
- 返回类型:
参数
- extractParamMap(extra=None)
提取嵌入的默认参数值和用户提供的值,然后将其与输入中的额外值合并到平面参数映射中,如果存在冲突,则使用后者的值,即排序如下:默认参数值 < 用户提供的值 < 额外值。
- fit(dataset, params=None)
使用可选参数将模型拟合到输入数据集。
在 1.3.0 版本中新增。
- 参数:
dataset (
pyspark.sql.DataFrame
) – 输入数据集。params (dict or list or tuple, optional) – 覆盖嵌入参数的可选参数映射。如果提供参数映射列表/元组,则此函数将在每个参数映射上调用 fit 并返回模型列表。
- 返回:
拟合的模型
- 返回类型:
Transformer
或Transformer
列表
- fitMultiple(dataset, paramMaps)
对于 paramMaps 中的每个参数映射,将模型拟合到输入数据集。
自版本 2.3.0 添加。
- 参数:
dataset (
pyspark.sql.DataFrame
) – 输入数据集。paramMaps (
collections.abc.Sequence
) – 参数映射序列。
- 返回:
一个线程安全的迭代器,其中包含每个参数映射的模型。每次调用 next(modelIterator) 将返回 (index, model),其中 model 是使用 paramMaps[index] 拟合的。index 值可能不是连续的。
- 返回类型:
_FitMultipleIterator
- getOrDefault(param)
获取用户提供的参数映射中某个参数的值或其默认值。如果两者都未设置,则引发错误。
- classmethod read()
返回用于加载估计器的读取器。
- 返回类型:
SparkXGBReader
- uid
对象的唯一 ID。
- write()
返回用于保存估计器的写入器。
- 返回类型:
SparkXGBWriter
- class xgboost.spark.SparkXGBRegressorModel(xgb_sklearn_model=None, training_summary=None)
基类:
_SparkXGBModel
由
xgboost.spark.SparkXGBRegressor.fit()
返回的模型注意
此 API 是实验性的。
- 参数:
xgb_sklearn_model (XGBModel | None)
training_summary (XGBoostTrainingSummary | None)
- copy(extra=None)
创建此实例的副本,具有相同的 uid 和一些额外参数。默认实现使用
copy.copy()
创建浅层副本,然后复制嵌入参数和额外参数并返回副本。如果默认方法不足,子类应覆盖此方法。- 参数:
extra (dict, optional) – 复制到新实例的额外参数
self (P)
- 返回:
此实例的副本
- 返回类型:
参数
- extractParamMap(extra=None)
提取嵌入的默认参数值和用户提供的值,然后将其与输入中的额外值合并到平面参数映射中,如果存在冲突,则使用后者的值,即排序如下:默认参数值 < 用户提供的值 < 额外值。
- getOrDefault(param)
获取用户提供的参数映射中某个参数的值或其默认值。如果两者都未设置,则引发错误。
- get_feature_importances(importance_type='weight')
获取每个特征的特征重要性。重要性类型可以定义为
‘weight’: 在所有树中特征被用于分割数据的次数。
‘gain’: 特征在所有分割中获得的平均增益。
‘cover’: 特征在所有分割中覆盖的平均样本数(覆盖度)。
‘total_gain’: 特征在所有分割中获得的总增益。
‘total_cover’: 特征在所有分割中覆盖的总样本数(覆盖度)。
- classmethod read()
返回用于加载模型的读取器。
- 返回类型:
SparkXGBModelReader
- transform(dataset, params=None)
使用可选参数转换输入数据集。
在 1.3.0 版本中新增。
- 参数:
dataset (
pyspark.sql.DataFrame
) – 输入数据集params (dict, optional) – 覆盖嵌入参数的可选参数映射。
- 返回:
转换后的数据集
- 返回类型:
- uid
对象的唯一 ID。
- write()
返回用于保存模型的写入器。
- 返回类型:
SparkXGBModelWriter
- class xgboost.spark.SparkXGBRanker(*, features_col='features', label_col='label', prediction_col='prediction', pred_contrib_col=None, validation_indicator_col=None, weight_col=None, base_margin_col=None, qid_col=None, num_workers=1, use_gpu=None, device=None, force_repartition=False, repartition_random_shuffle=False, enable_sparse_data_optim=False, launch_tracker_on_driver=True, coll_cfg=None, **kwargs)
基类:
_SparkXGBEstimator
SparkXGBRanker 是一个 PySpark ML 估计器。它实现了基于 XGBoost python 库的 XGBoost 排序算法,并且可以用于 PySpark Pipeline 和 PySpark ML 元算法,例如
CrossValidator
/TrainValidationSplit
/OneVsRest
SparkXGBRanker 自动支持
xgboost.XGBRanker
构造函数中的大部分参数以及xgboost.XGBRanker.fit()
和xgboost.XGBRanker.predict()
方法中使用的大部分参数。要启用 GPU 支持,请将 device 设置为 cuda 或 gpu。
SparkXGBRanker 也不支持显式设置 base_margin 参数,但支持另一个参数称为 base_margin_col。更多细节请参阅下面的文档。
SparkXGBRanker 不支持设置 output_margin 参数,但我们可以从原始预测列中获取输出边距。更多细节请参阅下面的 raw_prediction_col 参数文档。
SparkXGBRanker 不支持 validate_features 和 output_margin 参数。
SparkXGBRanker 不支持设置 nthread xgboost 参数,相反,每个 xgboost 工作器的 nthread 参数将被设置为等于 spark.task.cpus 配置值。
- 参数:
features_col (str | List[str]) – 当值为字符串时,要求特征列为向量类型。当值为字符串列表时,要求所有特征列为数值类型。
label_col (str) – 标签列名称。默认为 “label”。
prediction_col (str) – 预测列名称。默认为 “prediction”
pred_contrib_col (pyspark.ml.param.Param[str]) – 贡献预测列名称。
validation_indicator_col (str | None) – 对于与使用评估数据集监督进行 xgboost.XGBRanker 训练相关的参数,请设置
xgboost.spark.SparkXGBRanker.validation_indicator_col
参数,而不是在xgboost.XGBRanker
的 fit 方法中设置 eval_set 参数。weight_col (str | None) – 要指定训练和验证数据集的权重,请设置
xgboost.spark.SparkXGBRanker.weight_col
参数,而不是在xgboost.XGBRanker
的 fit 方法中设置 sample_weight 和 sample_weight_eval_set 参数。base_margin_col (str | None) – 要指定训练和验证数据集的基准边距,请设置
xgboost.spark.SparkXGBRanker.base_margin_col
参数,而不是在xgboost.XGBRanker
的 fit 方法中设置 base_margin 和 base_margin_eval_set。qid_col (str | None) – 查询 ID 列名。
num_workers (int) – 用于训练的 XGBoost 工作进程数量。每个 XGBoost 工作进程对应一个 Spark 任务。
use_gpu (bool | None) –
自版本 2.0.0 起已弃用。
请改用 device。
device (str | None) –
在 2.0.0 版本中新增。
XGBoost 工作进程的设备,可用选项有 cpu、cuda 和 gpu。
force_repartition (bool) – 一个布尔值,指定在 XGBoost 训练前是否强制对输入数据集进行重新分区。
repartition_random_shuffle (bool) – 一个布尔值,指定在需要重新分区时是否随机混洗数据集。
enable_sparse_data_optim (bool) – 一个布尔值,指定是否启用稀疏数据优化,如果为 True,将从稀疏矩阵而不是密集矩阵构建 Xgboost DMatrix 对象。
launch_tracker_on_driver (bool) – 一个布尔值,指示 tracker 应在驱动程序端还是执行程序端启动。
kwargs (Any) – XGBoost 参数的字典,请参阅 https://docs.xgboost.com.cn/en/release_3.0.0/parameter.html
注意: (..) – 上述参数图表包含需要特殊处理的参数。要查看完整参数列表,请参阅下面带有 Param(parent=… 的条目。
注意: – 此 API 为实验性。
示例
>>> from xgboost.spark import SparkXGBRanker >>> from pyspark.ml.linalg import Vectors >>> ranker = SparkXGBRanker(qid_col="qid") >>> df_train = spark.createDataFrame( ... [ ... (Vectors.dense(1.0, 2.0, 3.0), 0, 0), ... (Vectors.dense(4.0, 5.0, 6.0), 1, 0), ... (Vectors.dense(9.0, 4.0, 8.0), 2, 0), ... (Vectors.sparse(3, {1: 1.0, 2: 5.5}), 0, 1), ... (Vectors.sparse(3, {1: 6.0, 2: 7.5}), 1, 1), ... (Vectors.sparse(3, {1: 8.0, 2: 9.5}), 2, 1), ... ], ... ["features", "label", "qid"], ... ) >>> df_test = spark.createDataFrame( ... [ ... (Vectors.dense(1.5, 2.0, 3.0), 0), ... (Vectors.dense(4.5, 5.0, 6.0), 0), ... (Vectors.dense(9.0, 4.5, 8.0), 0), ... (Vectors.sparse(3, {1: 1.0, 2: 6.0}), 1), ... (Vectors.sparse(3, {1: 6.0, 2: 7.0}), 1), ... (Vectors.sparse(3, {1: 8.0, 2: 10.5}), 1), ... ], ... ["features", "qid"], ... ) >>> model = ranker.fit(df_train) >>> model.transform(df_test).show()
- copy(extra=None)
创建此实例的副本,具有相同的 uid 和一些额外参数。默认实现使用
copy.copy()
创建浅层副本,然后复制嵌入参数和额外参数并返回副本。如果默认方法不足,子类应覆盖此方法。- 参数:
extra (dict, optional) – 复制到新实例的额外参数
self (P)
- 返回:
此实例的副本
- 返回类型:
参数
- extractParamMap(extra=None)
提取嵌入的默认参数值和用户提供的值,然后将其与输入中的额外值合并到平面参数映射中,如果存在冲突,则使用后者的值,即排序如下:默认参数值 < 用户提供的值 < 额外值。
- fit(dataset, params=None)
使用可选参数将模型拟合到输入数据集。
在 1.3.0 版本中新增。
- 参数:
dataset (
pyspark.sql.DataFrame
) – 输入数据集。params (dict or list or tuple, optional) – 覆盖嵌入参数的可选参数映射。如果提供参数映射列表/元组,则此函数将在每个参数映射上调用 fit 并返回模型列表。
- 返回:
拟合的模型
- 返回类型:
Transformer
或Transformer
列表
- fitMultiple(dataset, paramMaps)
对于 paramMaps 中的每个参数映射,将模型拟合到输入数据集。
自版本 2.3.0 添加。
- 参数:
dataset (
pyspark.sql.DataFrame
) – 输入数据集。paramMaps (
collections.abc.Sequence
) – 参数映射序列。
- 返回:
一个线程安全的迭代器,其中包含每个参数映射的模型。每次调用 next(modelIterator) 将返回 (index, model),其中 model 是使用 paramMaps[index] 拟合的。index 值可能不是连续的。
- 返回类型:
_FitMultipleIterator
- getOrDefault(param)
获取用户提供的参数映射中某个参数的值或其默认值。如果两者都未设置,则引发错误。
- classmethod read()
返回用于加载估计器的读取器。
- 返回类型:
SparkXGBReader
- uid
对象的唯一 ID。
- write()
返回用于保存估计器的写入器。
- 返回类型:
SparkXGBWriter
- class xgboost.spark.SparkXGBRankerModel(xgb_sklearn_model=None, training_summary=None)
基类:
_SparkXGBModel
由
xgboost.spark.SparkXGBRanker.fit()
返回的模型注意
此 API 是实验性的。
- 参数:
xgb_sklearn_model (XGBModel | None)
training_summary (XGBoostTrainingSummary | None)
- copy(extra=None)
创建此实例的副本,具有相同的 uid 和一些额外参数。默认实现使用
copy.copy()
创建浅层副本,然后复制嵌入参数和额外参数并返回副本。如果默认方法不足,子类应覆盖此方法。- 参数:
extra (dict, optional) – 复制到新实例的额外参数
self (P)
- 返回:
此实例的副本
- 返回类型:
参数
- extractParamMap(extra=None)
提取嵌入的默认参数值和用户提供的值,然后将其与输入中的额外值合并到平面参数映射中,如果存在冲突,则使用后者的值,即排序如下:默认参数值 < 用户提供的值 < 额外值。
- getOrDefault(param)
获取用户提供的参数映射中某个参数的值或其默认值。如果两者都未设置,则引发错误。
- get_feature_importances(importance_type='weight')
获取每个特征的特征重要性。重要性类型可以定义为
‘weight’: 在所有树中特征被用于分割数据的次数。
‘gain’: 特征在所有分割中获得的平均增益。
‘cover’: 特征在所有分割中覆盖的平均样本数(覆盖度)。
‘total_gain’: 特征在所有分割中获得的总增益。
‘total_cover’: 特征在所有分割中覆盖的总样本数(覆盖度)。
- classmethod read()
返回用于加载模型的读取器。
- 返回类型:
SparkXGBModelReader
- transform(dataset, params=None)
使用可选参数转换输入数据集。
在 1.3.0 版本中新增。
- 参数:
dataset (
pyspark.sql.DataFrame
) – 输入数据集params (dict, optional) – 覆盖嵌入参数的可选参数映射。
- 返回:
转换后的数据集
- 返回类型:
- uid
对象的唯一 ID。
- write()
返回用于保存模型的写入器。
- 返回类型:
SparkXGBModelWriter
集合
XGBoost 集合通信相关的 API。
- class xgboost.collective.Config(retry=None, timeout=None, tracker_host_ip=None, tracker_port=None, tracker_timeout=None)
通信器上下文的用户配置。这用于更轻松地与分布式框架集成。集合模块的用户可以直接将参数传递给跟踪器和通信器。
自版本 3.0 添加。
- 参数:
- timeout
参见
init()
中的 dmlc_timeout。这仅用于通信器,不用于跟踪器。它们是不同的参数,因为跟踪器的超时仅限制启动和完成通信组的时间,而通信器的超时限制集合操作所用的时间。- 类型:
int | None
- tracker_host_ip
- 类型:
参见
RabitTracker
。
- tracker_port
- 类型:
参见
RabitTracker
。
- tracker_timeout
- 类型:
参见
RabitTracker
。
- xgboost.collective.init(**args)
使用参数初始化集合库。
- 参数:
表示参数及其值的关键字参数。
- 接受的参数
dmlc_communicator: 通信器类型。 * rabit: 使用 Rabit。如果未指定类型,则为默认值。 * federated: 使用 gRPC 接口进行联邦学习。
- 仅适用于 Rabit 通信器
dmlc_tracker_uri: 跟踪器的主机名。
dmlc_tracker_port: 跟踪器的端口号。
dmlc_task_id: 当前任务的 ID,可用于获取确定性的
dmlc_retry: 处理网络错误时的重试次数。
dmlc_timeout: 超时时间(秒)。
dmlc_nccl_path: 用于加载 (dlopen) nccl 以进行基于 GPU 的通信的路径。
- 仅适用于联邦通信器
federated_server_address: 联邦服务器地址。
federated_world_size: 联邦工作器数量。
federated_rank: 当前工作器的等级。
federated_server_cert: 服务器证书文件路径。仅在 SSL 模式下需要。
federated_client_key: 客户端密钥文件路径。仅在 SSL 模式下需要。
federated_client_cert: 客户端证书文件路径。仅在 SSL 模式下需要。
环境变量使用大写,运行时配置使用小写。
- 返回类型:
无
用于 XGBoost 集合的跟踪器。
- class xgboost.tracker.RabitTracker(n_workers, host_ip, port=0, *, sortby='host', timeout=0)
用于 XGBoost 中集合的跟踪器,充当工作器之间的协调器。
- 参数:
n_workers (int) – 通信组中的工作器总数。
host_ip (str | None) – 跟踪器节点的 IP 地址。XGBoost 可以尝试通过套接字探测猜测一个地址,但最好是显式传递一个地址。
port (int) – 此跟踪器应监听的端口。XGBoost 可以从操作系统查询可用端口,此配置对于受限网络环境很有用。
sortby (str) –
如何对工作器进行排序以分配等级。默认值为 host,但用户可以通过
init()
的参数设置 DMLC_TASK_ID,并通过按任务名称排序来获得确定性的等级分配。可用选项有:host
task
timeout (int) –
构建(引导)和关闭通信组的超时时间,不适用于通信组启动并正常运行时。
超时值应考虑数据加载和预处理的时间,这可能由于延迟执行而发生。默认情况下,跟踪器没有超时设置,以避免过早中止。
wait_for()
方法有一个不同的超时参数,即使跟踪器仍在被使用,也可以停止它。达到超时时将引发 ValueError。
示例
from xgboost.tracker import RabitTracker from xgboost import collective as coll tracker = RabitTracker(host_ip="127.0.0.1", n_workers=2) tracker.start() with coll.CommunicatorContext(**tracker.worker_args()): ret = coll.broadcast("msg", 0) assert str(ret) == "msg"