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 中新增。
- 参数:
new_config (Dict[str, Any]) – 表示参数及其值的关键字参数
- 返回类型:
None
示例
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)
基类:
objectXGBoost 中使用的数据矩阵。
DMatrix 是 XGBoost 使用的内部数据结构,它针对内存效率和训练速度进行了优化。您可以从多种不同的数据源构建 DMatrix。
- 参数:
data (Any) –
DMatrix 的数据源。有关支持的输入类型列表,请参阅标记。
请注意,如果传递迭代器,它将数据缓存到磁盘,并请注意,像
label这样的字段将从迭代器的多次调用中在内存中串联起来。label (Any | None) – 训练数据的标签。
weight (Any | None) –
每个实例的权重。
注意
对于排序任务,权重是按组的。在排序任务中,为每个组分配一个权重(而不是每个数据点)。这是因为我们只关心每个组内数据点的相对顺序,所以为单个数据点分配权重是没有意义的。
missing (float | None) – 输入数据中需要表示为缺失值的值。如果为 None,则默认为 np.nan。
silent (bool) – 构建期间是否打印消息
feature_types (Sequence[str] | Categories | None) –
设置特征的类型。如果 data 是 DataFrame 类型并传递了 enable_categorical=True,则类型将根据列类型自动推断。
否则,可以传递一个列表,其长度与 data 中的列数相同,并具有以下可能值
“c”,表示分类列。
“q”,表示数值列。
“int”,表示整数列。
“i”,表示布尔列。
请注意,虽然分类类型在模型拟合目的方面与其他类型不同,但其他类型不影响生成的模型,但在特征重要性等其他功能中会产生影响。
对于分类特征,假定用户已预处理并编码了输入。可以使用
sklearn.preprocessing.OrdinalEncoder或 pandas dataframe .cat.codes 方法进行编码。当用户想要指定分类特征而无需构造 DataFrame 作为输入时,这很有用。版本 3.1.0 中新增。
或者,用户可以传递先前训练返回的
Categories对象作为重新编码的参考。可以使用先前训练的 DMatrix 或 Booster 的get_categories()方法获取参考。此功能是实验性的。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、polars 和 cuDF 等支持的库),则 DMatrix 会识别分类列并自动设置 feature_types 参数。如果 data 不是数据框,则忽略此参数。
如果传递 False 并且 data 是一个带有分类列的数据框,则会引发错误。
当输入是迭代器时,有关一致性要求,请参阅
DataIter中的注意事项。版本 3.1.0 中已更改。
当输入是 DataFrame 时,XGBoost 可以记住类别的编码。
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
- get_categories(export_to_arrow=False)
获取数据集中的类别。
版本 3.1.0 中新增。
警告
此函数是实验性的。
- get_data()
将 DMatrix 的预测变量作为 CSR 矩阵获取。此 getter 主要用于测试目的。如果它是量化 DMatrix,则返回量化值而不是输入值。
在 1.7.0 版本中添加。
- 返回类型:
- get_float_info(field)
从 DMatrix 获取浮点属性。
- 参数:
field (str) – 信息字段名称
- 返回:
info – 一个包含数据浮点信息的 numpy 数组
- 返回类型:
数组
- get_group()
获取 DMatrix 的组。
- 返回类型:
组
- get_label()
获取 DMatrix 的标签。
- 返回:
label
- 返回类型:
数组
- get_uint_info(field)
从 DMatrix 获取无符号整数属性。
- 参数:
field (str) – 信息字段名称
- 返回:
info – 一个包含数据无符号整数信息的 numpy 数组
- 返回类型:
数组
- get_weight()
获取 DMatrix 的权重。
- 返回:
weight
- 返回类型:
数组
- save_binary(fname, silent=True)
将 DMatrix 保存到 XGBoost 缓冲区。保存的二进制文件稍后可以通过将路径提供给
xgboost.DMatrix()来加载。- 参数:
fname (string 或 os.PathLike) – 输出缓冲区文件的名称。
silent (bool (可选;默认值:True)) – 如果设置,则抑制输出。
- 返回类型:
None
- set_base_margin(margin)
设置 Booster 的基准边距以开始。
这可用于指定现有模型的预测值作为 base_margin。但是,请记住需要边距,而不是转换后的预测。例如,对于逻辑回归:需要输入逻辑转换之前的值。另请参阅 example/demo.py。
- 参数:
margin (array like) – 每个数据点的预测边距
- 返回类型:
None
- set_float_info(field, data)
将浮点类型属性设置为 DMatrix。
- 参数:
field (str) – 信息字段名称
data (numpy array) – 要设置的数据数组
- 返回类型:
None
- set_float_info_npy2d(field, data)
- 将浮点类型属性设置为 DMatrix
用于 numpy 2d 数组输入
- 参数:
field (str) – 信息字段名称
data (numpy array) – 要设置的数据数组
- 返回类型:
None
- set_group(group)
设置 DMatrix 的组大小(用于排序)。
- 参数:
group (array like) – 每个组的组大小
- 返回类型:
None
- 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 的标签信息
- 返回类型:
None
- set_uint_info(field, data)
将 uint 类型属性设置为 DMatrix。
- 参数:
field (str) – 信息字段名称
data (numpy array) – 要设置的数据数组
- 返回类型:
None
- set_weight(weight)
设置每个实例的权重。
- 参数:
weight (array like) –
每个数据点的权重
注意
对于排序任务,权重是按组的。
在排序任务中,为每个组分配一个权重(而不是每个数据点)。这是因为我们只关心每个组内数据点的相对顺序,所以为单个数据点分配权重是没有意义的。
- 返回类型:
None
- 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的情况下将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 的数据源。有关支持的输入类型列表,请参阅标记。
请注意,如果传递迭代器,它将数据缓存到磁盘,并请注意,像
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 作为输入时,这很有用。版本 3.1.0 中新增。
或者,用户可以传递先前训练返回的
Categories对象作为重新编码的参考。可以使用先前训练的 DMatrix 或 Booster 的get_categories()方法获取参考。此功能是实验性的。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、polars 和 cuDF 等支持的库),则 DMatrix 会识别分类列并自动设置 feature_types 参数。如果 data 不是数据框,则忽略此参数。
如果传递 False 并且 data 是一个带有分类列的数据框,则会引发错误。
当输入是迭代器时,有关一致性要求,请参阅
DataIter中的注意事项。版本 3.1.0 中已更改。
当输入是 DataFrame 时,XGBoost 可以记住类别的编码。
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
- get_categories(export_to_arrow=False)
获取数据集中的类别。
版本 3.1.0 中新增。
警告
此函数是实验性的。
- get_data()
将 DMatrix 的预测变量作为 CSR 矩阵获取。此 getter 主要用于测试目的。如果它是量化 DMatrix,则返回量化值而不是输入值。
在 1.7.0 版本中添加。
- 返回类型:
- get_float_info(field)
从 DMatrix 获取浮点属性。
- 参数:
field (str) – 信息字段名称
- 返回:
info – 一个包含数据浮点信息的 numpy 数组
- 返回类型:
数组
- get_group()
获取 DMatrix 的组。
- 返回类型:
组
- get_label()
获取 DMatrix 的标签。
- 返回:
label
- 返回类型:
数组
- get_uint_info(field)
从 DMatrix 获取无符号整数属性。
- 参数:
field (str) – 信息字段名称
- 返回:
info – 一个包含数据无符号整数信息的 numpy 数组
- 返回类型:
数组
- get_weight()
获取 DMatrix 的权重。
- 返回:
weight
- 返回类型:
数组
- save_binary(fname, silent=True)
将 DMatrix 保存到 XGBoost 缓冲区。保存的二进制文件稍后可以通过将路径提供给
xgboost.DMatrix()来加载。- 参数:
fname (string 或 os.PathLike) – 输出缓冲区文件的名称。
silent (bool (可选;默认值:True)) – 如果设置,则抑制输出。
- 返回类型:
None
- set_base_margin(margin)
设置 Booster 的基准边距以开始。
这可用于指定现有模型的预测值作为 base_margin。但是,请记住需要边距,而不是转换后的预测。例如,对于逻辑回归:需要输入逻辑转换之前的值。另请参阅 example/demo.py。
- 参数:
margin (array like) – 每个数据点的预测边距
- 返回类型:
None
- set_float_info(field, data)
将浮点类型属性设置为 DMatrix。
- 参数:
field (str) – 信息字段名称
data (numpy array) – 要设置的数据数组
- 返回类型:
None
- set_float_info_npy2d(field, data)
- 将浮点类型属性设置为 DMatrix
用于 numpy 2d 数组输入
- 参数:
field (str) – 信息字段名称
data (numpy array) – 要设置的数据数组
- 返回类型:
None
- set_group(group)
设置 DMatrix 的组大小(用于排序)。
- 参数:
group (array like) – 每个组的组大小
- 返回类型:
None
- 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 的标签信息
- 返回类型:
None
- set_uint_info(field, data)
将 uint 类型属性设置为 DMatrix。
- 参数:
field (str) – 信息字段名称
data (numpy array) – 要设置的数据数组
- 返回类型:
None
- set_weight(weight)
设置每个实例的权重。
- 参数:
weight (array like) –
每个数据点的权重
注意
对于排序任务,权重是按组的。
在排序任务中,为每个组分配一个权重(而不是每个数据点)。这是因为我们只关心每个组内数据点的相对顺序,所以为单个数据点分配权重是没有意义的。
- 返回类型:
None
- class xgboost.ExtMemQuantileDMatrix(data, *, missing=None, nthread=None, max_bin=None, ref=None, enable_categorical=False, max_quantile_batches=None, cache_host_ratio=None)
基类:
DMatrix,_RefMixInQuantileDMatrix的外部内存版本。有关说明和使用示例,请参阅使用 XGBoost 外部内存版本,有关参数文档,请参阅
QuantileDMatrix。警告
这是一个实验性功能,可能会发生更改。
3.0.0 版本新增。
- 参数:
max_quantile_batches (int | None) – 请参阅
QuantileDMatrix。cache_host_ratio (float | None) –
版本 3.1.0 中新增。
GPU 实现使用。对于基于 GPU 的输入,XGBoost 可以将缓存分为主机缓存和设备缓存,以减少数据传输开销。此参数指定了主机缓存的大小与整个缓存大小的比例:\(host / (host + device)\)。
有关更多信息,请参阅自适应缓存。
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
- get_categories(export_to_arrow=False)
获取数据集中的类别。
版本 3.1.0 中新增。
警告
此函数是实验性的。
- get_data()
将 DMatrix 的预测变量作为 CSR 矩阵获取。此 getter 主要用于测试目的。如果它是量化 DMatrix,则返回量化值而不是输入值。
在 1.7.0 版本中添加。
- 返回类型:
- get_float_info(field)
从 DMatrix 获取浮点属性。
- 参数:
field (str) – 信息字段名称
- 返回:
info – 一个包含数据浮点信息的 numpy 数组
- 返回类型:
数组
- get_group()
获取 DMatrix 的组。
- 返回类型:
组
- get_label()
获取 DMatrix 的标签。
- 返回:
label
- 返回类型:
数组
- get_uint_info(field)
从 DMatrix 获取无符号整数属性。
- 参数:
field (str) – 信息字段名称
- 返回:
info – 一个包含数据无符号整数信息的 numpy 数组
- 返回类型:
数组
- get_weight()
获取 DMatrix 的权重。
- 返回:
weight
- 返回类型:
数组
- save_binary(fname, silent=True)
将 DMatrix 保存到 XGBoost 缓冲区。保存的二进制文件稍后可以通过将路径提供给
xgboost.DMatrix()来加载。- 参数:
fname (string 或 os.PathLike) – 输出缓冲区文件的名称。
silent (bool (可选;默认值:True)) – 如果设置,则抑制输出。
- 返回类型:
None
- set_base_margin(margin)
设置 Booster 的基准边距以开始。
这可用于指定现有模型的预测值作为 base_margin。但是,请记住需要边距,而不是转换后的预测。例如,对于逻辑回归:需要输入逻辑转换之前的值。另请参阅 example/demo.py。
- 参数:
margin (array like) – 每个数据点的预测边距
- 返回类型:
None
- set_float_info(field, data)
将浮点类型属性设置为 DMatrix。
- 参数:
field (str) – 信息字段名称
data (numpy array) – 要设置的数据数组
- 返回类型:
None
- set_float_info_npy2d(field, data)
- 将浮点类型属性设置为 DMatrix
用于 numpy 2d 数组输入
- 参数:
field (str) – 信息字段名称
data (numpy array) – 要设置的数据数组
- 返回类型:
None
- set_group(group)
设置 DMatrix 的组大小(用于排序)。
- 参数:
group (array like) – 每个组的组大小
- 返回类型:
None
- 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 的标签信息
- 返回类型:
None
- set_uint_info(field, data)
将 uint 类型属性设置为 DMatrix。
- 参数:
field (str) – 信息字段名称
data (numpy array) – 要设置的数据数组
- 返回类型:
None
- set_weight(weight)
设置每个实例的权重。
- 参数:
weight (array like) –
每个数据点的权重
注意
对于排序任务,权重是按组的。
在排序任务中,为每个组分配一个权重(而不是每个数据点)。这是因为我们只关心每个组内数据点的相对顺序,所以为单个数据点分配权重是没有意义的。
- 返回类型:
None
- class xgboost.Booster(params=None, cache=None, model_file=None)
基类:
objectXGBoost 的 Booster。
Booster 是 xgboost 的模型,其中包含用于训练、预测和评估的低级例程。
- 参数:
- __getitem__(val)
获取树模型的一个切片。诸如 best_iteration 和 best_score 等属性在生成的 Booster 中已被移除。
在 1.3.0 版本中添加。
- attributes()
将存储在 Booster 中的属性作为字典获取。
- 返回:
result – 如果没有属性,则返回一个空字典。
- 返回类型:
属性名称: 字符串属性值 对的字典。
- 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)
评估一组数据。
- get_categories(export_to_arrow=False)
与
DMatrix.get_categories()相同的方法。
- 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”被定义,它是没有偏置的归一化系数。
注意
零重要性特征不会被包含在内。
请注意,此函数不包含零重要性特征,即未在任何拆分条件中使用的特征。
- 获取特征的拆分值直方图。
feature (str) – 特征的名称。
- 参数:
- 返回:
以 numpy 数组或 pandas DataFrame 的形式。
ndarray | PdDataFrame
- 返回类型:
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 设备。
注意
版本 1.1.0 中添加。
booster.set_param({"device": "cuda:0"}) booster.inplace_predict(cupy_array) booster.set_param({"device": "cpu"}) booster.inplace_predict(numpy_array)
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。strict_shape (bool) –
版本 1.4.0 中新增。
有关详细信息,请参阅
xgboost.Booster.predict()。prediction – 预测结果。当输入数据在 GPU 上时,预测结果存储在 cupy 数组中。
版本 1.4.0 中新增。
- 返回:
numpy.ndarray/cupy.ndarray
- 返回类型:
load_config(config)
- 从文件或字节数组加载模型。
模型以 XGBoost 内部格式保存,该格式在各种 XGBoost 接口之间通用。Python Booster 对象的辅助属性(如 feature_names)仅在使用 JSON 或 UBJSON(默认)格式时保存。此外,不属于模型本身的参数(如 metrics、max_depth 等)不会被保存,更多信息请参见 Model IO。
fname (PathLike | bytearray | str) – 输入文件名或内存缓冲区(另请参阅 save_raw)
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)
- 参数:
num_boosted_rounds()
- 返回类型:
None
- Booster 中的特征数量。
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。
注意
output_margin (bool) – 是否输出原始未转换的 margin 值。
- 参数:
data (DMatrix) – 存储输入的 DMatrix。
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。
iteration_range (Tuple[int | integer, int | integer]) –
config (str)
指定在预测中使用哪一层树。例如,如果一个随机森林训练了 100 轮。指定 iteration_range=(10, 20),则在此预测中仅使用在 [10, 20)(半开区间)轮次中构建的森林。
当设置为 True 时,输出形状与是否使用分类无关。对于值和 margin 预测,输出形状为 (n_samples, n_groups),当未使用多分类时,n_groups == 1。默认为 False,在这种情况下,如果未使用多分类,输出形状可以是 (n_samples, )。
版本 1.4.0 中新增。
有关详细信息,请参阅
xgboost.Booster.predict()。numpy 数组
版本 1.4.0 中新增。
- 返回:
预测
- 返回类型:
reset()
- 将模型保存到文件。
fname (str | PathLike) – 输出文件名。
fname (PathLike | bytearray | str) – 输入文件名或内存缓冲区(另请参阅 save_raw)
model.save_model("model.json") # or model.save_model("model.ubj")
- 参数:
save_raw(raw_format='ubj')
- 返回类型:
None
- 将模型保存到内存缓冲区表示形式,而不是文件。
raw_format (str) – 输出缓冲区的格式。可以是 json 或 ubj。
fname (PathLike | bytearray | str) – 输入文件名或内存缓冲区(另请参阅 save_raw)
- 参数:
模型的内存缓冲区表示。
- 返回类型:
set_attr(**kwargs)
- 设置 Booster 的属性。
**kwargs (Any | None) – 要设置的属性。将值设置为 None 会删除该属性。
- 参数:
set_param(params, value=None)
- 返回类型:
None
- 将增强树模型文本转储解析为 pandas DataFrame 结构。
此功能仅在决策树模型选择为基础学习器时定义(booster in {gbtree, dart})。对于其他基础学习器类型(如线性学习器 booster=gblinear),此功能未定义。
PdDataFrame
-
Bases:
ABC 用户定义数据迭代器的接口。该迭代器通过
QuantileDMatrix进行分布式训练,并通过DMatrix或ExtMemQuantileDMatrix支持外部内存。大多数情况下,用户不需要直接与此类进行交互。
注意
该类使用 data 输入(预测变量 X)作为键来缓存一些中间结果。不要为具有不同元数据(如 label)的多个批次重复 X,如有必要请进行复制。
注意
当每个批次的输入是 DataFrame 时,我们假设类别在所有批次中都经过了一致的编码。例如,对于两个批次的两个 DataFrame,这是无效的
import pandas as pd x0 = pd.DataFrame({"a": [0, 1]}, dtype="category") x1 = pd.DataFrame({"a": [1, 2]}, dtype="category")
这是无效的,因为 x0 的类别是 [0, 1],而 x2 的类别是 [1, 2]。它们应该共享相同的类别集和编码。
import numpy as np categories = np.array([0, 1, 2]) x0["a"] = pd.Categorical.from_codes( codes=np.array([0, 1]), categories=categories ) x1["a"] = pd.Categorical.from_codes( codes=np.array([1, 2]), categories=categories )
您可以在预处理步骤中确保一致的编码,并注意数据以保留编码的方式存储时进行分块。
- 参数:
cache_prefix (str | None) –
缓存文件的前缀,仅在外存中使用。
注意,使用此类进行外存操作 **会将数据缓存在磁盘上**,路径为此处指定。
release_data (bool) – 迭代期间迭代器是否应释放数据。如果数据转换(将数据转换为 np.float32 类型)内存密集,请将其设置为 True。否则,如果转换计算密集,我们可以保留缓存。
on_host (bool) –
在使用具有外存的 GPU 时,数据是否应缓存到主机内存而不是文件系统中。当设置为 True(默认值)时,“外存”是 CPU(主机)内存。有关更多信息,请参阅 使用 XGBoost 外存版本。
3.0.0 版本新增。
警告
这是一个实验性参数,可能会发生更改。
min_cache_page_bytes (int | None) –
每个缓存页面的最小字节数。仅用于 GPU 上的外存
ExtMemQuantileDMatrix。在使用外存的 GPU 版本时,如果数据缓存到主机内存中,XGBoost 可以内部连接页面以增加 GPU 的批量大小。默认页面大小约为总设备内存的 1/16。用户可以根据实际硬件和数据集手动设置该值。设置为 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()
重新抛出迭代期间抛出的异常。
- 返回类型:
None
- abstract reset()
重置数据迭代器。用户定义函数的原型。
- 返回类型:
None
- class xgboost.core.Categories(handle, arrow_arrays)
DMatrix 和 Booster 返回的类别的内部存储类。此类设计为不透明的。XGBoost 将其专门用于重新编码分类数据。
类别与 booster 对象一起保存。因此,用户不需要保留此类以进行重新编码。如果希望以稳定的格式保存类别,请使用 booster 模型 IO。
版本 3.1.0 中新增。
警告
此类是内部使用的。
Xy = xgboost.QuantileDMatrix(X, y, enable_categorical=True) booster = xgboost.train({}, Xy) categories = booster.get_categories() # Get categories # Use categories as a reference for re-coding Xy_new = xgboost.QuantileDMatrix( X_new, y_new, feature_types=categories, enable_categorical=True, ref=Xy ) # Categories will be part of the `model.json`. booster.save_model("model.json")
学习 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或模型切片。如果 evals 中有多个项,将使用最后一项进行早期停止。如果 params 中给出的 eval_metric 参数有多个指标,则将使用最后一个指标进行早期停止。
如果发生早期停止,模型将有两个附加字段:
bst.best_score、bst.best_iteration。evals_result (Dict[str, Dict[str, List[float] | List[Tuple[float, float]]]] | None) –
此字典存储了监视表中所有项的评估结果。
例如:当监视表包含
[(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,通过 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 (KFold 或 StratifiedKFold 实例或 list of fold indices) – Sklearn KFolds 或 StratifiedKFolds 对象。或者,可以显式传递每个折的样本索引。对于
n折,folds 应为长度为n的列表。每个元组是(in,out),其中in是用作第n折训练样本的索引列表,out是用作第n折测试样本的索引列表。metrics (string 或 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) – 是否在进度中显示标准差。结果不受影响,始终包含 std。
seed (int) – 用于生成折的种子(传递给 numpy.random.seed)。
callbacks (Sequence[TrainingCallback] | None) –
在每次迭代结束时应用的 callback 函数列表。可以使用预定义的 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)
Bases:
RegressorMixin,XGBModelXGBoost 回归的 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)的最小总和。
max_delta_step (Optional[float]) – 我们允许每棵树的权重估计的最大 delta 步长。
sampling_method (Optional[str]) –
采样方法。仅用于
hist树方法的 GPU 版本。uniform:均匀选择随机训练实例。gradient_based:以更高的概率选择随机训练实例,当梯度和 Hessian 值更大时。(参见 CatBoost)。
base_score (Union[float, List[float], NoneType]) – 所有实例的初始预测分数,全局偏差。
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_ 属性的特征重要性类型。
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 是否应使用独热编码拆分进行分类数据的阈值。当类别数量小于阈值时,将选择独热编码,否则类别将被划分为子节点。此外,需要设置 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[Union[str, Callable]], 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 中添加。
启用早期停止。在
fit()中的 eval_set 至少有一个项时,验证指标需要在每 early_stopping_rounds 轮中至少改进一次才能继续训练。如果发生提前停止,模型将有两个附加属性:
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,通过 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: 形状为 [n_samples] 的 array_like
目标值
- y_pred: 形状为 [n_samples] 的 array_like
预测值
- sample_weight
可选的样本权重。
- grad: 形状为 [n_samples] 的 array_like
每个样本点的梯度值。
- hess: 形状为 [n_samples] 的 array_like
每个样本点的二阶导数(Hessian)值
请注意,如果自定义目标函数产生的 Hessian 值为负,这些值将被截断。如果目标函数是非凸的,也可以考虑使用期望的 Hessian(Fisher 信息)。
- apply(X, iteration_range=None)
为每个样本返回每棵树的预测叶。如果模型是使用提前停止训练的,那么
best_iteration会被自动使用。
- 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) –
输入特征矩阵。有关支持的类型列表,请参阅 标记。
当
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 且使用了评估集,则每次提升阶段在标准输出中打印在验证集上测量的评估指标。如果 verbose 是一个整数,则在每个 verbose 提升阶段打印评估指标。最后一个提升阶段 / 使用 early_stopping_rounds 找到的提升阶段也会被打印。
xgb_model (Booster | XGBModel | str | None) – 存储的 XGBoost 模型的文件名或要在训练前加载的 ‘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)
模型以 XGBoost 内部格式保存,该格式在各种 XGBoost 接口之间通用。Python Booster 对象的辅助属性(如 feature_names)仅在使用 JSON 或 UBJSON(默认)格式时保存。此外,不属于模型本身的参数(如 metrics、max_depth 等)不会被保存,更多信息请参见 Model IO。
fname (PathLike | bytearray | str) – 输入文件名或内存缓冲区(另请参阅 save_raw)
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)
- 参数:
num_boosted_rounds()
- 返回类型:
None
- predict(X, *, output_margin=False, validate_features=True, base_margin=None, iteration_range=None)
使用 X 进行预测。如果模型是使用提前停止训练的,那么
best_iteration会被自动使用。该估计器默认使用 inplace_predict,如果数据和估计器之间的设备不匹配,则回退到使用DMatrix。注意
此函数仅对 gbtree 和 dart 线程安全。
- 参数:
pred_leaf (bool) – 当此选项开启时,输出将是一个 (nsample, ntrees) 的矩阵,其中每条记录表示每个样本在每棵树中的预测叶子索引。请注意,树的叶子索引在每棵树中是唯一的,因此您可能会在树 1 和树 0 中都找到叶子 1。
training (bool) –
iteration_range (Tuple[int | integer, int | integer] | None) –
指定在预测中使用哪层树。例如,如果一个随机森林训练了 100 轮。指定
iteration_range=(10, 20),则在此预测中仅使用在 [10, 20)(半开区间)轮次中构建的森林。版本 1.4.0 中新增。
- 返回类型:
预测
- save_model(fname)
fname (str | PathLike) – 输出文件名。
fname (PathLike | bytearray | str) – 输入文件名或内存缓冲区(另请参阅 save_raw)
model.save_model("model.json") # or model.save_model("model.ubj")
- 参数:
save_raw(raw_format='ubj')
- 返回类型:
None
- score(X, y, sample_weight=None)
返回测试数据的决定系数。
决定系数 \(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\) 分数。- 返回类型:
注释
从 0.23 版本开始,调用回归器上的
score时使用的 \(R^2\) 分数会使用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 版本中添加。
- 参数:
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 参数。
- 返回类型:
self
- 参数:
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 版本中添加。
- 参数:
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 版本中添加。
- 参数:
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,XGBModelXGBoost 分类功能的 Scikit-learn API 实现。有关更多信息,请参阅 使用 Scikit-Learn 估计器接口。
- 参数:
n_estimators (Optional[int]) – 提升轮数。
树增长策略。
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)的最小总和。
max_delta_step (Optional[float]) – 我们允许每棵树的权重估计的最大 delta 步长。
sampling_method (Optional[str]) –
采样方法。仅用于
hist树方法的 GPU 版本。uniform:均匀选择随机训练实例。gradient_based:以更高的概率选择随机训练实例,当梯度和 Hessian 值更大时。(参见 CatBoost)。
base_score (Union[float, List[float], NoneType]) – 所有实例的初始预测分数,全局偏差。
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_ 属性的特征重要性类型。
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 是否应使用独热编码拆分进行分类数据的阈值。当类别数量小于阈值时,将选择独热编码,否则类别将被划分为子节点。此外,需要设置 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[Union[str, Callable]], 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,通过 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: 形状为 [n_samples] 的 array_like
目标值
- y_pred: 形状为 [n_samples] 的 array_like
预测值
- sample_weight
可选的样本权重。
- grad: 形状为 [n_samples] 的 array_like
每个样本点的梯度值。
- hess: 形状为 [n_samples] 的 array_like
每个样本点的二阶导数(Hessian)值
请注意,如果自定义目标函数产生的 Hessian 值为负,这些值将被截断。如果目标函数是非凸的,也可以考虑使用期望的 Hessian(Fisher 信息)。
- apply(X, iteration_range=None)
为每个样本返回每棵树的预测叶。如果模型是使用提前停止训练的,那么
best_iteration会被自动使用。
- 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) –
输入特征矩阵。有关支持的类型列表,请参阅 标记。
当
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 且使用了评估集,则每次提升阶段在标准输出中打印在验证集上测量的评估指标。如果 verbose 是一个整数,则在每个 verbose 提升阶段打印评估指标。最后一个提升阶段 / 使用 early_stopping_rounds 找到的提升阶段也会被打印。
xgb_model (Booster | str | XGBModel | None) – 存储的 XGBoost 模型的文件名或要在训练前加载的 ‘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)
模型以 XGBoost 内部格式保存,该格式在各种 XGBoost 接口之间通用。Python Booster 对象的辅助属性(如 feature_names)仅在使用 JSON 或 UBJSON(默认)格式时保存。此外,不属于模型本身的参数(如 metrics、max_depth 等)不会被保存,更多信息请参见 Model IO。
fname (PathLike | bytearray | str) – 输入文件名或内存缓冲区(另请参阅 save_raw)
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)
- 参数:
num_boosted_rounds()
- 返回类型:
None
- predict(X, *, output_margin=False, validate_features=True, base_margin=None, iteration_range=None)
使用 X 进行预测。如果模型是使用提前停止训练的,那么
best_iteration会被自动使用。该估计器默认使用 inplace_predict,如果数据和估计器之间的设备不匹配,则回退到使用DMatrix。注意
此函数仅对 gbtree 和 dart 线程安全。
- 参数:
pred_leaf (bool) – 当此选项开启时,输出将是一个 (nsample, ntrees) 的矩阵,其中每条记录表示每个样本在每棵树中的预测叶子索引。请注意,树的叶子索引在每棵树中是唯一的,因此您可能会在树 1 和树 0 中都找到叶子 1。
training (bool) –
iteration_range (Tuple[int | integer, int | integer] | None) –
指定在预测中使用哪层树。例如,如果一个随机森林训练了 100 轮。指定
iteration_range=(10, 20),则在此预测中仅使用在 [10, 20)(半开区间)轮次中构建的森林。版本 1.4.0 中新增。
- 返回类型:
预测
- predict_proba(X, validate_features=True, base_margin=None, iteration_range=None)
预测 X 中每个样本属于给定类的概率。如果模型是使用提前停止训练的,那么
best_iteration会被自动使用。该估计器默认使用 inplace_predict,如果数据和估计器之间的设备不匹配,则回退到使用DMatrix。注意
此函数仅对 gbtree 和 dart 线程安全。
- 参数:
- 返回:
一个形状为 (n_samples, n_classes) 的 numpy 数组,包含每个数据样本属于给定类的概率。
- 返回类型:
预测
- save_model(fname)
fname (str | PathLike) – 输出文件名。
fname (PathLike | bytearray | str) – 输入文件名或内存缓冲区(另请参阅 save_raw)
model.save_model("model.json") # or model.save_model("model.ubj")
- 参数:
save_raw(raw_format='ubj')
- 返回类型:
None
- 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 版本中添加。
- 参数:
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 参数。
- 返回类型:
self
- 参数:
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 版本中添加。
- 参数:
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 版本中添加。
- 参数:
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 版本中添加。
- 参数:
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,XGBModelXGBoost 排序功能的 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)的最小总和。
max_delta_step (Optional[float]) – 我们允许每棵树的权重估计的最大 delta 步长。
sampling_method (Optional[str]) –
采样方法。仅用于
hist树方法的 GPU 版本。uniform:均匀选择随机训练实例。gradient_based:以更高的概率选择随机训练实例,当梯度和 Hessian 值更大时。(参见 CatBoost)。
base_score (Union[float, List[float], NoneType]) – 所有实例的初始预测分数,全局偏差。
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_ 属性的特征重要性类型。
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 是否应使用独热编码拆分进行分类数据的阈值。当类别数量小于阈值时,将选择独热编码,否则类别将被划分为子节点。此外,需要设置 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[Union[str, Callable]], 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,通过 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会被自动使用。
- 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) –
特征矩阵。有关支持的类型列表,请参阅 标记。
当它是
pandas.DataFrame或cudf.DataFrame时,它可能包含一个名为qid的特殊列,用于指定查询索引。使用特殊列与使用 qid 参数相同,只是与sklearn.model_selection.cross_validation()等 sklearn 实用函数兼容。相同的约定也适用于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 且使用了评估集,则每次提升阶段在标准输出中打印在验证集上测量的评估指标。如果 verbose 是一个整数,则在每个 verbose 提升阶段打印评估指标。最后一个提升阶段 / 使用 early_stopping_rounds 找到的提升阶段也会被打印。
xgb_model (Booster | str | XGBModel | None) – 存储的 XGBoost 模型的文件名或要在训练前加载的 ‘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)
模型以 XGBoost 内部格式保存,该格式在各种 XGBoost 接口之间通用。Python Booster 对象的辅助属性(如 feature_names)仅在使用 JSON 或 UBJSON(默认)格式时保存。此外,不属于模型本身的参数(如 metrics、max_depth 等)不会被保存,更多信息请参见 Model IO。
fname (PathLike | bytearray | str) – 输入文件名或内存缓冲区(另请参阅 save_raw)
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)
- 参数:
num_boosted_rounds()
- 返回类型:
None
- predict(X, *, output_margin=False, validate_features=True, base_margin=None, iteration_range=None)
使用 X 进行预测。如果模型使用提前停止进行训练,则会自动使用
best_iteration。该估计器默认使用 inplace_predict,如果数据和估计器之间的设备不匹配,则回退到使用DMatrix。注意
此函数仅对 gbtree 和 dart 线程安全。
- 参数:
pred_leaf (bool) – 当此选项开启时,输出将是一个 (nsample, ntrees) 的矩阵,其中每条记录表示每个样本在每棵树中的预测叶子索引。请注意,树的叶子索引在每棵树中是唯一的,因此您可能会在树 1 和树 0 中都找到叶子 1。
training (bool) –
iteration_range (Tuple[int | integer, int | integer] | None) –
指定在预测中使用哪层树。例如,如果一个随机森林训练了 100 轮。指定
iteration_range=(10, 20),则在此预测中仅使用在 [10, 20)(半开区间)轮次中构建的森林。版本 1.4.0 中新增。
- 返回类型:
预测
- save_model(fname)
fname (str | PathLike) – 输出文件名。
fname (PathLike | bytearray | str) – 输入文件名或内存缓冲区(另请参阅 save_raw)
model.save_model("model.json") # or model.save_model("model.ubj")
- 参数:
save_raw(raw_format='ubj')
- 返回类型:
None
- 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 版本中添加。
- 参数:
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) – Metadata routing for
eval_groupparameter infit。eval_qid (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – Metadata routing for
eval_qidparameter infit。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) – Metadata routing for
groupparameter infit。qid (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – Metadata routing for
qidparameter infit。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 参数。
- 返回类型:
self
- 参数:
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 版本中添加。
- 参数:
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)
Bases:
XGBRegressorscikit-learn API for XGBoost random forest regression. See Using the Scikit-Learn Estimator Interface for more information.
- 参数:
n_estimators (Optional[int]) – Random forest 中要拟合的树的数量。
树增长策略。
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)的最小总和。
max_delta_step (Optional[float]) – 我们允许每棵树的权重估计的最大 delta 步长。
sampling_method (Optional[str]) –
采样方法。仅用于
hist树方法的 GPU 版本。uniform:均匀选择随机训练实例。gradient_based:以更高的概率选择随机训练实例,当梯度和 Hessian 值更大时。(参见 CatBoost)。
base_score (Union[float, List[float], NoneType]) – 所有实例的初始预测分数,全局偏差。
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_ 属性的特征重要性类型。
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 是否应使用独热编码拆分进行分类数据的阈值。当类别数量小于阈值时,将选择独热编码,否则类别将被划分为子节点。此外,需要设置 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[Union[str, Callable]], 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,通过 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: 形状为 [n_samples] 的 array_like
目标值
- y_pred: 形状为 [n_samples] 的 array_like
预测值
- sample_weight
可选的样本权重。
- grad: 形状为 [n_samples] 的 array_like
每个样本点的梯度值。
- hess: 形状为 [n_samples] 的 array_like
每个样本点的二阶导数(Hessian)值
请注意,如果自定义目标函数产生的 Hessian 值为负,这些值将被截断。如果目标函数是非凸的,也可以考虑使用期望的 Hessian(Fisher 信息)。
- apply(X, iteration_range=None)
为每个样本返回每棵树的预测叶子节点。如果模型使用提前停止进行训练,则会自动使用
best_iteration。
- property coef_: ndarray
系数属性
注意
系数仅对线性学习器定义
当选择线性模型作为基学习器(booster=gblinear)时,系数才被定义。对于其他基学习器类型,例如树学习器(booster=gbtree),则不定义。
- 返回:
coef_
- 返回类型:
形状为
[n_features]或[n_classes, n_features]的数组
- evals_result()
返回评估结果。
如果向
fit()函数传递了 eval_set,则可以调用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) –
输入特征矩阵。有关支持的类型列表,请参阅 标记。
当
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 且使用了评估集,则每次提升阶段在标准输出中打印在验证集上测量的评估指标。如果 verbose 是一个整数,则在每个 verbose 提升阶段打印评估指标。最后一个提升阶段 / 使用 early_stopping_rounds 找到的提升阶段也会被打印。
xgb_model (Booster | str | XGBModel | None) – 存储的 XGBoost 模型的文件名或要在训练前加载的 ‘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)
模型以 XGBoost 内部格式保存,该格式在各种 XGBoost 接口之间通用。Python Booster 对象的辅助属性(如 feature_names)仅在使用 JSON 或 UBJSON(默认)格式时保存。此外,不属于模型本身的参数(如 metrics、max_depth 等)不会被保存,更多信息请参见 Model IO。
fname (PathLike | bytearray | str) – 输入文件名或内存缓冲区(另请参阅 save_raw)
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)
- 参数:
num_boosted_rounds()
- 返回类型:
None
- predict(X, *, output_margin=False, validate_features=True, base_margin=None, iteration_range=None)
使用 X 进行预测。如果模型使用提前停止进行训练,则会自动使用
best_iteration。该估计器默认使用 inplace_predict,如果数据和估计器之间的设备不匹配,则回退到使用DMatrix。注意
此函数仅对 gbtree 和 dart 线程安全。
- 参数:
pred_leaf (bool) – 当此选项开启时,输出将是一个 (nsample, ntrees) 的矩阵,其中每条记录表示每个样本在每棵树中的预测叶子索引。请注意,树的叶子索引在每棵树中是唯一的,因此您可能会在树 1 和树 0 中都找到叶子 1。
training (bool) –
iteration_range (Tuple[int | integer, int | integer] | None) –
指定在预测中使用哪层树。例如,如果一个随机森林训练了 100 轮。指定
iteration_range=(10, 20),则在此预测中仅使用在 [10, 20)(半开区间)轮次中构建的森林。版本 1.4.0 中新增。
- 返回类型:
预测
- save_model(fname)
fname (str | PathLike) – 输出文件名。
fname (PathLike | bytearray | str) – 输入文件名或内存缓冲区(另请参阅 save_raw)
model.save_model("model.json") # or model.save_model("model.ubj")
- 参数:
save_raw(raw_format='ubj')
- 返回类型:
None
- score(X, y, sample_weight=None)
返回测试数据的决定系数。
决定系数 \(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\) 分数。- 返回类型:
注释
从 0.23 版本开始,调用回归器上的
score时使用的 \(R^2\) 分数会使用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 版本中添加。
- 参数:
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 参数。
- 返回类型:
self
- 参数:
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 版本中添加。
- 参数:
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 版本中添加。
- 参数:
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)
Bases:
XGBClassifierscikit-learn API for XGBoost random forest classification. See Using the Scikit-Learn Estimator Interface for more information.
- 参数:
n_estimators (Optional[int]) – Random forest 中要拟合的树的数量。
树增长策略。
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)的最小总和。
max_delta_step (Optional[float]) – 我们允许每棵树的权重估计的最大 delta 步长。
sampling_method (Optional[str]) –
采样方法。仅用于
hist树方法的 GPU 版本。uniform:均匀选择随机训练实例。gradient_based:以更高的概率选择随机训练实例,当梯度和 Hessian 值更大时。(参见 CatBoost)。
base_score (Union[float, List[float], NoneType]) – 所有实例的初始预测分数,全局偏差。
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_ 属性的特征重要性类型。
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 是否应使用独热编码拆分进行分类数据的阈值。当类别数量小于阈值时,将选择独热编码,否则类别将被划分为子节点。此外,需要设置 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[Union[str, Callable]], 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,通过 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: 形状为 [n_samples] 的 array_like
目标值
- y_pred: 形状为 [n_samples] 的 array_like
预测值
- sample_weight
可选的样本权重。
- grad: 形状为 [n_samples] 的 array_like
每个样本点的梯度值。
- hess: 形状为 [n_samples] 的 array_like
每个样本点的二阶导数(Hessian)值
请注意,如果自定义目标函数产生的 Hessian 值为负,这些值将被截断。如果目标函数是非凸的,也可以考虑使用期望的 Hessian(Fisher 信息)。
- apply(X, iteration_range=None)
返回每棵树每个样本的预测叶子节点。如果模型使用提前停止进行训练,则会自动使用
best_iteration。
- property coef_: ndarray
系数属性
注意
系数仅对线性学习器定义
当选择线性模型作为基学习器(booster=gblinear)时,系数才被定义。对于其他基学习器类型,例如树学习器(booster=gbtree),则不定义。
- 返回:
coef_
- 返回类型:
形状为
[n_features]或[n_classes, n_features]的数组
- evals_result()
返回评估结果。
如果向
fit()函数传递了 eval_set,则可以调用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) –
输入特征矩阵。有关支持的类型列表,请参阅 标记。
当
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 且使用了评估集,则每次提升阶段在标准输出中打印在验证集上测量的评估指标。如果 verbose 是一个整数,则在每个 verbose 提升阶段打印评估指标。最后一个提升阶段 / 使用 early_stopping_rounds 找到的提升阶段也会被打印。
xgb_model (Booster | str | XGBModel | None) – 存储的 XGBoost 模型的文件名或要在训练前加载的 ‘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)
模型以 XGBoost 内部格式保存,该格式在各种 XGBoost 接口之间通用。Python Booster 对象的辅助属性(如 feature_names)仅在使用 JSON 或 UBJSON(默认)格式时保存。此外,不属于模型本身的参数(如 metrics、max_depth 等)不会被保存,更多信息请参见 Model IO。
fname (PathLike | bytearray | str) – 输入文件名或内存缓冲区(另请参阅 save_raw)
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)
- 参数:
num_boosted_rounds()
- 返回类型:
None
- predict(X, *, output_margin=False, validate_features=True, base_margin=None, iteration_range=None)
使用 X 进行预测。如果模型使用提前停止进行训练,则会自动使用
best_iteration。该估计器默认使用 inplace_predict,如果数据和估计器之间的设备不匹配,则回退到使用DMatrix。注意
此函数仅对 gbtree 和 dart 线程安全。
- 参数:
pred_leaf (bool) – 当此选项开启时,输出将是一个 (nsample, ntrees) 的矩阵,其中每条记录表示每个样本在每棵树中的预测叶子索引。请注意,树的叶子索引在每棵树中是唯一的,因此您可能会在树 1 和树 0 中都找到叶子 1。
training (bool) –
iteration_range (Tuple[int | integer, int | integer] | None) –
指定在预测中使用哪层树。例如,如果一个随机森林训练了 100 轮。指定
iteration_range=(10, 20),则在此预测中仅使用在 [10, 20)(半开区间)轮次中构建的森林。版本 1.4.0 中新增。
- 返回类型:
预测
- predict_proba(X, validate_features=True, base_margin=None, iteration_range=None)
预测 X 中每个示例属于某个类的概率。如果模型使用提前停止进行训练,则会自动使用
best_iteration。该估计器默认使用 inplace_predict,如果数据和估计器之间的设备不匹配,则回退到使用DMatrix。注意
此函数仅对 gbtree 和 dart 线程安全。
- 参数:
- 返回:
一个形状为 (n_samples, n_classes) 的 numpy 数组,包含每个数据样本属于给定类的概率。
- 返回类型:
预测
- save_model(fname)
fname (str | PathLike) – 输出文件名。
fname (PathLike | bytearray | str) – 输入文件名或内存缓冲区(另请参阅 save_raw)
model.save_model("model.json") # or model.save_model("model.ubj")
- 参数:
save_raw(raw_format='ubj')
- 返回类型:
None
- 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 版本中添加。
- 参数:
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 参数。
- 返回类型:
self
- 参数:
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 版本中添加。
- 参数:
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 版本中添加。
- 参数:
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 版本中添加。
- 参数:
sample_weight (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) –
score方法中sample_weight参数的元数据路由。self (XGBRFClassifier)
- 返回:
self – 更新后的对象。
- 返回类型:
绘图 API
绘图库。请参阅 Using the Scikit-Learn Estimator Interface 获取更多信息。
- 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() 所接受的 dict。
ax (matplotlib Axes) – 目标 axes 实例。如果为 None,则会创建新的 figure 和 axes。
grid (bool) – 打开或关闭 axes 网格。默认值为 True(开启)。
importance_type (str) –
重要性如何计算:可以是 “weight”, “gain”, 或 “cover”
“weight” 是特征在树中出现的次数
“gain” 是使用该特征的分割的平均增益
“cover” 是使用该特征的分割的平均覆盖率,其中覆盖率定义为受分割影响的样本数量
max_num_features (int | None) – 图上显示的前 N 个特征的最大数量。如果为 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。
importance_type (str) – 上面定义的其中一种重要性类型。
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") – 通过 graphviz 传递给 graph_attr
ax (matplotlib Axes, default None) – 目标 axes 实例。如果为 None,则会创建新的 figure 和 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) – 通过 graphviz 传递给 graph_attr
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
包含训练例程的回调库。请参阅 Callback Functions 获取快速入门。
- 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>)
Bases:
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)
Bases:
TrainingCallback用于提前停止的回调函数
在 1.3.0 版本中添加。
- 参数:
rounds (int) – 提前停止轮数。
metric_name (str | None) – 用于提前停止的指标名称。
data_name (str | None) – 用于提前停止的数据集名称。
maximize (bool | None) – 是否最大化评估指标。None 表示自动(不推荐)。
save_best (bool | None) – 训练是应返回最佳模型还是最后一个模型。如果设置为 True,它将只保留到检测到的最佳迭代的提升轮数,丢弃之后的轮数。这仅支持树模型(不支持 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)
Bases:
TrainingCallback用于调度学习率的回调函数。
在 1.3.0 版本中添加。
- class xgboost.callback.TrainingCheckPoint(directory, name='model', as_pickle=False, interval=100)
Bases:
TrainingCallback检查点操作。鼓励用户为检查点创建自己的回调函数,因为 XGBoost 不处理分布式文件系统。在分布式系统上进行检查点时,请务必了解 worker 的 rank,以避免多个 worker 检查点到同一个地方。
在 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, device=None, force_repartition=False, repartition_random_shuffle=False, enable_sparse_data_optim=False, launch_tracker_on_driver=True, coll_cfg=None, **kwargs)
Bases:
_SparkXGBEstimator,HasProbabilityCol,HasRawPredictionColSparkXGBClassifier 是一个 PySpark ML 估计器。它实现了基于 XGBoost Python 库的 XGBoost 分类算法,并且可以用于 PySpark Pipeline 和 PySpark ML 元算法,例如 -
CrossValidator/ -TrainValidationSplit/ -OneVsRestSparkXGBClassifier 自动支持
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 worker 的 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 worker 数量。每个 XGBoost worker 对应一个 spark 任务。
device (str | None) –
2.0.0 版本新增。
XGBoost worker 的设备,可用选项是 cpu、cuda 和 gpu。
force_repartition (bool) – 指定在 XGBoost 训练前是否强制重新分区输入数据集的布尔值。
repartition_random_shuffle (bool) – 指定在需要重新分区时是否随机打乱数据集的布尔值。
enable_sparse_data_optim (bool) – 指定是否启用稀疏数据优化的布尔值,如果为 True,将从稀疏矩阵而不是密集矩阵构造 Xgboost DMatrix 对象。
launch_tracker_on_driver (bool) – 指示跟踪器是在驱动程序端还是执行器端启动的布尔值。
kwargs (Any) – xgboost 参数字典,请参阅 https://docs.xgboost.com.cn/en/stable/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)
- 返回:
此实例的副本
- 返回类型:
Params
- 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
- classmethod read()
返回用于加载估计器的读取器。
- 返回类型:
SparkXGBReader
- uid
对象的唯一 ID。
- write()
返回用于保存估计器的写入器。
- 返回类型:
SparkXGBWriter
- class xgboost.spark.SparkXGBClassifierModel(xgb_sklearn_model=None, training_summary=None)
Bases:
_ClassificationModelxgboost.spark.SparkXGBClassifier.fit()返回的模型注意
此 API 是实验性的。
- 参数:
xgb_sklearn_model (XGBModel | None)
training_summary (XGBoostTrainingSummary | None)
- copy(extra=None)
使用相同的 uid 和一些额外参数创建此实例的副本。默认实现使用
copy.copy()创建浅拷贝,然后将嵌入式和额外参数复制过来并返回副本。如果默认方法不够,子类应重写此方法。- 参数:
extra (dict, optional) – 要复制到新实例的额外参数
self (P)
- 返回:
此实例的副本
- 返回类型:
Params
- extractParamMap(extra=None)
提取嵌入的默认参数值和用户提供的值,然后将它们与输入中的额外值合并成一个扁平的参数映射,其中后者值在存在冲突时使用,即按顺序:默认参数值 < 用户提供的值 < 额外值。
- get_feature_importances(importance_type='weight')
获取每个特征的特征重要性。重要性类型可以定义为
‘weight’:特征在所有树中用于拆分数据的次数。
‘cover’:一个特征在所有拆分中使用的平均覆盖范围。
‘total_gain’:一个特征在所有拆分中使用的总增益。
‘total_cover’:一个特征在所有拆分中使用的总覆盖范围。
对于线性模型,只有“weight”被定义,它是没有偏置的归一化系数。
- 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, device=None, force_repartition=False, repartition_random_shuffle=False, enable_sparse_data_optim=False, launch_tracker_on_driver=True, coll_cfg=None, **kwargs)
Bases:
_SparkXGBEstimatorSparkXGBRegressor 是一个 PySpark ML 估计器。它实现了基于 XGBoost Python 库的 XGBoost 回归算法,并且可以用于 PySpark Pipeline 和 PySpark ML 元算法,例如 -
CrossValidator/ -TrainValidationSplit/ -OneVsRestSparkXGBRegressor 自动支持
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 worker 的 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 worker 数量。每个 XGBoost worker 对应一个 spark 任务。
device (str | None) –
2.0.0 版本新增。
XGBoost worker 的设备,可用选项是 cpu、cuda 和 gpu。
force_repartition (bool) – 指定在 XGBoost 训练前是否强制重新分区输入数据集的布尔值。
repartition_random_shuffle (bool) – 指定在需要重新分区时是否随机打乱数据集的布尔值。
enable_sparse_data_optim (bool) – 指定是否启用稀疏数据优化的布尔值,如果为 True,将从稀疏矩阵而不是密集矩阵构造 Xgboost DMatrix 对象。
launch_tracker_on_driver (bool) – 指示跟踪器是在驱动程序端还是执行器端启动的布尔值。
kwargs (Any) – xgboost 参数字典,请参阅 https://docs.xgboost.com.cn/en/stable/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)
- 返回:
此实例的副本
- 返回类型:
Params
- 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
- classmethod read()
返回用于加载估计器的读取器。
- 返回类型:
SparkXGBReader
- uid
对象的唯一 ID。
- write()
返回用于保存估计器的写入器。
- 返回类型:
SparkXGBWriter
- class xgboost.spark.SparkXGBRegressorModel(xgb_sklearn_model=None, training_summary=None)
Bases:
_SparkXGBModelxgboost.spark.SparkXGBRegressor.fit()返回的模型注意
此 API 是实验性的。
- 参数:
xgb_sklearn_model (XGBModel | None)
training_summary (XGBoostTrainingSummary | None)
- copy(extra=None)
使用相同的 uid 和一些额外参数创建此实例的副本。默认实现使用
copy.copy()创建浅拷贝,然后将嵌入式和额外参数复制过来并返回副本。如果默认方法不够,子类应重写此方法。- 参数:
extra (dict, optional) – 要复制到新实例的额外参数
self (P)
- 返回:
此实例的副本
- 返回类型:
Params
- extractParamMap(extra=None)
提取嵌入的默认参数值和用户提供的值,然后将它们与输入中的额外值合并成一个扁平的参数映射,其中后者值在存在冲突时使用,即按顺序:默认参数值 < 用户提供的值 < 额外值。
- get_feature_importances(importance_type='weight')
获取每个特征的特征重要性。重要性类型可以定义为
‘weight’:特征在所有树中用于拆分数据的次数。
‘cover’:一个特征在所有拆分中使用的平均覆盖范围。
‘total_gain’:一个特征在所有拆分中使用的总增益。
‘total_cover’:一个特征在所有拆分中使用的总覆盖范围。
对于线性模型,只有“weight”被定义,它是没有偏置的归一化系数。
- 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, device=None, force_repartition=False, repartition_random_shuffle=False, enable_sparse_data_optim=False, launch_tracker_on_driver=True, coll_cfg=None, **kwargs)
Bases:
_SparkXGBEstimatorSparkXGBRanker 是一个 PySpark ML 估计器。它实现了基于 XGBoost Python 库的 XGBoost ranking 算法,并且可以用于 PySpark Pipeline 和 PySpark ML 元算法,例如
CrossValidator/TrainValidationSplit/OneVsRestSparkXGBRanker 自动支持
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 worker 数量。每个 XGBoost worker 对应一个 spark 任务。
device (str | None) –
2.0.0 版本新增。
XGBoost worker 的设备,可用选项是 cpu、cuda 和 gpu。
force_repartition (bool) – 指定在 XGBoost 训练前是否强制重新分区输入数据集的布尔值。
repartition_random_shuffle (bool) – 指定在需要重新分区时是否随机打乱数据集的布尔值。
enable_sparse_data_optim (bool) – 指定是否启用稀疏数据优化的布尔值,如果为 True,将从稀疏矩阵而不是密集矩阵构造 Xgboost DMatrix 对象。
launch_tracker_on_driver (bool) – 指示跟踪器是在驱动程序端还是执行器端启动的布尔值。
kwargs (Any) – xgboost 参数字典,请参阅 https://docs.xgboost.com.cn/en/stable/parameter.html
Note: (..) – 上面的参数表包含需要特殊处理的参数:有关参数的完整列表,请参阅下方带有 Param(parent=… 的条目。
Note: – 此 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)
- 返回:
此实例的副本
- 返回类型:
Params
- 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
- classmethod read()
返回用于加载估计器的读取器。
- 返回类型:
SparkXGBReader
- uid
对象的唯一 ID。
- write()
返回用于保存估计器的写入器。
- 返回类型:
SparkXGBWriter
- class xgboost.spark.SparkXGBRankerModel(xgb_sklearn_model=None, training_summary=None)
Bases:
_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)
- 返回:
此实例的副本
- 返回类型:
Params
- extractParamMap(extra=None)
提取嵌入的默认参数值和用户提供的值,然后将它们与输入中的额外值合并成一个扁平的参数映射,其中后者值在存在冲突时使用,即按顺序:默认参数值 < 用户提供的值 < 额外值。
- get_feature_importances(importance_type='weight')
获取每个特征的特征重要性。重要性类型可以定义为
‘weight’:特征在所有树中用于拆分数据的次数。
‘cover’:一个特征在所有拆分中使用的平均覆盖范围。
‘total_gain’:一个特征在所有拆分中使用的总增益。
‘total_cover’:一个特征在所有拆分中使用的总覆盖范围。
对于线性模型,只有“weight”被定义,它是没有偏置的归一化系数。
- classmethod read()
返回用于加载模型的读取器。
- 返回类型:
SparkXGBModelReader
- transform(dataset, params=None)
使用可选参数转换输入数据集。
在 1.3.0 版本中添加。
- 参数:
dataset (
pyspark.sql.DataFrame) – 输入数据集params (dict, optional) – 一个可选的参数映射,用于覆盖嵌入的参数。
- 返回:
转换后的数据集
- 返回类型:
- uid
对象的唯一 ID。
- write()
返回用于保存模型的写入器。
- 返回类型:
SparkXGBModelWriter
Collective
XGBoost collective communication related API.
- class xgboost.collective.Config(retry=None, timeout=None, tracker_host_ip=None, tracker_port=None, tracker_timeout=None)
用于通信器上下文的用户配置。这用于与分布式框架更轻松地集成。collective 模块的用户可以直接将参数传递给 tracker 和通信器。
3.0 版本新增。
- 参数:
- timeout
请参阅
init()中的 dmlc_timeout。这仅用于通信器,而不用于 tracker。它们是不同的参数,因为 tracker 的超时仅限于启动和完成通信组的时间,而通信器的超时则限制了集体操作(如allreduce())所使用的时间。- Type:
int | None
- tracker_host_ip
- Type:
请参阅
RabitTracker。
- tracker_port
- Type:
请参阅
RabitTracker。
- tracker_timeout
- Type:
请参阅
RabitTracker。
- xgboost.collective.init(**args)
使用参数初始化 collective 库。
- 参数:
代表参数及其值的关键字参数。
- 接受的参数
dmlc_communicator: 通信器的类型。* rabit: 使用 Rabit。这是默认值,如果未指定类型。* federated: 使用 gRPC 接口进行联邦学习。
- 仅适用于 Rabit 通信器
dmlc_tracker_uri: tracker 的主机名。
dmlc_tracker_port: 追踪器的端口号。
dmlc_task_id: 当前任务的 ID,可用于获取确定性的
dmlc_retry: 处理网络错误时的重试次数。
dmlc_timeout: 超时时间(秒)。
dmlc_nccl_path: 用于 GPU 通信的 nccl 加载(dlopen)路径。
- 仅适用于 Federated 通信器
federated_server_address: 联邦服务器地址。
federated_world_size: 联邦工作器数量。
federated_rank: 当前工作器的排名。
federated_server_cert: 服务器证书文件路径。仅在 SSL 模式下需要。
federated_client_key: 客户端密钥文件路径。仅在 SSL 模式下需要。
federated_client_cert: 客户端证书文件路径。仅在 SSL 模式下需要。
请使用大写字母表示环境变量,使用小写字母表示运行时配置。
- 返回类型:
None
- xgboost.collective.finalize()
完成通信器。
- 返回类型:
None
- xgboost.collective.get_world_size()
获取总 worker 数。
- 返回:
总进程数。
- 返回类型:
n
- class xgboost.collective.CommunicatorContext(**args)
用于控制 collective 通信器初始化和最终化的上下文。
XGBoost collective 的 tracker。
- class xgboost.tracker.RabitTracker(n_workers, host_ip, port=0, *, sortby='host', timeout=0)
XGBoost collective 的 tracker,充当 worker 之间的协调器。
- 参数:
n_workers (int) – 通信组中的总 worker 数。
host_ip (str | None) – tracker 节点的 IP 地址。XGBoost 可以通过套接字探测来尝试猜测一个。但最好显式传递一个地址。
port (int) – 此 tracker 应监听的端口。XGBoost 可以从操作系统查询可用端口,此配置在受限网络环境中很有用。
sortby (str) –
如何对 worker 进行排序以分配 rank。默认是 host,但用户可以通过
init()的参数设置 DMLC_TASK_ID,通过按任务名称排序来获得确定的 rank 分配。可用选项是host
task
timeout (int) –
构造(引导)和关闭通信组的超时时间,不适用于组已启动并运行时的通信。
由于可能存在惰性执行,超时值应考虑数据加载和预处理的时间。默认情况下,Tracker 没有超时时间,以避免过早中止。
请注意,
wait_for()方法有一个不同的超时参数,即使 tracker 仍在被使用,它也可以停止 tracker。当达到超时时,将引发 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"