Python API 参考

此页面提供了 XGBoost 的 Python API 参考,有关 Python 包的更多信息,请参阅 Python 包介绍。

全局配置

xgboost.config_context(**new_config)

XGBoost 全局配置的上下文管理器。

全局配置包含可以在全局范围内应用的参数集合。有关全局配置中支持的参数完整列表,请参阅 全局配置

注意

退出上下文管理器时,所有设置,而不仅仅是当前修改的设置,都将恢复到之前的值。这并非线程安全。

在 1.4.0 版本中新增。

参数:

new_config (Dict[str, Any]) – 表示参数及其值的关键字参数

返回类型:

Iterator[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

另请参见

set_config

设置 XGBoost 全局配置

get_config

获取全局配置的当前值

xgboost.set_config(**new_config)

设置全局配置。

全局配置包含可以在全局范围内应用的参数集合。有关全局配置中支持的参数完整列表,请参阅 全局配置

在 1.4.0 版本中新增。

参数:

new_config (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.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.build_info()

XGBoost 的构建信息。返回值的格式不稳定。另外,请注意构建时依赖项与运行时依赖项不同。例如,可以使用旧版本的 CUDA 构建 XGBoost,但使用最新版本运行它。

在 1.6.0 版本中新增。

返回类型:

dict

核心数据结构

XGBoost 核心库。

class xgboost.DMatrix(data, label=None, *, weight=None, base_margin=None, missing=None, silent=False, feature_names=None, feature_types=None, nthread=None, group=None, qid=None, label_lower_bound=None, label_upper_bound=None, feature_weights=None, enable_categorical=False, data_split_mode=DataSplitMode.ROW)

基类: object

XGBoost 中使用的数据矩阵。

DMatrix 是 XGBoost 使用的内部数据结构,针对内存效率和训练速度进行了优化。您可以从多种不同的数据源构建 DMatrix。

参数:
  • data (Any) –

    DMatrix 的数据源。有关支持的输入类型列表,请参阅 各种 XGBoost 函数支持的数据结构

    请注意,如果传递迭代器,它将在磁盘上缓存数据,并且像 label 这样的字段将通过对迭代器的多次调用在内存中连接起来。

  • label (Any | None) – 训练数据的标签。

  • weight (Any | None) –

    每个实例的权重。

    注意

    对于排序任务,权重按组分配。在排序任务中,每个组(而不是每个数据点)分配一个权重。这是因为我们只关心每个组内数据点的相对顺序,因此为单个数据点分配权重没有意义。

  • base_margin (Any | None) – 每个实例的全局偏差。有关详细信息,请参阅截距

  • missing (float | None) – 输入数据中需要表示为缺失值的值。如果为 None,则默认为 np.nan。

  • silent (bool) – 构建期间是否打印消息

  • feature_names (Sequence[str] | None) – 设置特征名称。

  • feature_types (Sequence[str] | None) –

    设置特征类型。如果 data 是 DataFrame 类型且传递 enable_categorical=True,则将根据列类型自动推断类型。

    否则,可以传递一个与 data 中列数长度相同的列表式输入,其可能值为:

    • “c”,表示分类列。

    • “q”,表示数值列。

    • “int”,表示整数列。

    • “i”,表示布尔列。

    请注意,虽然出于模型拟合目的,分类类型与其他类型不同对待,但其他类型不会影响生成的模型,而是在特征重要性等其他功能中起作用。

    对于分类特征,输入被假定已由用户预处理和编码。编码可以通过 sklearn.preprocessing.OrdinalEncoder 或 pandas dataframe 的 .cat.codes 方法完成。当用户想要指定分类特征而无需构建 DataFrame 作为输入时,这非常有用。

  • nthread (int | None) – 在适用并行化时用于加载数据的线程数。如果为 -1,则使用系统上可用的最大线程数。

  • group (Any | None) – 所有排序组的组大小。

  • qid (Any | None) – 数据样本的查询 ID,用于排序。

  • label_lower_bound (Any | None) – 生存训练的下界。

  • label_upper_bound (Any | None) – 生存训练的上界。

  • feature_weights (Any | None) – 设置特征权重用于列采样。

  • enable_categorical (bool) –

    在 1.3.0 版本中新增。

    注意

    此参数为实验性

    实验性地支持对分类特征进行特殊处理。

    如果传入 ‘True’ 并且 ‘data’ 是一个数据框(来自 Pandas、Modin 或 cuDF 等支持的库),则分类类型的列将在生成的 DMatrix 中自动设置为分类类型(feature_type=’c’)。

    如果传入 ‘False’ 并且 ‘data’ 是一个包含分类列的数据框,则会引发错误。

    如果 ‘data’ 不是数据框,则此参数被忽略。

    这需要 JSON/UBJSON 序列化格式。

  • data_split_mode (DataSplitMode)

data_split_mode()

获取 DMatrix 的数据分割模式。

在 2.1.0 版本中新增。

返回类型:

DataSplitMode

property feature_names: Sequence[str] | None

特征的标签(列标签)。

将其设置为 None 会重置现有的特征名称。

property feature_types: Sequence[str] | None

特征类型(列类型)。

这用于显示结果和支持分类数据。有关详细信息,请参阅 DMatrix

将其设置为 None 会重置现有的特征类型。

get_base_margin()

获取 DMatrix 的基本边距 (base margin)。

返回类型:

base_margin

get_data()

以 CSR 矩阵的形式从 DMatrix 中获取预测变量。此 getter 主要用于测试目的。如果这是量化的 DMatrix,则返回量化值而不是输入值。

在 1.7.0 版本中新增。

返回类型:

csr_matrix

get_float_info(field)

从 DMatrix 中获取浮点属性。

参数:

field (str) – 信息的字段名

返回:

info – 数据浮点信息的 numpy 数组

返回类型:

array

get_group()

获取 DMatrix 的组信息。

返回类型:

group

get_label()

获取 DMatrix 的标签。

返回:

label

返回类型:

array

get_quantile_cut()

获取用于量化的分位数切点。

在 2.0.0 版本中新增。

返回类型:

Tuple[ndarray, ndarray]

get_uint_info(field)

从 DMatrix 中获取无符号整数属性。

参数:

field (str) – 信息的字段名

返回:

info – 数据无符号整数信息的 numpy 数组

返回类型:

array

get_weight()

获取 DMatrix 的权重。

返回:

weight

返回类型:

array

num_col()

获取 DMatrix 中的列数(特征数)。

返回类型:

int

num_nonmissing()

获取 DMatrix 中非缺失值的数量。

在 1.7.0 版本中新增。

返回类型:

int

num_row()

获取 DMatrix 中的行数。

返回类型:

int

save_binary(fname, silent=True)

将 DMatrix 保存到 XGBoost 缓冲区。保存的二进制文件稍后可以通过提供路径给 xgboost.DMatrix() 作为输入来加载。

参数:
  • fname (string or os.PathLike) – 输出缓冲区文件的名称。

  • silent (bool (可选;默认值:True)) – 如果设置,则抑制输出。

返回类型:

set_base_margin(margin)

设置 booster 的基本边距 (base margin) 作为起始值。

这可以用来指定现有模型的预测值作为 base_margin 然而,请记住需要的是边距值,而不是转换后的预测值,例如对于逻辑回归:需要在逻辑转换之前放入值,另请参阅 example/demo.py

参数:

margin (array like) – 每个数据点的预测边距 (prediction margin)

返回类型:

set_float_info(field, data)

将浮点类型属性设置到 DMatrix 中。

参数:
  • field (str) – 信息的字段名

  • data (numpy array) – 要设置的数据数组

返回类型:

set_float_info_npy2d(field, data)
将浮点类型属性设置到 DMatrix 中

用于 numpy 2d 数组输入

参数:
  • field (str) – 信息的字段名

  • data (numpy array) – 要设置的数据数组

返回类型:

set_group(group)

设置 DMatrix 的组大小(用于排序)。

参数:

group (array like) – 每个组的组大小

返回类型:

set_info(*, label=None, weight=None, base_margin=None, group=None, qid=None, label_lower_bound=None, label_upper_bound=None, feature_names=None, feature_types=None, feature_weights=None)

为 DMatrix 设置元信息。请参阅 xgboost.DMatrix 的文档字符串。

参数:
  • label (Any | None)

  • weight (Any | None)

  • base_margin (Any | None)

  • group (Any | None)

  • qid (Any | None)

  • label_lower_bound (Any | None)

  • label_upper_bound (Any | None)

  • feature_names (Sequence[str] | None)

  • feature_types (Sequence[str] | None)

  • feature_weights (Any | None)

返回类型:

set_label(label)

设置 dmatrix 的标签

参数:

label (array like) – 要设置到 DMatrix 中的标签信息

返回类型:

set_uint_info(field, data)

将 uint 类型属性设置到 DMatrix 中。

参数:
  • field (str) – 信息的字段名

  • data (numpy array) – 要设置的数据数组

返回类型:

set_weight(weight)

设置每个实例的权重。

参数:

weight (array like) –

每个数据点的权重

注意

对于排序任务,权重按组分配。

在排序任务中,每个组(而不是每个数据点)分配一个权重。这是因为我们只关心每个组内数据点的相对顺序,因此为单个数据点分配权重没有意义。

返回类型:

slice(rindex, allow_groups=False)

对 DMatrix 进行切片,并返回一个仅包含 rindex 的新 DMatrix。

参数:
  • rindex (List[int] | ndarray) – 要选择的索引列表。

  • allow_groups (bool) – 允许对具有 groups 属性的矩阵进行切片

返回:

只包含选定索引的新 DMatrix。

返回类型:

res

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 应是从训练数据集构建的另一个 QuantileDMatrixDMatrix(但不推荐,因为它会违背节省内存的目的)。有关元信息,请参阅 xgboost.DMatrix 的文档。

注意

不要在不提供引用(训练数据集)QuantileDMatrix(通过 ref 参数)的情况下将 QuantileDMatrix 用作验证/测试数据集,因为在量化过程中可能会丢失一些信息。

在 1.7.0 版本中新增。

示例

from sklearn.datasets import make_regression
from sklearn.model_selection import train_test_split

X, y = make_regression()
X_train, X_test, y_train, y_test = train_test_split(X, y)
Xy_train = xgb.QuantileDMatrix(X_train, y_train)
# It's necessary to have the training DMatrix as a reference for valid quantiles.
Xy_test = xgb.QuantileDMatrix(X_test, y_test, ref=Xy_train)
参数:
  • max_bin (int | None) – 直方图 bin 的数量,应与训练参数 max_bin 保持一致。

  • ref (DMatrix | None) – 提供分位数信息的训练数据集,在使用 QuantileDMatrix 创建验证/测试数据集时需要。提供训练 DMatrix 作为引用意味着将应用于训练数据的相同量化应用于验证/测试数据

  • max_quantile_batches (int | None) –

    对于来自迭代器的基于 GPU 的输入,XGBoost 使用多个增长的子流处理传入的批次。此参数设置在 XGBoost 可以切断子流并创建一个新子流之前处理的最大批次数量。这有助于限制内存使用。默认情况下,XGBoost 会指数级地增长新的子流,直到批次用尽。仅用于训练数据集,默认值为 None(无限制)。最后,如果 data 是单个批次而不是迭代器,则此参数无效。

    版本 3.0.0 中添加。

    警告

    这是一个实验性参数,可能会发生变化。

  • data (Any) –

    DMatrix 的数据源。有关支持的输入类型列表,请参阅 各种 XGBoost 函数支持的数据结构

    请注意,如果传递迭代器,它将在磁盘上缓存数据,并且像 label 这样的字段将通过对迭代器的多次调用在内存中连接起来。

  • label (Any | None) – 训练数据的标签。

  • weight (Any | None) –

    每个实例的权重。

    注意

    对于排序任务,权重按组分配。在排序任务中,每个组(而不是每个数据点)分配一个权重。这是因为我们只关心每个组内数据点的相对顺序,因此为单个数据点分配权重没有意义。

  • base_margin (Any | None) – 每个实例的全局偏差。有关详细信息,请参阅截距

  • missing (float | None) – 输入数据中需要表示为缺失值的值。如果为 None,则默认为 np.nan。

  • silent (bool) – 构建期间是否打印消息

  • feature_names (Sequence[str] | None) – 设置特征名称。

  • feature_types (Sequence[str] | None) –

    设置特征类型。如果 data 是 DataFrame 类型且传递 enable_categorical=True,则将根据列类型自动推断类型。

    否则,可以传递一个与 data 中列数长度相同的列表式输入,其可能值为:

    • “c”,表示分类列。

    • “q”,表示数值列。

    • “int”,表示整数列。

    • “i”,表示布尔列。

    请注意,虽然出于模型拟合目的,分类类型与其他类型不同对待,但其他类型不会影响生成的模型,而是在特征重要性等其他功能中起作用。

    对于分类特征,输入被假定已由用户预处理和编码。编码可以通过 sklearn.preprocessing.OrdinalEncoder 或 pandas dataframe 的 .cat.codes 方法完成。当用户想要指定分类特征而无需构建 DataFrame 作为输入时,这非常有用。

  • nthread (int | None) – 在适用并行化时用于加载数据的线程数。如果为 -1,则使用系统上可用的最大线程数。

  • group (Any | None) – 所有排序组的组大小。

  • qid (Any | None) – 数据样本的查询 ID,用于排序。

  • label_lower_bound (Any | None) – 生存训练的下界。

  • label_upper_bound (Any | None) – 生存训练的上界。

  • feature_weights (Any | None) – 设置特征权重用于列采样。

  • enable_categorical (bool) –

    在 1.3.0 版本中新增。

    注意

    此参数为实验性

    实验性地支持对分类特征进行特殊处理。

    如果传入 ‘True’ 并且 ‘data’ 是一个数据框(来自 Pandas、Modin 或 cuDF 等支持的库),则分类类型的列将在生成的 DMatrix 中自动设置为分类类型(feature_type=’c’)。

    如果传入 ‘False’ 并且 ‘data’ 是一个包含分类列的数据框,则会引发错误。

    如果 ‘data’ 不是数据框,则此参数被忽略。

    这需要 JSON/UBJSON 序列化格式。

  • data_split_mode (DataSplitMode)

data_split_mode()

获取 DMatrix 的数据分割模式。

在 2.1.0 版本中新增。

返回类型:

DataSplitMode

property feature_names: Sequence[str] | None

特征的标签(列标签)。

将其设置为 None 会重置现有的特征名称。

property feature_types: Sequence[str] | None

特征类型(列类型)。

这用于显示结果和支持分类数据。有关详细信息,请参阅 DMatrix

将其设置为 None 会重置现有的特征类型。

get_base_margin()

获取 DMatrix 的基本边距 (base margin)。

返回类型:

base_margin

get_data()

以 CSR 矩阵的形式从 DMatrix 中获取预测变量。此 getter 主要用于测试目的。如果这是量化的 DMatrix,则返回量化值而不是输入值。

在 1.7.0 版本中新增。

返回类型:

csr_matrix

get_float_info(field)

从 DMatrix 中获取浮点属性。

参数:

field (str) – 信息的字段名

返回:

info – 数据浮点信息的 numpy 数组

返回类型:

array

get_group()

获取 DMatrix 的组信息。

返回类型:

group

get_label()

获取 DMatrix 的标签。

返回:

label

返回类型:

array

get_quantile_cut()

获取用于量化的分位数切点。

在 2.0.0 版本中新增。

返回类型:

Tuple[ndarray, ndarray]

get_uint_info(field)

从 DMatrix 中获取无符号整数属性。

参数:

field (str) – 信息的字段名

返回:

info – 数据无符号整数信息的 numpy 数组

返回类型:

array

get_weight()

获取 DMatrix 的权重。

返回:

weight

返回类型:

array

num_col()

获取 DMatrix 中的列数(特征数)。

返回类型:

int

num_nonmissing()

获取 DMatrix 中非缺失值的数量。

在 1.7.0 版本中新增。

返回类型:

int

num_row()

获取 DMatrix 中的行数。

返回类型:

int

property ref: ReferenceType | None

用于检索对训练 DMatrix 的引用的内部方法。

save_binary(fname, silent=True)

将 DMatrix 保存到 XGBoost 缓冲区。保存的二进制文件稍后可以通过提供路径给 xgboost.DMatrix() 作为输入来加载。

参数:
  • fname (string or os.PathLike) – 输出缓冲区文件的名称。

  • silent (bool (可选;默认值:True)) – 如果设置,则抑制输出。

返回类型:

set_base_margin(margin)

设置 booster 的基本边距 (base margin) 作为起始值。

这可以用来指定现有模型的预测值作为 base_margin 然而,请记住需要的是边距值,而不是转换后的预测值,例如对于逻辑回归:需要在逻辑转换之前放入值,另请参阅 example/demo.py

参数:

margin (array like) – 每个数据点的预测边距 (prediction margin)

返回类型:

set_float_info(field, data)

将浮点类型属性设置到 DMatrix 中。

参数:
  • field (str) – 信息的字段名

  • data (numpy array) – 要设置的数据数组

返回类型:

set_float_info_npy2d(field, data)
将浮点类型属性设置到 DMatrix 中

用于 numpy 2d 数组输入

参数:
  • field (str) – 信息的字段名

  • data (numpy array) – 要设置的数据数组

返回类型:

set_group(group)

设置 DMatrix 的组大小(用于排序)。

参数:

group (array like) – 每个组的组大小

返回类型:

set_info(*, label=None, weight=None, base_margin=None, group=None, qid=None, label_lower_bound=None, label_upper_bound=None, feature_names=None, feature_types=None, feature_weights=None)

为 DMatrix 设置元信息。请参阅 xgboost.DMatrix 的文档字符串。

参数:
  • label (Any | None)

  • weight (Any | None)

  • base_margin (Any | None)

  • group (Any | None)

  • qid (Any | None)

  • label_lower_bound (Any | None)

  • label_upper_bound (Any | None)

  • feature_names (Sequence[str] | None)

  • feature_types (Sequence[str] | None)

  • feature_weights (Any | None)

返回类型:

set_label(label)

设置 dmatrix 的标签

参数:

label (array like) – 要设置到 DMatrix 中的标签信息

返回类型:

set_uint_info(field, data)

将 uint 类型属性设置到 DMatrix 中。

参数:
  • field (str) – 信息的字段名

  • data (numpy array) – 要设置的数据数组

返回类型:

set_weight(weight)

设置每个实例的权重。

参数:

weight (array like) –

每个数据点的权重

注意

对于排序任务,权重按组分配。

在排序任务中,每个组(而不是每个数据点)分配一个权重。这是因为我们只关心每个组内数据点的相对顺序,因此为单个数据点分配权重没有意义。

返回类型:

slice(rindex, allow_groups=False)

对 DMatrix 进行切片,并返回一个仅包含 rindex 的新 DMatrix。

参数:
  • rindex (List[int] | ndarray) – 要选择的索引列表。

  • allow_groups (bool) – 允许对具有 groups 属性的矩阵进行切片

返回:

只包含选定索引的新 DMatrix。

返回类型:

res

class xgboost.ExtMemQuantileDMatrix(data, *, missing=None, nthread=None, max_bin=None, ref=None, enable_categorical=False, max_num_device_pages=None, max_quantile_batches=None)

基类: DMatrix, _RefMixIn

QuantileDMatrix 的外部内存版本。

有关解释和使用示例,请参阅 Using XGBoost External Memory Version,有关参数文档,请参阅 QuantileDMatrix

警告

这是一个实验性功能,可能会发生变化。

版本 3.0.0 中添加。

参数:
  • data (DataIter) – 用于加载数据的用户定义 DataIter

  • max_num_device_pages (int | None) – 对于基于 GPU 的验证数据集,XGBoost 可以选择将一些页面缓存到设备内存而不是主机内存中,以减少数据传输。每个缓存页面的大小为 min_cache_page_bytes。如果您不想将页面缓存到设备内存中,请将其设置为 0。当存在多个验证数据集时,这对于防止 OOM 错误非常有用。基于设备的页面默认数量为 1。最后,XGBoost 通过检查 ref 是否为 None 来推断数据集是否用于验证。

  • max_quantile_batches (int | None) – 参阅 QuantileDMatrix

  • missing (float | None)

  • nthread (int | None)

  • max_bin (int | None)

  • ref (DMatrix | None)

  • enable_categorical (bool)

data_split_mode()

获取 DMatrix 的数据分割模式。

在 2.1.0 版本中新增。

返回类型:

DataSplitMode

property feature_names: Sequence[str] | None

特征的标签(列标签)。

将其设置为 None 会重置现有的特征名称。

property feature_types: Sequence[str] | None

特征类型(列类型)。

这用于显示结果和支持分类数据。有关详细信息,请参阅 DMatrix

将其设置为 None 会重置现有的特征类型。

get_base_margin()

获取 DMatrix 的基本边距 (base margin)。

返回类型:

base_margin

get_data()

以 CSR 矩阵的形式从 DMatrix 中获取预测变量。此 getter 主要用于测试目的。如果这是量化的 DMatrix,则返回量化值而不是输入值。

在 1.7.0 版本中新增。

返回类型:

csr_matrix

get_float_info(field)

从 DMatrix 中获取浮点属性。

参数:

field (str) – 信息的字段名

返回:

info – 数据浮点信息的 numpy 数组

返回类型:

array

get_group()

获取 DMatrix 的组信息。

返回类型:

group

get_label()

获取 DMatrix 的标签。

返回:

label

返回类型:

array

get_quantile_cut()

获取用于量化的分位数切点。

在 2.0.0 版本中新增。

返回类型:

Tuple[ndarray, ndarray]

get_uint_info(field)

从 DMatrix 中获取无符号整数属性。

参数:

field (str) – 信息的字段名

返回:

info – 数据无符号整数信息的 numpy 数组

返回类型:

array

get_weight()

获取 DMatrix 的权重。

返回:

weight

返回类型:

array

num_col()

获取 DMatrix 中的列数(特征数)。

返回类型:

int

num_nonmissing()

获取 DMatrix 中非缺失值的数量。

在 1.7.0 版本中新增。

返回类型:

int

num_row()

获取 DMatrix 中的行数。

返回类型:

int

property ref: ReferenceType | None

用于检索对训练 DMatrix 的引用的内部方法。

save_binary(fname, silent=True)

将 DMatrix 保存到 XGBoost 缓冲区。保存的二进制文件稍后可以通过提供路径给 xgboost.DMatrix() 作为输入来加载。

参数:
  • fname (string or os.PathLike) – 输出缓冲区文件的名称。

  • silent (bool (可选;默认值:True)) – 如果设置,则抑制输出。

返回类型:

set_base_margin(margin)

设置 booster 的基本边距 (base margin) 作为起始值。

这可以用来指定现有模型的预测值作为 base_margin 然而,请记住需要的是边距值,而不是转换后的预测值,例如对于逻辑回归:需要在逻辑转换之前放入值,另请参阅 example/demo.py

参数:

margin (array like) – 每个数据点的预测边距 (prediction margin)

返回类型:

set_float_info(field, data)

将浮点类型属性设置到 DMatrix 中。

参数:
  • field (str) – 信息的字段名

  • data (numpy array) – 要设置的数据数组

返回类型:

set_float_info_npy2d(field, data)
将浮点类型属性设置到 DMatrix 中

用于 numpy 2d 数组输入

参数:
  • field (str) – 信息的字段名

  • data (numpy array) – 要设置的数据数组

返回类型:

set_group(group)

设置 DMatrix 的组大小(用于排序)。

参数:

group (array like) – 每个组的组大小

返回类型:

set_info(*, label=None, weight=None, base_margin=None, group=None, qid=None, label_lower_bound=None, label_upper_bound=None, feature_names=None, feature_types=None, feature_weights=None)

为 DMatrix 设置元信息。请参阅 xgboost.DMatrix 的文档字符串。

参数:
  • label (Any | None)

  • weight (Any | None)

  • base_margin (Any | None)

  • group (Any | None)

  • qid (Any | None)

  • label_lower_bound (Any | None)

  • label_upper_bound (Any | None)

  • feature_names (Sequence[str] | None)

  • feature_types (Sequence[str] | None)

  • feature_weights (Any | None)

返回类型:

set_label(label)

设置 dmatrix 的标签

参数:

label (array like) – 要设置到 DMatrix 中的标签信息

返回类型:

set_uint_info(field, data)

将 uint 类型属性设置到 DMatrix 中。

参数:
  • field (str) – 信息的字段名

  • data (numpy array) – 要设置的数据数组

返回类型:

set_weight(weight)

设置每个实例的权重。

参数:

weight (array like) –

每个数据点的权重

注意

对于排序任务,权重按组分配。

在排序任务中,每个组(而不是每个数据点)分配一个权重。这是因为我们只关心每个组内数据点的相对顺序,因此为单个数据点分配权重没有意义。

返回类型:

slice(rindex, allow_groups=False)

对 DMatrix 进行切片,并返回一个仅包含 rindex 的新 DMatrix。

参数:
  • rindex (List[int] | ndarray) – 要选择的索引列表。

  • allow_groups (bool) – 允许对具有 groups 属性的矩阵进行切片

返回:

只包含选定索引的新 DMatrix。

返回类型:

res

class xgboost.Booster(params=None, cache=None, model_file=None)

基类: object

XGBoost 的 Booster。

Booster 是 XGBoost 的模型,包含用于训练、预测和评估的底层例程。

参数:
__getitem__(val)

获取树模型的切片。结果 booster 中会移除 best_iterationbest_score 等属性。

在 1.3.0 版本中新增。

参数:

val (int | integer | tuple | slice | ellipsis)

返回类型:

Booster

attr(key)

从 Booster 获取属性字符串。

参数:

key (str) – 要获取属性的键。

返回:

键的属性值,如果属性不存在则返回 None。

返回类型:

value

attributes()

将存储在 Booster 中的属性作为字典获取。

返回:

result – 如果没有属性,则返回一个空字典。

返回类型:

由字符串构成的 attribute_name: attribute_value 对的字典。

property best_iteration: int

训练期间的最佳迭代次数。

property best_score: float

训练期间的最佳评估分数。

boost(dtrain, iteration, grad, hess)

使用自定义梯度统计信息,将 booster 提升一个迭代。与 xgboost.Booster.update() 类似,此函数不应由用户直接调用。

参数:
  • dtrain (DMatrix) – 训练 DMatrix。

  • grad (Any) – 一阶梯度。

  • hess (Any) – 二阶梯度。

  • iteration (int)

返回类型:

copy()

复制 booster 对象。

返回:

复制的 booster 模型

返回类型:

booster

dump_model(fout, fmap='', with_stats=False, dump_format='text')

将模型转储到文本或 JSON 文件中。与 save_model() 不同,此输出格式主要用于可视化或解释,因此更易于人类阅读,但无法重新加载到 XGBoost 中。

参数:
  • fout (str | PathLike) – 输出文件名。

  • fmap (str | PathLike) – 包含特征映射文件名的文件名称。

  • with_stats (bool) – 控制是否输出分割统计信息。

  • dump_format (str) – 模型转储文件的格式。可以是 'text' 或 'json'。

返回类型:

eval(data, name='eval', iteration=0)

在 mat 上评估模型。

参数:
  • data (DMatrix) – 存储输入的 dmatrix。

  • name (str) – 数据集的名称。

  • iteration (int) – 当前迭代次数。

返回:

result – 评估结果字符串。

返回类型:

str

eval_set(evals, iteration=0, feval=None, output_margin=True)

评估一组数据。

参数:
返回:

result – 评估结果字符串。

返回类型:

str

property feature_names: Sequence[str] | None

此 booster 的特征名称。可以直接通过输入数据设置或通过赋值设置。

property feature_types: Sequence[str] | None

此 booster 的特征类型。可以直接通过输入数据设置或通过赋值设置。有关详细信息,请参阅 DMatrix

get_dump(fmap='', with_stats=False, dump_format='text')

将模型转储作为字符串列表返回。与 save_model() 不同,此输出格式主要用于可视化或解释,因此更易于人类阅读,但无法重新加载到 XGBoost 中。

参数:
  • fmap (str | PathLike) – 包含特征映射文件名的文件名称。

  • with_stats (bool) – 控制是否包含分割统计信息。

  • dump_format (str) – 模型转储的格式。可以是 'text'、'json' 或 'dot'。

返回类型:

List[str]

get_fscore(fmap='')

获取每个特征的特征重要性。

注意

不会包含重要性为零的特征。

请注意,此函数不包含重要性为零的特征,即在任何分割条件中都未使用的特征。

参数:

fmap (str | PathLike) – 特征映射文件的名称

返回类型:

Dict[str, float | List[float]]

get_score(fmap='', importance_type='weight')

获取每个特征的特征重要性。对于树模型,重要性类型可以定义为

  • ‘weight’: 在所有树中特征被用于分割数据的次数。

  • ‘gain’: 特征在所有分割中获得的平均增益。

  • ‘cover’: 特征在所有分割中覆盖的平均样本数(覆盖度)。

  • ‘total_gain’: 特征在所有分割中获得的总增益。

  • ‘total_cover’: 特征在所有分割中覆盖的总样本数(覆盖度)。

注意

对于线性模型,仅定义了“weight”,它是去除偏差后的归一化系数。

注意

不会包含重要性为零的特征。

请注意,此函数不包含重要性为零的特征,即在任何分割条件中都未使用的特征。

参数:
  • fmap (str | PathLike) – 特征映射文件的名称。

  • importance_type (str) – 上面定义的一种重要性类型。

返回:

  • 特征名称及其分数之间的映射。当 gblinear 用于

  • 多分类时,每个特征的分数是一个长度为

  • n_classes 的列表,否则是标量。

返回类型:

Dict[str, float | List[float]]

get_split_value_histogram(feature, fmap='', bins=None, as_pandas=True)

获取特征的分割值直方图

参数:
  • feature (str) – 特征名称。

  • fmap (str | PathLike) – 特征映射文件的名称。

  • bin – 最大 bin 数量。如果 bins == None 或 bins > n_unique,则 bin 数量等于唯一分割值的数量 n_unique。

  • as_pandas (bool) – 当安装了 pandas 时返回 pd.DataFrame。如果为 False 或未安装 pandas,则返回 numpy ndarray。

  • bins (int | None)

返回:

  • 指定特征使用的分割值的直方图,

  • 以 numpy 数组或 pandas DataFrame 的形式返回。

返回类型:

ndarray | DataFrame

inplace_predict(data, *, iteration_range=(0, 0), predict_type='value', missing=nan, validate_features=True, base_margin=None, strict_shape=False)

如果可能,执行原地预测。与 predict() 方法不同,原地预测不会缓存预测结果。

仅在多个线程中调用 inplace_predict 是安全且无锁的。但与其它方法结合使用时,安全性不成立。例如,您不能在一个线程中训练 booster,而在另一个线程中执行预测。

注意

如果输入数据的设备序号与为 booster 配置的不匹配,数据将被复制到 booster 设备。

booster.set_param({"device": "cuda:0"})
booster.inplace_predict(cupy_array)

booster.set_param({"device": "cpu"})
booster.inplace_predict(numpy_array)

版本 1.1.0 中添加。

参数:
返回:

prediction – 预测结果。当输入数据在 GPU 上时,预测结果存储在 cupy 数组中。

返回类型:

numpy.ndarray/cupy.ndarray

load_config(config)

加载由 save_config 返回的配置。

版本 1.0.0 中添加。

参数:

config (str)

返回类型:

load_model(fname)

从文件或 bytearray 加载模型。

模型以 XGBoost 内部格式保存,该格式在各种 XGBoost 接口中通用。Python Booster 对象的辅助属性(例如 feature_names)仅在使用 JSON 或 UBJSON(默认)格式时保存。此外,不属于模型的参数(如指标、max_depth 等)不会保存,有关更多信息,请参阅 Model IO

model.save_model("model.json")
model.load_model("model.json")

# or
model.save_model("model.ubj")
model.load_model("model.ubj")

# or
buf = model.save_raw()
model.load_model(buf)
参数:

fname (PathLike | bytearray | str) – 输入文件名或内存缓冲区(另请参阅 save_raw)

返回类型:

num_boosted_rounds()

获取提升轮数。对于 gblinear,序列化模型后会重置为 0。

返回类型:

int

num_features()

booster 中的特征数量。

返回类型:

int

predict(data, *, output_margin=False, pred_leaf=False, pred_contribs=False, approx_contribs=False, pred_interactions=False, validate_features=True, training=False, iteration_range=(0, 0), strict_shape=False)

使用数据进行预测。除非指定 iteration_range,否则将使用完整模型,这意味着用户必须切片模型或使用 best_iteration 属性从早停返回的最佳模型中获取预测结果。

注意

有关线程安全问题以及此函数输出的摘要,请参阅 Prediction

参数:
  • data (DMatrix) – 存储输入的 dmatrix。

  • output_margin (bool) – 是否输出原始未转换的 margin 值。

  • pred_leaf (bool) – 启用此选项时,输出将是一个矩阵,形状为 (nsample, ntrees),每条记录表示每个样本在每棵树中的预测叶子索引。请注意,一棵树的叶子索引在该树中是唯一的,因此您可能会在树 1 和树 0 中找到叶子 1。

  • pred_contribs (bool) – 当此参数设置为 True 时,输出将是一个形状为 (nsample, nfeats + 1) 的矩阵,每条记录表示该预测的特征贡献(SHAP 值)。所有特征贡献的总和等于预测的原始未转换 margin 值。注意,最后一列是偏差项。

  • approx_contribs (bool) – 近似计算每个特征的贡献。在 pred_contribspred_interactions 设置为 True 时使用。不建议更改此参数的默认值 (False)。

  • pred_interactions (bool) – 当此参数设置为 True 时,输出将是一个形状为 (nsample, nfeats + 1, nfeats + 1) 的矩阵,表示每对特征的 SHAP 交互值。交互值每一行(或每一列)的总和等于相应的 SHAP 值(来自 pred_contribs),并且整个矩阵的总和等于预测的原始未转换 margin 值。注意,最后一行和最后一列对应于偏差项。

  • validate_features (bool) – 当此参数设置为 True 时,验证 Booster 和数据的 feature_names 是否完全一致。否则,假设 feature_names 是相同的。

  • training (bool) –

    预测值是否用于训练。这可能会影响 dart booster,它在训练迭代期间执行 dropout,但在推理时使用所有树。如果您想获得带有 dropout 的结果,请将此参数设置为 True。此外,当为自定义目标函数获取预测结果时,此参数会设置为 true。

    版本 1.0.0 中添加。

  • iteration_range (Tuple[int | integer, int | integer]) –

    指定预测中使用哪一层次的树。例如,如果使用 100 轮训练了随机森林。指定 iteration_range=(10, 20),则此预测仅使用在 [10, 20)(半开区间)轮中构建的森林。

    在 1.4.0 版本中新增。

  • strict_shape (bool) –

    当设置为 True 时,输出形状与是否使用分类无关。对于 value 和 margin 预测,输出形状均为 (n_samples, n_groups),n_groups 在未使用多分类时等于 1。默认为 False,在这种情况下,如果未使用多分类,输出形状可能为 (n_samples, )。

    在 1.4.0 版本中新增。

返回:

prediction

返回类型:

numpy array

reset()

重置 booster 对象以释放用于训练的数据缓存。

版本 3.0.0 中添加。

返回类型:

Booster

save_config()

将 Booster 的内部参数配置输出为 JSON 字符串。

版本 1.0.0 中添加。

返回类型:

str

save_model(fname)

将模型保存到文件。

模型以 XGBoost 内部格式保存,该格式在各种 XGBoost 接口中通用。Python Booster 对象的辅助属性(例如 feature_names)仅在使用 JSON 或 UBJSON(默认)格式时保存。此外,不属于模型的参数(如指标、max_depth 等)不会保存,有关更多信息,请参阅 Model IO

model.save_model("model.json")
# or
model.save_model("model.ubj")
参数:

fname (str | PathLike) – 输出文件名

返回类型:

save_raw(raw_format='ubj')

将模型保存到内存缓冲区表示中,而不是文件。

模型以 XGBoost 内部格式保存,该格式在各种 XGBoost 接口中通用。Python Booster 对象的辅助属性(例如 feature_names)仅在使用 JSON 或 UBJSON(默认)格式时保存。此外,不属于模型的参数(如指标、max_depth 等)不会保存,有关更多信息,请参阅 Model IO

参数:

raw_format (str) – 输出缓冲区的格式。可以是 jsonubj

返回类型:

模型的内存缓冲区表示

set_attr(**kwargs)

设置 Booster 的属性。

参数:

**kwargs (Any | None) – 要设置的属性。将值设置为 None 会删除属性。

返回类型:

set_param(params, value=None)

将参数设置到 Booster 中。

参数:
  • params (Dict | Iterable[Tuple[str, Any]] | str) – 键值对列表,键到值的字典,或者简单的字符串键

  • value (str | None) – 指定参数的值,当 params 是字符串键时使用

返回类型:

trees_to_dataframe(fmap='')

将提升树模型文本转储解析为 pandas DataFrame 结构。

此功能仅在选择决策树模型作为基础学习器 (booster in {gbtree, dart}) 时定义。对于其他基础学习器类型(如线性学习器,booster=gblinear)则未定义。

参数:

fmap (str | PathLike) – 特征映射文件的名称。

返回类型:

DataFrame

update(dtrain, iteration, fobj=None)

使用内部计算的目标函数更新一次迭代。此函数不应由用户直接调用。

参数:
返回类型:

class xgboost.DataIter(cache_prefix=None, release_data=True, *, on_host=True, min_cache_page_bytes=None)

基类:ABC

用户定义数据迭代器的接口。该迭代器使用 DMatrixExtMemQuantileDMatrix 支持分布式训练、QuantileDMatrix 和外部内存。大多数情况下,用户无需直接与此类交互。

注意

该类使用 data 输入(预测器 X)作为键来缓存一些中间结果。不要重复使用不同元数据(如 label)的多个批次数据的 X,如有必要请创建副本。

参数:
  • cache_prefix (str | None) –

    缓存文件的前缀,仅在外部内存中使用。

    注意,对外部内存使用此类将在磁盘上缓存数据,缓存路径由此处传入。

  • release_data (bool) – 迭代器是否应在迭代过程中释放数据。如果数据转换(将数据转换为 np.float32 类型)占用大量内存,则将其设置为 True。否则,如果转换占用大量计算资源,则可以保留缓存。

  • on_host (bool) –

    在使用 GPU 外部内存时,数据是否应缓存在主机内存而不是文件系统上。设置为 True (默认) 时,“外部内存”即 CPU (主机) 内存。更多信息请参见 Using XGBoost External Memory Version

    版本 3.0.0 中添加。

    警告

    这是一个实验性参数,可能会发生变化。

  • min_cache_page_bytes (int | None) –

    每个缓存页的最小字节数。仅用于使用 GPU 基础的 ExtMemQuantileDMatrix 进行主机缓存时。当使用 GPU 基础的外部内存且数据缓存在主机内存中时,XGBoost 可以在内部连接页面以增加 GPU 的批处理大小。默认页面大小约为总设备内存的 1/8。用户可以根据实际硬件和数据集手动设置该值。将其设置为 0 可禁用页面连接。

    版本 3.0.0 中添加。

    警告

    这是一个实验性参数,可能会发生变化。

get_callbacks(enable_categorical)

获取在 C 中迭代的回调函数。这是一个内部函数。

参数:

enable_categorical (bool)

返回类型:

Tuple[Callable, Callable]

abstract next(input_data)

设置下一个批次数据。

参数:

input_data (Callable) – 一个函数,具有与 xgboost.DMatrix 相同的数据字段,如 datalabel

返回类型:

如果没有更多批次,则为 False,否则为 True。

property proxy: _ProxyDMatrix

DMatrix 代理的句柄。

reraise()

重新抛出迭代期间发生的异常。

返回类型:

abstract reset()

重置数据迭代器。用户定义函数的原型。

返回类型:

学习 API

包含训练例程的训练库。

xgboost.train(params, dtrain, num_boost_round=10, *, evals=None, obj=None, maximize=None, early_stopping_rounds=None, evals_result=None, verbose_eval=True, xgb_model=None, callbacks=None, custom_metric=None)

使用给定参数训练一个 booster 模型。

参数:
  • params (Dict[str, Any]) – 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 中至少需要一个项目。

    该方法返回最后一轮的模型(而不是最佳模型)。如果需要最佳模型,请使用自定义回调 EarlyStoppingmodel slicing。如果在 evals 中有多个项目,则使用最后一个条目进行提前停止。

    如果在 params 中给定的 eval_metric 参数中有多个指标,则使用最后一个指标进行提前停止。

    如果发生提前停止,模型将有两个额外的字段:bst.best_score, bst.best_iteration

  • evals_result (Dict[str, Dict[str, List[float] | List[Tuple[float, float]]]] | None) –

    此字典存储 watchlist 中所有项目的评估结果。

    示例:watchlist 包含 [(dtest,'eval'), (dtrain,'train')],参数包含 ('eval_metric': 'logloss'),则 evals_result 返回

    {'train': {'logloss': ['0.48253', '0.35953']},
     'eval': {'logloss': ['0.480385', '0.357756']}}
    

  • verbose_eval (bool | int | None) –

    evals 中至少需要一个项目。

    如果 verbose_eval 为 True,则在每个提升阶段打印验证集上的评估指标。

    如果 verbose_eval 是一个整数,则在每给定 verbose_eval 个提升阶段打印验证集上的评估指标。最后一个提升阶段/使用 early_stopping_rounds 找到的提升阶段也会被打印。

    示例:设置 verbose_eval=4 并在 evals 中至少有一个项目,则每 4 个提升阶段打印一次评估指标,而不是每个提升阶段。

  • xgb_model (str | PathLike | Booster | bytearray | None) – 训练前加载的 XGB 模型(允许训练继续)。

  • callbacks (Sequence[TrainingCallback] | None) –

    在每次迭代结束时应用的 callback 函数列表。可以使用 Callback API 中预定义的回调。

    注意

    callback 中的状态在训练期间不会保留,这意味着 callback 对象不能在未经重新初始化或深拷贝的情况下重复用于多个训练会话。

    for params in parameters_grid:
        # be sure to (re)initialize the callbacks before each run
        callbacks = [xgb.callback.LearningRateScheduler(custom_rates)]
        xgboost.train(params, Xy, callbacks=callbacks)
    

  • custom_metric (Callable[[ndarray, DMatrix], Tuple[str, float]] | None) –

    自定义评估指标函数。有关详细信息,请参阅 Custom Metric。使用内置目标时,该指标接收转换后的预测(应用反向链接函数后),使用自定义目标时则接收原始输出。

返回:

Booster

返回类型:

一个训练好的 booster 模型

xgboost.cv(params, dtrain, num_boost_round=10, *, nfold=3, stratified=False, folds=None, metrics=(), obj=None, maximize=None, early_stopping_rounds=None, fpreproc=None, as_pandas=True, verbose_eval=None, show_stdv=True, seed=0, callbacks=None, shuffle=True, custom_metric=None)

使用给定参数进行交叉验证。

参数:
  • params (dict) – Booster 参数。

  • dtrain (DMatrix) – 要训练的数据。仅支持不带外部内存的 DMatrix

  • num_boost_round (int) – 提升迭代次数。

  • nfold (int) – CV 中的折叠数。

  • stratified (bool) – 执行分层抽样。

  • folds (a KFold or StratifiedKFold instance or list of fold indices) – Sklearn KFolds 或 StratifiedKFolds 对象。或者可以显式传递每个折叠的样本索引。对于 n 个折叠,folds 应该是一个长度为 n 的元组列表。每个元组是 (in,out),其中 in 是用于第 n 个折叠的训练样本索引列表,out 是用于第 n 个折叠的测试样本索引列表。

  • metrics (string or list of strings) – 在 CV 中要关注的评估指标。

  • obj (Callable[[ndarray, DMatrix], Tuple[ndarray, ndarray]] | None) – 自定义目标函数。有关详细信息,请参阅 Custom Objective

  • maximize (bool) – 是否最大化评估指标(得分或误差)。

  • early_stopping_rounds (int) – 激活提前停止。交叉验证指标(在 CV 折叠上计算的验证指标平均值)需要在每 early_stopping_rounds 轮中至少改进一次以继续训练。评估历史中的最后一个条目将代表最佳迭代。如果在 params 中给定的 eval_metric 参数中有多个指标,则使用最后一个指标进行提前停止。

  • fpreproc (function) – 预处理函数,接受 (dtrain, dtest, param) 并返回转换后的版本。

  • as_pandas (bool, default True) – 如果安装了 pandas,则返回 pd.DataFrame。如果为 False 或未安装 pandas,则返回 np.ndarray

  • verbose_eval (bool, int, or None, default None) – 是否显示进度。如果为 None,当返回 np.ndarray 时将显示进度。如果为 True,将在提升阶段显示进度。如果给定一个整数,则在每给定 verbose_eval 个提升阶段显示进度。

  • show_stdv (bool, default True) – 是否在进度中显示标准差。结果不受影响,并且始终包含标准差。

  • seed (int) – 用于生成折叠的种子(传递给 numpy.random.seed)。

  • callbacks (Sequence[TrainingCallback] | None) –

    在每次迭代结束时应用的 callback 函数列表。可以使用 Callback API 中预定义的回调。

    注意

    callback 中的状态在训练期间不会保留,这意味着 callback 对象不能在未经重新初始化或深拷贝的情况下重复用于多个训练会话。

    for params in parameters_grid:
        # be sure to (re)initialize the callbacks before each run
        callbacks = [xgb.callback.LearningRateScheduler(custom_rates)]
        xgboost.train(params, Xy, callbacks=callbacks)
    

  • shuffle (bool) – 在创建折叠之前打乱数据。

  • custom_metric (Callable[[ndarray, DMatrix], Tuple[str, float]] | None) –

    自定义评估指标函数。有关详细信息,请参阅 Custom Metric

返回:

评估历史

返回类型:

list(string)

Scikit-Learn API

XGBoost 的 Scikit-Learn Wrapper 接口。

class xgboost.XGBRegressor(*, objective='reg:squarederror', **kwargs)

基类:RegressorMixin, XGBModel

XGBoost 回归的 scikit-learn API 实现。有关更多信息,请参阅 Using the Scikit-Learn Estimator Interface

参数:
  • n_estimators (Optional[int]) – 梯度提升树的数量。等同于提升轮次。

  • max_depth (Optional[int]) – 基础学习器的最大树深度。

  • max_leaves (Optional[int]) – 最大叶子数;0 表示无限制。

  • max_bin (Optional[int]) – 如果使用基于直方图的算法,则每个特征的最大 bin 数

  • grow_policy (Optional[str]) –

    树生长策略。

    • depthwise: 倾向于在最靠近根节点的节点处进行分裂,

    • lossguide: 倾向于在损失变化最大的节点处进行分裂。

  • learning_rate (Optional[float]) – 提升学习率(xgb 的“eta”)

  • verbosity (Optional[int]) – 冗余程度。有效值范围为 0(静默)- 3(调试)。

  • objective (Union[str, xgboost.sklearn._SklObjWProto, Callable[[Any, Any], Tuple[numpy.ndarray, numpy.ndarray]], NoneType]) –

    指定要使用的学习任务和相应的学习目标或自定义目标函数。

    对于自定义目标,有关详细信息以及函数签名的末尾注释,请参阅 Custom Objective and Evaluation MetricCustom objective and metric

  • booster (Optional[str]) – 指定使用哪个 booster:gbtreegblineardart

  • 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 步长。

  • subsample (Optional[float]) – 训练实例的子采样比例。

  • sampling_method (Optional[str]) –

    采样方法。仅由 hist 树方法的 GPU 版本使用。

    • uniform: 均匀随机选择训练实例。

    • gradient_based: 在梯度和 Hessian 较大时以更高概率随机选择训练实例。(参见 CatBoost)

      当梯度和 Hessian 值较大时。(参见 CatBoost)

  • colsample_bytree (Optional[float]) – 构建每棵树时列的子采样比例。

  • colsample_bylevel (Optional[float]) – 每层列的子采样比例。

  • colsample_bynode (Optional[float]) – 每次分裂时列的子采样比例。

  • reg_alpha (Optional[float]) – 权重上的 L1 正则化项(xgb 的 alpha)。

  • reg_lambda (Optional[float]) – 权重上的 L2 正则化项(xgb 的 lambda)。

  • scale_pos_weight (Optional[float]) – 正负权重的平衡。

  • base_score (Optional[float]) – 所有实例的初始预测得分,全局偏置。

  • random_state (Union[numpy.random.mtrand.RandomState, numpy.random._generator.Generator, int, NoneType]) –

    随机数种子。

    注意

    使用带有 shotgun 更新器的 gblinear booster 是非确定性的,因为它使用 Hogwild 算法。

  • missing (float) – 数据中表示缺失值的值。默认为 numpy.nan

  • num_parallel_tree (Optional[int]) – 用于提升随机森林。

  • monotone_constraints (Union[Dict[str, int], str, NoneType]) – 变量单调性的约束。有关详细信息,请参阅 tutorial

  • interaction_constraints (Union[str, List[Tuple[str]], NoneType]) – 表示允许交互的交互约束。约束必须以嵌套列表的形式指定,例如 [[0, 1], [2, 3, 4]],其中每个内部列表是一组允许相互交互的特征索引。有关更多信息,请参阅 tutorial

  • importance_type (Optional[str]) –

    feature_importances_ 属性的特征重要性类型

    • 对于树模型,可以是“gain”、“weight”、“cover”、“total_gain”或“total_cover”。

    • 对于线性模型,仅定义了“weight”,它是去除偏差后的归一化系数。

  • device (Optional[str]) –

    在 2.0.0 版本中新增。

    设备序号,可用选项有 cpucudagpu

  • validate_parameters (Optional[bool]) – 对未知参数发出警告。

  • enable_categorical (bool) – 有关详细信息,请参阅 DMatrix 的相同参数。

  • feature_types (Optional[Sequence[str]]) –

    在 1.7.0 版本中新增。

    用于在不构建 dataframe 的情况下指定特征类型。有关详细信息,请参阅 DMatrix

  • feature_weights (Optional[ArrayLike]) – 每个特征的权重,定义在使用 colsample 时选择每个特征的概率。所有值必须大于 0,否则抛出 ValueError

  • max_cat_to_onehot (Optional[int]) –

    在 1.6.0 版本中新增。

    注意

    此参数为实验性

    决定 XGBoost 是否应对分类数据使用 one-hot 编码分割的阈值。当类别数量小于阈值时,选择 one-hot 编码,否则类别将被划分到子节点中。此外,需要设置 enable_categorical 才能支持分类特征。有关详细信息,请参阅 Categorical DataParameters for Categorical Feature

  • max_cat_threshold (Optional[int]) –

    在 1.7.0 版本中新增。

    注意

    此参数为实验性

    每次分裂时考虑的最大类别数。仅用于基于分区的分裂,以防止过拟合。此外,需要设置 enable_categorical 才能支持分类特征。有关详细信息,请参阅 Categorical DataParameters for Categorical Feature

  • multi_strategy (Optional[str]) –

    在 2.0.0 版本中新增。

    注意

    此参数正在开发中。

    用于训练多目标模型(包括多目标回归和多类分类)的策略。有关更多信息,请参阅 Multiple Outputs

    • one_output_per_tree: 每个目标一个模型。

    • multi_output_tree: 使用多目标树。

  • eval_metric (Union[str, List[str], Callable, NoneType]) –

    在 1.6.0 版本中新增。

    用于监控训练结果和提前停止的指标。它可以是字符串或字符串列表,作为 XGBoost 中预定义指标的名称(参见 XGBoost Parameters),也可以是 sklearn.metrics 中的指标之一,或者任何看起来像 sklearn.metrics 的用户自定义指标。

    如果同时提供了自定义目标,则自定义指标应实现相应的反向链接函数。

    与 scikit-learn 中常用的 scoring 参数不同,当提供可调用对象时,它被认为是代价函数,XGBoost 默认会在提前停止期间最小化结果。

    关于提前停止的高级用法,例如直接选择最大化而不是最小化,请参阅 xgboost.callback.EarlyStopping

    有关详细信息,请参阅 Custom Objective and Evaluation MetricCustom 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_scorebest_iteration。这些属性用于 predict()apply() 方法,以确定推理期间的最佳树数量。如果用户想要访问完整模型(包括提前停止后构建的树),他们可以在这些推理方法中指定 iteration_range。此外,模型绘图等其他工具也可以使用整个模型。

    • 如果您更喜欢丢弃 best_iteration 之后的树,请考虑使用回调函数 xgboost.callback.EarlyStopping

    • 如果在 eval_set 中有多个项目,则使用最后一个条目进行提前停止。如果在 eval_metric 中有多个指标,则使用最后一个指标进行提前停止。

  • callbacks (Optional[List[xgboost.callback.TrainingCallback]]) –

    在每次迭代结束时应用的 callback 函数列表。可以使用 Callback API 中预定义的回调。

    注意

    callback 中的状态在训练期间不会保留,这意味着 callback 对象不能在未经重新初始化或深拷贝的情况下重复用于多个训练会话。

    for params in parameters_grid:
        # be sure to (re)initialize the callbacks before each run
        callbacks = [xgb.callback.LearningRateScheduler(custom_rates)]
        reg = xgboost.XGBRegressor(**params, callbacks=callbacks)
        reg.fit(X, y)
    

  • kwargs (Optional[Any]) –

    XGBoost Booster 对象的关键字参数。参数的完整文档可以在 这里 找到。尝试通过构造函数参数和 **kwargs 字典同时设置参数将导致 TypeError。

    注意

    **kwargs 不受 scikit-learn 支持

    **kwargs 不受 scikit-learn 支持。我们不保证通过此参数传递的参数能与 scikit-learn 正确交互。

    注意

    自定义目标函数

    可以为 objective 参数提供自定义目标函数。在这种情况下,它应该具有签名 objective(y_true, y_pred) -> [grad, hess]objective(y_true, y_pred, *, sample_weight) -> [grad, hess]

    y_true: array_like of shape [n_samples]

    目标值

    y_pred: array_like of shape [n_samples]

    预测值

    sample_weight

    可选的样本权重。

    grad: array_like of shape [n_samples]

    每个样本点的梯度值。

    hess: array_like of shape [n_samples]

    每个样本点的二阶导数值

    请注意,如果自定义目标为 Hessian 产生负值,这些值将被裁剪。如果目标是非凸的,也可以考虑使用期望的 Hessian(Fisher 信息)。

apply(X, iteration_range=None)

返回每个样本的每棵树预测到的叶子。如果模型通过提前停止进行训练,则自动使用 best_iteration

参数:
返回:

X_leaves – 对于 X 中的每个数据点 x 和每棵树,返回 x 最终到达的叶子索引。叶子的编号在 [0; 2**(self.max_depth+1)) 范围内,编号可能存在间隔。

返回类型:

array_like, shape=[n_samples, n_trees]

property best_iteration: int

提前停止获得的最佳迭代次数。此属性基于 0,例如,如果最佳迭代是第一轮,则 best_iteration 为 0。

property best_score: float

提前停止获得的最佳得分。

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) 的数组

property feature_names_in_: ndarray

fit() 期间见到的特征名称。仅当 X 的特征名称都是字符串时定义。

fit(X, y, *, sample_weight=None, base_margin=None, eval_set=None, verbose=True, xgb_model=None, sample_weight_eval_set=None, base_margin_eval_set=None, feature_weights=None)

拟合梯度提升模型。

请注意,多次调用 fit() 将导致模型对象从头开始重新拟合。要从上一个检查点继续训练,请显式传递 xgb_model 参数。

参数:
  • X (Any) –

    输入特征矩阵。有关支持的类型列表,请参见 Supported data structures for various XGBoost functions

    tree_method 设置为 hist 时,内部将使用 QuantileDMatrix 而不是 DMatrix 以节省内存。但是,当输入数据设备与算法不匹配时,这会影响性能。例如,如果输入是 CPU 上的 numpy 数组但使用 cuda 进行训练,则数据首先在 CPU 上处理,然后传输到 GPU。

  • y (Any) – 标签

  • sample_weight (Any | None) – 实例权重

  • base_margin (Any | None) – 每个实例的全局偏差。有关详细信息,请参阅截距

  • eval_set (Sequence[Tuple[Any, Any]] | None) – 用作验证集 (X, y) 元组对的列表,将计算这些验证集的指标。验证指标将帮助我们跟踪模型的性能。

  • verbose (bool | int | None) – 如果 verbose 为 True 且使用了评估集,则在每个提升阶段将验证集上衡量的评估指标打印到 stdout。如果 verbose 是一个整数,则在每 verbose 个提升阶段打印评估指标。使用 early_stopping_rounds 找到的最后一个提升阶段/提升阶段也会被打印。

  • xgb_model (Booster | XGBModel | str | None) – 要加载的文件名或 ‘Booster’ 实例 XGBoost 模型,可在训练前加载(允许继续训练)。

  • sample_weight_eval_set (Sequence[Any] | None) – 形式为 [L_1, L_2, …, L_n] 的列表,其中每个 L_i 是一个类数组对象,存储第 i 个验证集的实例权重。

  • base_margin_eval_set (Sequence[Any] | None) – 形式为 [M_1, M_2, …, M_n] 的列表,其中每个 M_i 是一个类数组对象,存储第 i 个验证集的基准边距 (base margin)。

  • feature_weights (Any | None) –

    自 3.0.0 版本起已弃用。

    请改用 __init__()set_params() 中的 feature_weights

返回类型:

XGBModel

get_booster()

获取此模型底层的 xgboost Booster。

如果在 fit 方法未被调用时,这将引发异常。

返回:

booster

返回类型:

底层模型的 xgboost Booster 实例

get_metadata_routing()

获取此对象的元数据路由。

请查阅用户指南,了解路由机制的工作原理。

返回:

routing – 一个MetadataRequest,封装了路由信息。

返回类型:

MetadataRequest

get_num_boosting_rounds()

获取 xgboost 提升轮次 (boosting rounds) 的数量。

返回类型:

int

get_params(deep=True)

获取参数。

参数:

deep (bool)

返回类型:

Dict[str, Any]

get_xgb_params()

获取 xgboost 特定的参数。

返回类型:

Dict[str, Any]

property intercept_: ndarray

截距(偏差)属性

对于基于树的模型,返回的值是 base_score

返回:

intercept_

返回类型:

形状为 (1,)[n_classes] 的数组

load_model(fname)

从文件或 bytearray 加载模型。

模型以 XGBoost 内部格式保存,该格式在各种 XGBoost 接口中通用。Python Booster 对象的辅助属性(例如 feature_names)仅在使用 JSON 或 UBJSON(默认)格式时保存。此外,不属于模型的参数(如指标、max_depth 等)不会保存,有关更多信息,请参阅 Model IO

model.save_model("model.json")
model.load_model("model.json")

# or
model.save_model("model.ubj")
model.load_model("model.ubj")

# or
buf = model.save_raw()
model.load_model(buf)
参数:

fname (PathLike | bytearray | str) – 输入文件名或内存缓冲区(另请参阅 save_raw)

返回类型:

property n_features_in_: int

fit() 期间看到的特征数量。

predict(X, *, output_margin=False, validate_features=True, base_margin=None, iteration_range=None)

使用 X 进行预测。如果模型使用早停训练,则自动使用 best_iteration。估计器默认使用 inplace_predict,如果数据与估计器之间的设备不匹配,则回退到使用 DMatrix

注意

此函数仅对 gbtreedart 线程安全。

参数:
  • X (Any) – 用于预测的数据。有关支持的类型列表,请参阅各种 XGBoost 函数支持的数据结构

  • output_margin (bool) – 是否输出原始未转换的 margin 值。

  • validate_features (bool) – 当此参数设置为 True 时,验证 Booster 和数据的 feature_names 是否完全一致。否则,假设 feature_names 是相同的。

  • base_margin (Any | None) – 每个实例的全局偏差。有关详细信息,请参阅截距

  • iteration_range (Tuple[int | integer, int | integer] | None) –

    指定预测中使用哪一层树。例如,如果随机森林训练了 100 轮。指定 iteration_range=(10, 20),则在此预测中仅使用在 [10, 20)(左闭右开区间)轮次期间构建的森林。

    在 1.4.0 版本中新增。

返回类型:

prediction

save_model(fname)

将模型保存到文件。

模型以 XGBoost 内部格式保存,该格式在各种 XGBoost 接口中通用。Python Booster 对象的辅助属性(例如 feature_names)仅在使用 JSON 或 UBJSON(默认)格式时保存。此外,不属于模型的参数(如指标、max_depth 等)不会保存,有关更多信息,请参阅 Model IO

model.save_model("model.json")
# or
model.save_model("model.ubj")
参数:

fname (str | PathLike) – 输出文件名

返回类型:

score(X, y, sample_weight=None)

返回预测的决定系数 (coefficient of determination)。

决定系数 \(R^2\) 定义为 \((1 - \frac{u}{v})\),其中 \(u\) 是残差平方和 ((y_true - y_pred)** 2).sum()\(v\) 是总平方和 ((y_true - y_true.mean()) ** 2).sum()。最佳分数是 1.0,它也可以是负数(因为模型可能任意差)。忽略输入特征,总是预测 y 的期望值的常数模型将获得 0.0 的 \(R^2\) 分数。

参数:
  • X (array-like of shape (n_samples, n_features)) – 测试样本。对于某些估计器,这可能是预计算的核矩阵,或者形状为 (n_samples, n_samples_fitted) 的通用对象列表,其中 n_samples_fitted 是估计器拟合中使用的样本数量。

  • y (array-like of shape (n_samples,) or (n_samples, n_outputs)) – X 的真实值。

  • sample_weight (array-like of shape (n_samples,), default=None) – 样本权重。

返回:

scoreself.predict(X) 相对于 y\(R^2\) 值。

返回类型:

float

注意

在回归器上调用 score 时使用的 \(R^2\) 分数从 0.23 版本开始使用 multioutput='uniform_average',以便与 r2_score() 的默认值保持一致。这会影响所有多输出回归器(MultiOutputRegressor 除外)的 score 方法。

set_fit_request(*, base_margin='$UNCHANGED$', base_margin_eval_set='$UNCHANGED$', eval_set='$UNCHANGED$', feature_weights='$UNCHANGED$', sample_weight='$UNCHANGED$', sample_weight_eval_set='$UNCHANGED$', verbose='$UNCHANGED$', xgb_model='$UNCHANGED$')

请求传递给 fit 方法的元数据。

请注意,此方法仅在 enable_metadata_routing=True 时相关(参见 sklearn.set_config())。请参阅用户指南,了解路由机制的工作原理。

每个参数的选项如下:

  • True: 请求元数据,如果提供,则传递给 fit。如果未提供元数据,则忽略该请求。

  • False: 不请求元数据,元估计器不会将其传递给 fit

  • None: 不请求元数据,如果用户提供了元数据,元估计器将引发错误。

  • str: 应使用给定的别名而不是原始名称将元数据传递给元估计器。

默认值 (sklearn.utils.metadata_routing.UNCHANGED) 保留现有请求。这允许您更改某些参数的请求而不更改其他参数。

添加于 1.3 版本。

注意

此方法仅在此估计器用作元估计器的子估计器时相关,例如在 Pipeline 中使用时。否则,它无效。

参数:
  • base_margin (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于 fit 方法中 base_margin 参数的元数据路由。

  • base_margin_eval_set (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于 fit 方法中 base_margin_eval_set 参数的元数据路由。

  • eval_set (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于 fit 方法中 eval_set 参数的元数据路由。

  • feature_weights (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于 fit 方法中 feature_weights 参数的元数据路由。

  • sample_weight (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于 fit 方法中 sample_weight 参数的元数据路由。

  • sample_weight_eval_set (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于 fit 方法中 sample_weight_eval_set 参数的元数据路由。

  • verbose (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于 fit 方法中 verbose 参数的元数据路由。

  • xgb_model (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于 fit 方法中 xgb_model 参数的元数据路由。

  • self (XGBRegressor)自身

返回:

self – 更新后的对象。

返回类型:

object

set_params(**params)

设置此估计器的参数。修改了 sklearn 方法以允许未知关键字参数。这使得在 sklearn 网格搜索中可以使用未定义为成员变量的全部 xgboost 参数范围。

返回类型:

自身

参数:

params (Any)

set_predict_request(*, base_margin='$UNCHANGED$', iteration_range='$UNCHANGED$', output_margin='$UNCHANGED$', validate_features='$UNCHANGED$')

请求传递给 predict 方法的元数据。

请注意,此方法仅在 enable_metadata_routing=True 时相关(参见 sklearn.set_config())。请参阅用户指南,了解路由机制的工作原理。

每个参数的选项如下:

  • True: 请求元数据,如果提供,则传递给 predict。如果未提供元数据,则忽略该请求。

  • False: 不请求元数据,元估计器不会将其传递给 predict

  • None: 不请求元数据,如果用户提供了元数据,元估计器将引发错误。

  • str: 应使用给定的别名而不是原始名称将元数据传递给元估计器。

默认值 (sklearn.utils.metadata_routing.UNCHANGED) 保留现有请求。这允许您更改某些参数的请求而不更改其他参数。

添加于 1.3 版本。

注意

此方法仅在此估计器用作元估计器的子估计器时相关,例如在 Pipeline 中使用时。否则,它无效。

参数:
  • base_margin (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于 predict 方法中 base_margin 参数的元数据路由。

  • iteration_range (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于 predict 方法中 iteration_range 参数的元数据路由。

  • output_margin (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于 predict 方法中 output_margin 参数的元数据路由。

  • validate_features (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于 predict 方法中 validate_features 参数的元数据路由。

  • self (XGBRegressor)自身

返回:

self – 更新后的对象。

返回类型:

object

set_score_request(*, sample_weight='$UNCHANGED$')

请求传递给 score 方法的元数据。

请注意,此方法仅在 enable_metadata_routing=True 时相关(参见 sklearn.set_config())。请参阅用户指南,了解路由机制的工作原理。

每个参数的选项如下:

  • True: 请求元数据,如果提供,则传递给 score。如果未提供元数据,则忽略该请求。

  • False: 不请求元数据,元估计器不会将其传递给 score

  • None: 不请求元数据,如果用户提供了元数据,元估计器将引发错误。

  • str: 应使用给定的别名而不是原始名称将元数据传递给元估计器。

默认值 (sklearn.utils.metadata_routing.UNCHANGED) 保留现有请求。这允许您更改某些参数的请求而不更改其他参数。

添加于 1.3 版本。

注意

此方法仅在此估计器用作元估计器的子估计器时相关,例如在 Pipeline 中使用时。否则,它无效。

参数:
  • sample_weight (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于 score 方法中 sample_weight 参数的元数据路由。

  • self (XGBRegressor)自身

返回:

self – 更新后的对象。

返回类型:

object

class xgboost.XGBClassifier(*, objective='binary:logistic', **kwargs)

Bases: ClassifierMixin, XGBModel

XGBoost 分类器的 scikit-learn API 实现。有关更多信息,请参阅使用 Scikit-Learn 估计器接口

参数:
  • n_estimators (Optional[int]) – 提升轮次 (boosting rounds) 的数量。

  • max_depth (Optional[int]) – 基础学习器的最大树深度。

  • max_leaves (Optional[int]) – 最大叶子数;0 表示无限制。

  • max_bin (Optional[int]) – 如果使用基于直方图的算法,则每个特征的最大 bin 数

  • grow_policy (Optional[str]) –

    树生长策略。

    • depthwise: 倾向于在最靠近根节点的节点处进行分裂,

    • lossguide: 倾向于在损失变化最大的节点处进行分裂。

  • learning_rate (Optional[float]) – 提升学习率(xgb 的“eta”)

  • verbosity (Optional[int]) – 冗余程度。有效值范围为 0(静默)- 3(调试)。

  • objective (Union[str, xgboost.sklearn._SklObjWProto, Callable[[Any, Any], Tuple[numpy.ndarray, numpy.ndarray]], NoneType]) –

    指定要使用的学习任务和相应的学习目标或自定义目标函数。

    对于自定义目标,有关详细信息以及函数签名的末尾注释,请参阅 Custom Objective and Evaluation MetricCustom objective and metric

  • booster (Optional[str]) – 指定使用哪个 booster:gbtreegblineardart

  • 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 步长。

  • subsample (Optional[float]) – 训练实例的子采样比例。

  • sampling_method (Optional[str]) –

    采样方法。仅由 hist 树方法的 GPU 版本使用。

    • uniform: 均匀随机选择训练实例。

    • gradient_based: 在梯度和 Hessian 较大时以更高概率随机选择训练实例。(参见 CatBoost)

      当梯度和 Hessian 值较大时。(参见 CatBoost)

  • colsample_bytree (Optional[float]) – 构建每棵树时列的子采样比例。

  • colsample_bylevel (Optional[float]) – 每层列的子采样比例。

  • colsample_bynode (Optional[float]) – 每次分裂时列的子采样比例。

  • reg_alpha (Optional[float]) – 权重上的 L1 正则化项(xgb 的 alpha)。

  • reg_lambda (Optional[float]) – 权重上的 L2 正则化项(xgb 的 lambda)。

  • scale_pos_weight (Optional[float]) – 正负权重的平衡。

  • base_score (Optional[float]) – 所有实例的初始预测得分,全局偏置。

  • random_state (Union[numpy.random.mtrand.RandomState, numpy.random._generator.Generator, int, NoneType]) –

    随机数种子。

    注意

    使用带有 shotgun 更新器的 gblinear booster 是非确定性的,因为它使用 Hogwild 算法。

  • missing (float) – 数据中表示缺失值的值。默认为 numpy.nan

  • num_parallel_tree (Optional[int]) – 用于提升随机森林。

  • monotone_constraints (Union[Dict[str, int], str, NoneType]) – 变量单调性的约束。有关详细信息,请参阅 tutorial

  • interaction_constraints (Union[str, List[Tuple[str]], NoneType]) – 表示允许交互的交互约束。约束必须以嵌套列表的形式指定,例如 [[0, 1], [2, 3, 4]],其中每个内部列表是一组允许相互交互的特征索引。有关更多信息,请参阅 tutorial

  • importance_type (Optional[str]) –

    feature_importances_ 属性的特征重要性类型

    • 对于树模型,可以是“gain”、“weight”、“cover”、“total_gain”或“total_cover”。

    • 对于线性模型,仅定义了“weight”,它是去除偏差后的归一化系数。

  • device (Optional[str]) –

    在 2.0.0 版本中新增。

    设备序号,可用选项有 cpucudagpu

  • validate_parameters (Optional[bool]) – 对未知参数发出警告。

  • enable_categorical (bool) – 有关详细信息,请参阅 DMatrix 的相同参数。

  • feature_types (Optional[Sequence[str]]) –

    在 1.7.0 版本中新增。

    用于在不构建 dataframe 的情况下指定特征类型。有关详细信息,请参阅 DMatrix

  • feature_weights (Optional[ArrayLike]) – 每个特征的权重,定义在使用 colsample 时选择每个特征的概率。所有值必须大于 0,否则抛出 ValueError

  • max_cat_to_onehot (Optional[int]) –

    在 1.6.0 版本中新增。

    注意

    此参数为实验性

    决定 XGBoost 是否应对分类数据使用 one-hot 编码分割的阈值。当类别数量小于阈值时,选择 one-hot 编码,否则类别将被划分到子节点中。此外,需要设置 enable_categorical 才能支持分类特征。有关详细信息,请参阅 Categorical DataParameters for Categorical Feature

  • max_cat_threshold (Optional[int]) –

    在 1.7.0 版本中新增。

    注意

    此参数为实验性

    每次分裂时考虑的最大类别数。仅用于基于分区的分裂,以防止过拟合。此外,需要设置 enable_categorical 才能支持分类特征。有关详细信息,请参阅 Categorical DataParameters for Categorical Feature

  • multi_strategy (Optional[str]) –

    在 2.0.0 版本中新增。

    注意

    此参数正在开发中。

    用于训练多目标模型(包括多目标回归和多类分类)的策略。有关更多信息,请参阅 Multiple Outputs

    • one_output_per_tree: 每个目标一个模型。

    • multi_output_tree: 使用多目标树。

  • eval_metric (Union[str, List[str], Callable, NoneType]) –

    在 1.6.0 版本中新增。

    用于监控训练结果和提前停止的指标。它可以是字符串或字符串列表,作为 XGBoost 中预定义指标的名称(参见 XGBoost Parameters),也可以是 sklearn.metrics 中的指标之一,或者任何看起来像 sklearn.metrics 的用户自定义指标。

    如果同时提供了自定义目标,则自定义指标应实现相应的反向链接函数。

    与 scikit-learn 中常用的 scoring 参数不同,当提供可调用对象时,它被认为是代价函数,XGBoost 默认会在提前停止期间最小化结果。

    关于提前停止的高级用法,例如直接选择最大化而不是最小化,请参阅 xgboost.callback.EarlyStopping

    有关详细信息,请参阅 Custom Objective and Evaluation MetricCustom 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_scorebest_iteration。这些属性被 predict()apply() 方法用于在推理期间确定最佳树的数量。如果用户想访问完整模型(包括早停后构建的树),可以在这些推理方法中指定 iteration_range。此外,其他工具,如模型绘图,也可以使用整个模型。

    • 如果您更喜欢丢弃 best_iteration 之后的树,请考虑使用回调函数 xgboost.callback.EarlyStopping

    • 如果在 eval_set 中有多个项目,则使用最后一个条目进行提前停止。如果在 eval_metric 中有多个指标,则使用最后一个指标进行提前停止。

  • callbacks (Optional[List[xgboost.callback.TrainingCallback]]) –

    在每次迭代结束时应用的 callback 函数列表。可以使用 Callback API 中预定义的回调。

    注意

    callback 中的状态在训练期间不会保留,这意味着 callback 对象不能在未经重新初始化或深拷贝的情况下重复用于多个训练会话。

    for params in parameters_grid:
        # be sure to (re)initialize the callbacks before each run
        callbacks = [xgb.callback.LearningRateScheduler(custom_rates)]
        reg = xgboost.XGBRegressor(**params, callbacks=callbacks)
        reg.fit(X, y)
    

  • kwargs (Optional[Any]) –

    XGBoost Booster 对象的关键字参数。参数的完整文档可以在 这里 找到。尝试通过构造函数参数和 **kwargs 字典同时设置参数将导致 TypeError。

    注意

    **kwargs 不受 scikit-learn 支持

    **kwargs 不受 scikit-learn 支持。我们不保证通过此参数传递的参数能与 scikit-learn 正确交互。

    注意

    自定义目标函数

    可以为 objective 参数提供自定义目标函数。在这种情况下,它应该具有签名 objective(y_true, y_pred) -> [grad, hess]objective(y_true, y_pred, *, sample_weight) -> [grad, hess]

    y_true: array_like of shape [n_samples]

    目标值

    y_pred: array_like of shape [n_samples]

    预测值

    sample_weight

    可选的样本权重。

    grad: array_like of shape [n_samples]

    每个样本点的梯度值。

    hess: array_like of shape [n_samples]

    每个样本点的二阶导数值

    请注意,如果自定义目标为 Hessian 产生负值,这些值将被裁剪。如果目标是非凸的,也可以考虑使用期望的 Hessian(Fisher 信息)。

apply(X, iteration_range=None)

返回每个样本在每棵树上的预测叶子。如果模型使用早停训练,则自动使用 best_iteration

参数:
返回:

X_leaves – 对于 X 中的每个数据点 x 和每棵树,返回 x 最终到达的叶子索引。叶子的编号在 [0; 2**(self.max_depth+1)) 范围内,编号可能存在间隔。

返回类型:

array_like, shape=[n_samples, n_trees]

property best_iteration: int

提前停止获得的最佳迭代次数。此属性基于 0,例如,如果最佳迭代是第一轮,则 best_iteration 为 0。

property best_score: float

提前停止获得的最佳得分。

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) 的数组

property feature_names_in_: ndarray

fit() 期间看到的特征名称。仅当 X 的特征名称全部是字符串时定义。

fit(X, y, *, sample_weight=None, base_margin=None, eval_set=None, verbose=True, xgb_model=None, sample_weight_eval_set=None, base_margin_eval_set=None, feature_weights=None)

拟合梯度提升分类器。

请注意,多次调用 fit() 将导致模型对象从头开始重新拟合。要从上一个检查点继续训练,请显式传递 xgb_model 参数。

参数:
  • X (Any) –

    输入特征矩阵。有关支持的类型列表,请参见 Supported data structures for various XGBoost functions

    tree_method 设置为 hist 时,内部将使用 QuantileDMatrix 而不是 DMatrix 以节省内存。但是,当输入数据设备与算法不匹配时,这会影响性能。例如,如果输入是 CPU 上的 numpy 数组但使用 cuda 进行训练,则数据首先在 CPU 上处理,然后传输到 GPU。

  • y (Any) – 标签

  • sample_weight (Any | None) – 实例权重

  • base_margin (Any | None) – 每个实例的全局偏差。有关详细信息,请参阅截距

  • eval_set (Sequence[Tuple[Any, Any]] | None) – 用作验证集 (X, y) 元组对的列表,将计算这些验证集的指标。验证指标将帮助我们跟踪模型的性能。

  • verbose (bool | int | None) – 如果 verbose 为 True 且使用了评估集,则在每个提升阶段将验证集上衡量的评估指标打印到 stdout。如果 verbose 是一个整数,则在每 verbose 个提升阶段打印评估指标。使用 early_stopping_rounds 找到的最后一个提升阶段/提升阶段也会被打印。

  • xgb_model (Booster | str | XGBModel | None) – 要加载的文件名或 ‘Booster’ 实例 XGBoost 模型,可在训练前加载(允许继续训练)。

  • sample_weight_eval_set (Sequence[Any] | None) – 形式为 [L_1, L_2, …, L_n] 的列表,其中每个 L_i 是一个类数组对象,存储第 i 个验证集的实例权重。

  • base_margin_eval_set (Sequence[Any] | None) – 形式为 [M_1, M_2, …, M_n] 的列表,其中每个 M_i 是一个类数组对象,存储第 i 个验证集的基准边距 (base margin)。

  • feature_weights (Any | None) –

    自 3.0.0 版本起已弃用。

    请改用 __init__()set_params() 中的 feature_weights

返回类型:

XGBClassifier

get_booster()

获取此模型底层的 xgboost Booster。

如果在 fit 方法未被调用时,这将引发异常。

返回:

booster

返回类型:

底层模型的 xgboost Booster 实例

get_metadata_routing()

获取此对象的元数据路由。

请查阅用户指南,了解路由机制的工作原理。

返回:

routing – 一个MetadataRequest,封装了路由信息。

返回类型:

MetadataRequest

get_num_boosting_rounds()

获取 xgboost 提升轮次 (boosting rounds) 的数量。

返回类型:

int

get_params(deep=True)

获取参数。

参数:

deep (bool)

返回类型:

Dict[str, Any]

get_xgb_params()

获取 xgboost 特定的参数。

返回类型:

Dict[str, Any]

property intercept_: ndarray

截距(偏差)属性

对于基于树的模型,返回的值是 base_score

返回:

intercept_

返回类型:

形状为 (1,)[n_classes] 的数组

load_model(fname)

从文件或 bytearray 加载模型。

模型以 XGBoost 内部格式保存,该格式在各种 XGBoost 接口中通用。Python Booster 对象的辅助属性(例如 feature_names)仅在使用 JSON 或 UBJSON(默认)格式时保存。此外,不属于模型的参数(如指标、max_depth 等)不会保存,有关更多信息,请参阅 Model IO

model.save_model("model.json")
model.load_model("model.json")

# or
model.save_model("model.ubj")
model.load_model("model.ubj")

# or
buf = model.save_raw()
model.load_model(buf)
参数:

fname (PathLike | bytearray | str) – 输入文件名或内存缓冲区(另请参阅 save_raw)

返回类型:

property n_features_in_: int

fit() 期间看到的特征数量。

predict(X, *, output_margin=False, validate_features=True, base_margin=None, iteration_range=None)

使用 X 进行预测。如果模型使用早停训练,则自动使用 best_iteration。估计器默认使用 inplace_predict,如果数据与估计器之间的设备不匹配,则回退到使用 DMatrix

注意

此函数仅对 gbtreedart 线程安全。

参数:
  • X (Any) – 用于预测的数据。有关支持的类型列表,请参阅各种 XGBoost 函数支持的数据结构

  • output_margin (bool) – 是否输出原始未转换的 margin 值。

  • validate_features (bool) – 当此参数设置为 True 时,验证 Booster 和数据的 feature_names 是否完全一致。否则,假设 feature_names 是相同的。

  • base_margin (Any | None) – 每个实例的全局偏差。有关详细信息,请参阅截距

  • iteration_range (Tuple[int | integer, int | integer] | None) –

    指定预测中使用哪一层树。例如,如果随机森林训练了 100 轮。指定 iteration_range=(10, 20),则在此预测中仅使用在 [10, 20)(左闭右开区间)轮次期间构建的森林。

    在 1.4.0 版本中新增。

返回类型:

prediction

predict_proba(X, validate_features=True, base_margin=None, iteration_range=None)

预测每个 X 样本属于给定类别的概率。如果模型使用早停训练,则自动使用 best_iteration。估计器默认使用 inplace_predict,如果数据与估计器之间的设备不匹配,则回退到使用 DMatrix

注意

此函数仅对 gbtreedart 线程安全。

参数:
  • X (Any) – 特征矩阵。有关支持的类型列表,请参阅各种 XGBoost 函数支持的数据结构

  • validate_features (bool) – 当此参数设置为 True 时,验证 Booster 和数据的 feature_names 是否完全一致。否则,假设 feature_names 是相同的。

  • base_margin (Any | None) – 每个实例的全局偏差。有关详细信息,请参阅截距

  • iteration_range (Tuple[int | integer, int | integer] | None) – 指定预测中使用哪一层树。例如,如果随机森林训练了 100 轮。指定 iteration_range=(10, 20),则在此预测中仅使用在 [10, 20)(左闭右开区间)轮次期间构建的森林。

返回:

一个 numpy 数组,形状类似数组,形状为 (n_samples, n_classes),包含每个数据样本属于给定类别的概率。

返回类型:

prediction

save_model(fname)

将模型保存到文件。

模型以 XGBoost 内部格式保存,该格式在各种 XGBoost 接口中通用。Python Booster 对象的辅助属性(例如 feature_names)仅在使用 JSON 或 UBJSON(默认)格式时保存。此外,不属于模型的参数(如指标、max_depth 等)不会保存,有关更多信息,请参阅 Model IO

model.save_model("model.json")
# or
model.save_model("model.ubj")
参数:

fname (str | PathLike) – 输出文件名

返回类型:

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) – 样本权重。

返回:

scoreself.predict(X) 相对于 y 的平均准确率。

返回类型:

float

set_fit_request(*, base_margin='$UNCHANGED$', base_margin_eval_set='$UNCHANGED$', eval_set='$UNCHANGED$', feature_weights='$UNCHANGED$', sample_weight='$UNCHANGED$', sample_weight_eval_set='$UNCHANGED$', verbose='$UNCHANGED$', xgb_model='$UNCHANGED$')

请求传递给 fit 方法的元数据。

请注意,此方法仅在 enable_metadata_routing=True 时相关(参见 sklearn.set_config())。请参阅用户指南,了解路由机制的工作原理。

每个参数的选项如下:

  • True: 请求元数据,如果提供,则传递给 fit。如果未提供元数据,则忽略该请求。

  • False: 不请求元数据,元估计器不会将其传递给 fit

  • None: 不请求元数据,如果用户提供了元数据,元估计器将引发错误。

  • str: 应使用给定的别名而不是原始名称将元数据传递给元估计器。

默认值 (sklearn.utils.metadata_routing.UNCHANGED) 保留现有请求。这允许您更改某些参数的请求而不更改其他参数。

添加于 1.3 版本。

注意

此方法仅在此估计器用作元估计器的子估计器时相关,例如在 Pipeline 中使用时。否则,它无效。

参数:
  • base_margin (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于 fit 方法中 base_margin 参数的元数据路由。

  • base_margin_eval_set (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于 fit 方法中 base_margin_eval_set 参数的元数据路由。

  • eval_set (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于 fit 方法中 eval_set 参数的元数据路由。

  • feature_weights (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于 fit 方法中 feature_weights 参数的元数据路由。

  • sample_weight (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于 fit 方法中 sample_weight 参数的元数据路由。

  • sample_weight_eval_set (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于 fit 方法中 sample_weight_eval_set 参数的元数据路由。

  • verbose (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于 fit 方法中 verbose 参数的元数据路由。

  • xgb_model (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于 fit 方法中 xgb_model 参数的元数据路由。

  • self (XGBClassifier)自身

返回:

self – 更新后的对象。

返回类型:

object

set_params(**params)

设置此估计器的参数。修改了 sklearn 方法以允许未知关键字参数。这使得在 sklearn 网格搜索中可以使用未定义为成员变量的全部 xgboost 参数范围。

返回类型:

自身

参数:

params (Any)

set_predict_proba_request(*, base_margin='$UNCHANGED$', iteration_range='$UNCHANGED$', validate_features='$UNCHANGED$')

请求传递给 predict_proba 方法的元数据。

请注意,此方法仅在 enable_metadata_routing=True 时相关(参见 sklearn.set_config())。请参阅用户指南,了解路由机制的工作原理。

每个参数的选项如下:

  • True: 请求元数据,如果提供,则传递给 predict_proba。如果未提供元数据,则忽略该请求。

  • False: 不请求元数据,元估计器不会将其传递给 predict_proba

  • None: 不请求元数据,如果用户提供了元数据,元估计器将引发错误。

  • str: 应使用给定的别名而不是原始名称将元数据传递给元估计器。

默认值 (sklearn.utils.metadata_routing.UNCHANGED) 保留现有请求。这允许您更改某些参数的请求而不更改其他参数。

添加于 1.3 版本。

注意

此方法仅在此估计器用作元估计器的子估计器时相关,例如在 Pipeline 中使用时。否则,它无效。

参数:
  • base_margin (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于 predict_proba 方法中 base_margin 参数的元数据路由。

  • iteration_range (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于 predict_proba 方法中 iteration_range 参数的元数据路由。

  • validate_features (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于 predict_proba 方法中 validate_features 参数的元数据路由。

  • self (XGBClassifier)自身

返回:

self – 更新后的对象。

返回类型:

object

set_predict_request(*, base_margin='$UNCHANGED$', iteration_range='$UNCHANGED$', output_margin='$UNCHANGED$', validate_features='$UNCHANGED$')

请求传递给 predict 方法的元数据。

请注意,此方法仅在 enable_metadata_routing=True 时相关(参见 sklearn.set_config())。请参阅用户指南,了解路由机制的工作原理。

每个参数的选项如下:

  • True: 请求元数据,如果提供,则传递给 predict。如果未提供元数据,则忽略该请求。

  • False: 不请求元数据,元估计器不会将其传递给 predict

  • None: 不请求元数据,如果用户提供了元数据,元估计器将引发错误。

  • str: 应使用给定的别名而不是原始名称将元数据传递给元估计器。

默认值 (sklearn.utils.metadata_routing.UNCHANGED) 保留现有请求。这允许您更改某些参数的请求而不更改其他参数。

添加于 1.3 版本。

注意

此方法仅在此估计器用作元估计器的子估计器时相关,例如在 Pipeline 中使用时。否则,它无效。

参数:
  • base_margin (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于 predict 方法中 base_margin 参数的元数据路由。

  • iteration_range (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于 predict 方法中 iteration_range 参数的元数据路由。

  • output_margin (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于 predict 方法中 output_margin 参数的元数据路由。

  • validate_features (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于 predict 方法中 validate_features 参数的元数据路由。

  • self (XGBClassifier)自身

返回:

self – 更新后的对象。

返回类型:

object

set_score_request(*, sample_weight='$UNCHANGED$')

请求传递给 score 方法的元数据。

请注意,此方法仅在 enable_metadata_routing=True 时相关(参见 sklearn.set_config())。请参阅用户指南,了解路由机制的工作原理。

每个参数的选项如下:

  • True: 请求元数据,如果提供,则传递给 score。如果未提供元数据,则忽略该请求。

  • False: 不请求元数据,元估计器不会将其传递给 score

  • None: 不请求元数据,如果用户提供了元数据,元估计器将引发错误。

  • str: 应使用给定的别名而不是原始名称将元数据传递给元估计器。

默认值 (sklearn.utils.metadata_routing.UNCHANGED) 保留现有请求。这允许您更改某些参数的请求而不更改其他参数。

添加于 1.3 版本。

注意

此方法仅在此估计器用作元估计器的子估计器时相关,例如在 Pipeline 中使用时。否则,它无效。

参数:
  • sample_weight (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于 score 方法中 sample_weight 参数的元数据路由。

  • self (XGBClassifier)自身

返回:

self – 更新后的对象。

返回类型:

object

class xgboost.XGBRanker(*, objective='rank:ndcg', **kwargs)

Bases: XGBRankerMixIn, XGBModel

XGBoost 排序的 Scikit-Learn API 实现。

有关介绍,请参阅排序学习

有关更多信息,请参阅使用 Scikit-Learn 估计器接口

参数:
  • n_estimators (Optional[int]) – 梯度提升树的数量。等同于提升轮次。

  • max_depth (Optional[int]) – 基础学习器的最大树深度。

  • max_leaves (Optional[int]) – 最大叶子数;0 表示无限制。

  • max_bin (Optional[int]) – 如果使用基于直方图的算法,则每个特征的最大 bin 数

  • grow_policy (Optional[str]) –

    树生长策略。

    • depthwise: 倾向于在最靠近根节点的节点处进行分裂,

    • lossguide: 倾向于在损失变化最大的节点处进行分裂。

  • learning_rate (Optional[float]) – 提升学习率(xgb 的“eta”)

  • verbosity (Optional[int]) – 冗余程度。有效值范围为 0(静默)- 3(调试)。

  • objective (Union[str, xgboost.sklearn._SklObjWProto, Callable[[Any, Any], Tuple[numpy.ndarray, numpy.ndarray]], NoneType]) –

    指定要使用的学习任务和相应的学习目标或自定义目标函数。

    对于自定义目标,有关详细信息以及函数签名的末尾注释,请参阅 Custom Objective and Evaluation MetricCustom objective and metric

  • booster (Optional[str]) – 指定使用哪个 booster:gbtreegblineardart

  • 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 步长。

  • subsample (Optional[float]) – 训练实例的子采样比例。

  • sampling_method (Optional[str]) –

    采样方法。仅由 hist 树方法的 GPU 版本使用。

    • uniform: 均匀随机选择训练实例。

    • gradient_based: 在梯度和 Hessian 较大时以更高概率随机选择训练实例。(参见 CatBoost)

      当梯度和 Hessian 值较大时。(参见 CatBoost)

  • colsample_bytree (Optional[float]) – 构建每棵树时列的子采样比例。

  • colsample_bylevel (Optional[float]) – 每层列的子采样比例。

  • colsample_bynode (Optional[float]) – 每次分裂时列的子采样比例。

  • reg_alpha (Optional[float]) – 权重上的 L1 正则化项(xgb 的 alpha)。

  • reg_lambda (Optional[float]) – 权重上的 L2 正则化项(xgb 的 lambda)。

  • scale_pos_weight (Optional[float]) – 正负权重的平衡。

  • base_score (Optional[float]) – 所有实例的初始预测得分,全局偏置。

  • random_state (Union[numpy.random.mtrand.RandomState, numpy.random._generator.Generator, int, NoneType]) –

    随机数种子。

    注意

    使用带有 shotgun 更新器的 gblinear booster 是非确定性的,因为它使用 Hogwild 算法。

  • missing (float) – 数据中表示缺失值的值。默认为 numpy.nan

  • num_parallel_tree (Optional[int]) – 用于提升随机森林。

  • monotone_constraints (Union[Dict[str, int], str, NoneType]) – 变量单调性的约束。有关详细信息,请参阅 tutorial

  • interaction_constraints (Union[str, List[Tuple[str]], NoneType]) – 表示允许交互的交互约束。约束必须以嵌套列表的形式指定,例如 [[0, 1], [2, 3, 4]],其中每个内部列表是一组允许相互交互的特征索引。有关更多信息,请参阅 tutorial

  • importance_type (Optional[str]) –

    feature_importances_ 属性的特征重要性类型

    • 对于树模型,可以是“gain”、“weight”、“cover”、“total_gain”或“total_cover”。

    • 对于线性模型,仅定义了“weight”,它是去除偏差后的归一化系数。

  • device (Optional[str]) –

    在 2.0.0 版本中新增。

    设备序号,可用选项有 cpucudagpu

  • validate_parameters (Optional[bool]) – 对未知参数发出警告。

  • enable_categorical (bool) – 有关详细信息,请参阅 DMatrix 的相同参数。

  • feature_types (Optional[Sequence[str]]) –

    在 1.7.0 版本中新增。

    用于在不构建 dataframe 的情况下指定特征类型。有关详细信息,请参阅 DMatrix

  • feature_weights (Optional[ArrayLike]) – 每个特征的权重,定义在使用 colsample 时选择每个特征的概率。所有值必须大于 0,否则抛出 ValueError

  • max_cat_to_onehot (Optional[int]) –

    在 1.6.0 版本中新增。

    注意

    此参数为实验性

    决定 XGBoost 是否应对分类数据使用 one-hot 编码分割的阈值。当类别数量小于阈值时,选择 one-hot 编码,否则类别将被划分到子节点中。此外,需要设置 enable_categorical 才能支持分类特征。有关详细信息,请参阅 Categorical DataParameters for Categorical Feature

  • max_cat_threshold (Optional[int]) –

    在 1.7.0 版本中新增。

    注意

    此参数为实验性

    每次分裂时考虑的最大类别数。仅用于基于分区的分裂,以防止过拟合。此外,需要设置 enable_categorical 才能支持分类特征。有关详细信息,请参阅 Categorical DataParameters for Categorical Feature

  • multi_strategy (Optional[str]) –

    在 2.0.0 版本中新增。

    注意

    此参数正在开发中。

    用于训练多目标模型(包括多目标回归和多类分类)的策略。有关更多信息,请参阅 Multiple Outputs

    • one_output_per_tree: 每个目标一个模型。

    • multi_output_tree: 使用多目标树。

  • eval_metric (Union[str, List[str], Callable, NoneType]) –

    在 1.6.0 版本中新增。

    用于监控训练结果和提前停止的指标。它可以是字符串或字符串列表,作为 XGBoost 中预定义指标的名称(参见 XGBoost Parameters),也可以是 sklearn.metrics 中的指标之一,或者任何看起来像 sklearn.metrics 的用户自定义指标。

    如果同时提供了自定义目标,则自定义指标应实现相应的反向链接函数。

    与 scikit-learn 中常用的 scoring 参数不同,当提供可调用对象时,它被认为是代价函数,XGBoost 默认会在提前停止期间最小化结果。

    关于提前停止的高级用法,例如直接选择最大化而不是最小化,请参阅 xgboost.callback.EarlyStopping

    有关详细信息,请参阅 Custom Objective and Evaluation MetricCustom 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_scorebest_iteration。这些属性被 predict()apply() 方法用于在推理期间确定最佳树的数量。如果用户想访问完整模型(包括早停后构建的树),可以在这些推理方法中指定 iteration_range。此外,其他工具,如模型绘图,也可以使用整个模型。

    • 如果您更喜欢丢弃 best_iteration 之后的树,请考虑使用回调函数 xgboost.callback.EarlyStopping

    • 如果在 eval_set 中有多个项目,则使用最后一个条目进行提前停止。如果在 eval_metric 中有多个指标,则使用最后一个指标进行提前停止。

  • callbacks (Optional[List[xgboost.callback.TrainingCallback]]) –

    在每次迭代结束时应用的 callback 函数列表。可以使用 Callback API 中预定义的回调。

    注意

    callback 中的状态在训练期间不会保留,这意味着 callback 对象不能在未经重新初始化或深拷贝的情况下重复用于多个训练会话。

    for params in parameters_grid:
        # be sure to (re)initialize the callbacks before each run
        callbacks = [xgb.callback.LearningRateScheduler(custom_rates)]
        reg = xgboost.XGBRegressor(**params, callbacks=callbacks)
        reg.fit(X, y)
    

  • kwargs (Optional[Any]) –

    XGBoost Booster 对象的关键字参数。参数的完整文档可以在 这里 找到。尝试通过构造函数参数和 **kwargs 字典同时设置参数将导致 TypeError。

    注意

    **kwargs 不受 scikit-learn 支持

    **kwargs 不受 scikit-learn 支持。我们不保证通过此参数传递的参数能与 scikit-learn 正确交互。

    注意

    XGBRanker 当前不支持自定义目标函数。

    注意

    查询组信息仅在排序训练中需要,预测时不需要。可以在一次调用 predict() 中预测多个组。

    使用 group 参数拟合模型时,您的数据需要先按查询组排序。group 是一个数组,包含每个查询组的大小。

    类似地,使用 qid 参数拟合模型时,数据应按查询索引排序,qid 是一个数组,包含每个训练样本的查询索引。

    例如,如果您的原始数据如下所示:

    qid

    label

    features

    1

    0

    x_1

    1

    1

    x_2

    1

    0

    x_3

    2

    0

    x_4

    2

    1

    x_5

    2

    1

    x_6

    2

    1

    x_7

    则可以调用 fit() 方法,其中 group 数组为 [3, 4],或者 qid[1, 1, 1, 2, 2, 2, 2],即 qid 列。此外,qid 可以是输入 X 的特殊列,而不是单独的参数,更多信息请参阅 fit()

apply(X, iteration_range=None)

返回每个样本在每棵树上的预测叶子。如果模型使用早停训练,则自动使用 best_iteration

参数:
返回:

X_leaves – 对于 X 中的每个数据点 x 和每棵树,返回 x 最终到达的叶子索引。叶子的编号在 [0; 2**(self.max_depth+1)) 范围内,编号可能存在间隔。

返回类型:

array_like, shape=[n_samples, n_trees]

property best_iteration: int

提前停止获得的最佳迭代次数。此属性基于 0,例如,如果最佳迭代是第一轮,则 best_iteration 为 0。

property best_score: float

提前停止获得的最佳得分。

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) 的数组

property feature_names_in_: ndarray

fit() 期间看到的特征名称。仅当 X 的特征名称全部是字符串时定义。

fit(X, y, *, group=None, qid=None, sample_weight=None, base_margin=None, eval_set=None, eval_group=None, eval_qid=None, verbose=False, xgb_model=None, sample_weight_eval_set=None, base_margin_eval_set=None, feature_weights=None)

拟合梯度提升排序器

请注意,多次调用 fit() 将导致模型对象从头开始重新拟合。要从上一个检查点继续训练,请显式传递 xgb_model 参数。

参数:
  • X (Any) –

    特征矩阵。有关支持的类型列表,请参阅各种 XGBoost 函数支持的数据结构

    当这是一个 pandas.DataFramecudf.DataFrame 时,它可能包含一个名为 qid 的特殊列,用于指定查询索引。使用特殊列与使用 qid 参数相同,只是前者与 sklearn 工具函数(如 sklearn.model_selection.cross_validation())兼容。相同的约定也适用于 XGBRanker.score()XGBRanker.predict()

    qid

    feat_0

    feat_1

    0

    \(x_{00}\)

    \(x_{01}\)

    1

    \(x_{10}\)

    \(x_{11}\)

    1

    \(x_{20}\)

    \(x_{21}\)

    tree_method 设置为 hist 时,内部将使用 QuantileDMatrix 而不是 DMatrix 以节省内存。但是,当输入数据设备与算法不匹配时,这会影响性能。例如,如果输入是 CPU 上的 numpy 数组但使用 cuda 进行训练,则数据首先在 CPU 上处理,然后传输到 GPU。

  • y (Any) – 标签

  • group (Any | None) – 训练数据中每个查询组的大小。其元素数量应与训练数据中的查询组数量相同。如果设置为 None,则用户必须提供 qid。

  • qid (Any | None) – 每个训练样本的查询 ID。大小应为 n_samples。如果设置为 None,则用户必须提供 group 或 X 中的特殊列。

  • sample_weight (Any | None) –

    查询组权重

    注意

    排序任务中权重是按组分配的

    在排序任务中,每个查询组/ID(而不是每个数据点)分配一个权重。这是因为我们只关注每个组内数据点的相对排序,因此为单个数据点分配权重没有意义。

  • base_margin (Any | None) – 每个实例的全局偏差。有关详细信息,请参阅截距

  • eval_set (Sequence[Tuple[Any, Any]] | None) – 用作验证集 (X, y) 元组对的列表,将计算这些验证集的指标。验证指标将帮助我们跟踪模型的性能。

  • eval_group (Sequence[Any] | None) – 一个列表,其中 eval_group[i] 是包含 eval_set 中第 i 对数据中所有查询组大小的列表。

  • eval_qid (Sequence[Any] | None) – 一个列表,其中 eval_qid[i] 是包含 eval_set 中第 i 对数据的查询 ID 数组。X 中的特殊列约定也适用于验证数据集。

  • verbose (bool | int | None) – 如果 verbose 为 True 且使用了评估集,则在每个提升阶段将验证集上衡量的评估指标打印到 stdout。如果 verbose 是一个整数,则在每 verbose 个提升阶段打印评估指标。使用 early_stopping_rounds 找到的最后一个提升阶段/提升阶段也会被打印。

  • xgb_model (Booster | str | XGBModel | None) – 要加载的文件名或 ‘Booster’ 实例 XGBoost 模型,可在训练前加载(允许继续训练)。

  • sample_weight_eval_set (Sequence[Any] | None) –

    形式为 [L_1, L_2, …, L_n] 的列表,其中每个 L_i 是第 i 个验证集上的组权重列表。

    注意

    排序任务中权重是按组分配的

    在排序任务中,每个查询组(而不是每个数据点)分配一个权重。这是因为我们只关注每个组内数据点的相对排序,因此为单个数据点分配权重没有意义。

  • base_margin_eval_set (Sequence[Any] | None) – 形式为 [M_1, M_2, …, M_n] 的列表,其中每个 M_i 是一个类数组对象,存储第 i 个验证集的基准边距 (base margin)。

  • feature_weights (Any | None) – 每个特征的权重,定义了使用 colsample 时每个特征被选中的概率。所有值必须大于 0,否则会引发 ValueError

返回类型:

XGBRanker

get_booster()

获取此模型底层的 xgboost Booster。

如果在 fit 方法未被调用时,这将引发异常。

返回:

booster

返回类型:

底层模型的 xgboost Booster 实例

get_metadata_routing()

获取此对象的元数据路由。

请查阅用户指南,了解路由机制的工作原理。

返回:

routing – 一个MetadataRequest,封装了路由信息。

返回类型:

MetadataRequest

get_num_boosting_rounds()

获取 xgboost 提升轮次 (boosting rounds) 的数量。

返回类型:

int

get_params(deep=True)

获取参数。

参数:

deep (bool)

返回类型:

Dict[str, Any]

get_xgb_params()

获取 xgboost 特定的参数。

返回类型:

Dict[str, Any]

property intercept_: ndarray

截距(偏差)属性

对于基于树的模型,返回的值是 base_score

返回:

intercept_

返回类型:

形状为 (1,)[n_classes] 的数组

load_model(fname)

从文件或 bytearray 加载模型。

模型以 XGBoost 内部格式保存,该格式在各种 XGBoost 接口中通用。Python Booster 对象的辅助属性(例如 feature_names)仅在使用 JSON 或 UBJSON(默认)格式时保存。此外,不属于模型的参数(如指标、max_depth 等)不会保存,有关更多信息,请参阅 Model IO

model.save_model("model.json")
model.load_model("model.json")

# or
model.save_model("model.ubj")
model.load_model("model.ubj")

# or
buf = model.save_raw()
model.load_model(buf)
参数:

fname (PathLike | bytearray | str) – 输入文件名或内存缓冲区(另请参阅 save_raw)

返回类型:

property n_features_in_: int

fit() 期间看到的特征数量。

predict(X, *, output_margin=False, validate_features=True, base_margin=None, iteration_range=None)

使用 X 进行预测。如果模型使用早停训练,则自动使用 best_iteration。估计器默认使用 inplace_predict,如果数据与估计器之间的设备不匹配,则回退到使用 DMatrix

注意

此函数仅对 gbtreedart 线程安全。

参数:
  • X (Any) – 用于预测的数据。有关支持的类型列表,请参阅各种 XGBoost 函数支持的数据结构

  • output_margin (bool) – 是否输出原始未转换的 margin 值。

  • validate_features (bool) – 当此参数设置为 True 时,验证 Booster 和数据的 feature_names 是否完全一致。否则,假设 feature_names 是相同的。

  • base_margin (Any | None) – 每个实例的全局偏差。有关详细信息,请参阅截距

  • iteration_range (Tuple[int | integer, int | integer] | None) –

    指定预测中使用哪一层树。例如,如果随机森林训练了 100 轮。指定 iteration_range=(10, 20),则在此预测中仅使用在 [10, 20)(左闭右开区间)轮次期间构建的森林。

    在 1.4.0 版本中新增。

返回类型:

prediction

save_model(fname)

将模型保存到文件。

模型以 XGBoost 内部格式保存,该格式在各种 XGBoost 接口中通用。Python Booster 对象的辅助属性(例如 feature_names)仅在使用 JSON 或 UBJSON(默认)格式时保存。此外,不属于模型的参数(如指标、max_depth 等)不会保存,有关更多信息,请参阅 Model IO

model.save_model("model.json")
# or
model.save_model("model.ubj")
参数:

fname (str | PathLike) – 输出文件名

返回类型:

score(X, y)

使用最后一个评估指标评估数据的分数。如果模型使用早停训练,则自动使用 best_iteration

参数:
  • X (Union[pd.DataFrame, cudf.DataFrame]) – 特征矩阵。一个带有特殊 qid 列的 DataFrame。

  • y (Any) – 标签

返回:

排序器的第一个评估指标结果。

返回类型:

score

set_fit_request(*, base_margin='$UNCHANGED$', base_margin_eval_set='$UNCHANGED$', eval_group='$UNCHANGED$', eval_qid='$UNCHANGED$', eval_set='$UNCHANGED$', feature_weights='$UNCHANGED$', group='$UNCHANGED$', qid='$UNCHANGED$', sample_weight='$UNCHANGED$', sample_weight_eval_set='$UNCHANGED$', verbose='$UNCHANGED$', xgb_model='$UNCHANGED$')

请求传递给 fit 方法的元数据。

请注意,此方法仅在 enable_metadata_routing=True 时相关(参见 sklearn.set_config())。请参阅用户指南,了解路由机制的工作原理。

每个参数的选项如下:

  • True: 请求元数据,如果提供,则传递给 fit。如果未提供元数据,则忽略该请求。

  • False: 不请求元数据,元估计器不会将其传递给 fit

  • None: 不请求元数据,如果用户提供了元数据,元估计器将引发错误。

  • str: 应使用给定的别名而不是原始名称将元数据传递给元估计器。

默认值 (sklearn.utils.metadata_routing.UNCHANGED) 保留现有请求。这允许您更改某些参数的请求而不更改其他参数。

添加于 1.3 版本。

注意

此方法仅在此估计器用作元估计器的子估计器时相关,例如在 Pipeline 中使用时。否则,它无效。

参数:
  • base_margin (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于 fit 方法中 base_margin 参数的元数据路由。

  • base_margin_eval_set (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于 fit 方法中 base_margin_eval_set 参数的元数据路由。

  • eval_group (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于 fit 方法中 eval_group 参数的元数据路由。

  • eval_qid (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于 fit 方法中 eval_qid 参数的元数据路由。

  • eval_set (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于 fit 方法中 eval_set 参数的元数据路由。

  • feature_weights (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于 fit 方法中 feature_weights 参数的元数据路由。

  • group (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于 fit 方法中 group 参数的元数据路由。

  • qid (字符串, , , or , 默认值=sklearn.utils.metadata_routing.UNCHANGED) – 用于fit方法中qid参数的元数据路由。

  • sample_weight (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于 fit 方法中 sample_weight 参数的元数据路由。

  • sample_weight_eval_set (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于 fit 方法中 sample_weight_eval_set 参数的元数据路由。

  • verbose (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于 fit 方法中 verbose 参数的元数据路由。

  • xgb_model (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于 fit 方法中 xgb_model 参数的元数据路由。

  • self (XGBRanker)

返回:

self – 更新后的对象。

返回类型:

object

set_params(**params)

设置此估计器的参数。修改了 sklearn 方法以允许未知关键字参数。这使得在 sklearn 网格搜索中可以使用未定义为成员变量的全部 xgboost 参数范围。

返回类型:

自身

参数:

params (Any)

set_predict_request(*, base_margin='$UNCHANGED$', iteration_range='$UNCHANGED$', output_margin='$UNCHANGED$', validate_features='$UNCHANGED$')

请求传递给 predict 方法的元数据。

请注意,此方法仅在 enable_metadata_routing=True 时相关(参见 sklearn.set_config())。请参阅用户指南,了解路由机制的工作原理。

每个参数的选项如下:

  • True: 请求元数据,如果提供,则传递给 predict。如果未提供元数据,则忽略该请求。

  • False: 不请求元数据,元估计器不会将其传递给 predict

  • None: 不请求元数据,如果用户提供了元数据,元估计器将引发错误。

  • str: 应使用给定的别名而不是原始名称将元数据传递给元估计器。

默认值 (sklearn.utils.metadata_routing.UNCHANGED) 保留现有请求。这允许您更改某些参数的请求而不更改其他参数。

添加于 1.3 版本。

注意

此方法仅在此估计器用作元估计器的子估计器时相关,例如在 Pipeline 中使用时。否则,它无效。

参数:
  • base_margin (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于 predict 方法中 base_margin 参数的元数据路由。

  • iteration_range (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于 predict 方法中 iteration_range 参数的元数据路由。

  • output_margin (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于 predict 方法中 output_margin 参数的元数据路由。

  • validate_features (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于 predict 方法中 validate_features 参数的元数据路由。

  • self (XGBRanker)

返回:

self – 更新后的对象。

返回类型:

object

class xgboost.XGBRFRegressor(*, learning_rate=1.0, subsample=0.8, colsample_bynode=0.8, reg_lambda=1e-05, **kwargs)

基类: XGBRegressor

用于 XGBoost 随机森林回归的 scikit-learn API。详见使用 Scikit-Learn 估计器接口

参数:
  • n_estimators (可选的[整数]) – 要拟合的随机森林中的树数量。

  • max_depth (Optional[int]) – 基础学习器的最大树深度。

  • max_leaves (Optional[int]) – 最大叶子数;0 表示无限制。

  • max_bin (Optional[int]) – 如果使用基于直方图的算法,则每个特征的最大 bin 数

  • grow_policy (Optional[str]) –

    树生长策略。

    • depthwise: 倾向于在最靠近根节点的节点处进行分裂,

    • lossguide: 倾向于在损失变化最大的节点处进行分裂。

  • learning_rate (Optional[float]) – 提升学习率(xgb 的“eta”)

  • verbosity (Optional[int]) – 冗余程度。有效值范围为 0(静默)- 3(调试)。

  • objective (Union[str, xgboost.sklearn._SklObjWProto, Callable[[Any, Any], Tuple[numpy.ndarray, numpy.ndarray]], NoneType]) –

    指定要使用的学习任务和相应的学习目标或自定义目标函数。

    对于自定义目标,有关详细信息以及函数签名的末尾注释,请参阅 Custom Objective and Evaluation MetricCustom objective and metric

  • booster (Optional[str]) – 指定使用哪个 booster:gbtreegblineardart

  • 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 步长。

  • subsample (Optional[float]) – 训练实例的子采样比例。

  • sampling_method (Optional[str]) –

    采样方法。仅由 hist 树方法的 GPU 版本使用。

    • uniform: 均匀随机选择训练实例。

    • gradient_based: 在梯度和 Hessian 较大时以更高概率随机选择训练实例。(参见 CatBoost)

      当梯度和 Hessian 值较大时。(参见 CatBoost)

  • colsample_bytree (Optional[float]) – 构建每棵树时列的子采样比例。

  • colsample_bylevel (Optional[float]) – 每层列的子采样比例。

  • colsample_bynode (Optional[float]) – 每次分裂时列的子采样比例。

  • reg_alpha (Optional[float]) – 权重上的 L1 正则化项(xgb 的 alpha)。

  • reg_lambda (Optional[float]) – 权重上的 L2 正则化项(xgb 的 lambda)。

  • scale_pos_weight (Optional[float]) – 正负权重的平衡。

  • base_score (Optional[float]) – 所有实例的初始预测得分,全局偏置。

  • random_state (Union[numpy.random.mtrand.RandomState, numpy.random._generator.Generator, int, NoneType]) –

    随机数种子。

    注意

    使用带有 shotgun 更新器的 gblinear booster 是非确定性的,因为它使用 Hogwild 算法。

  • missing (float) – 数据中表示缺失值的值。默认为 numpy.nan

  • num_parallel_tree (Optional[int]) – 用于提升随机森林。

  • monotone_constraints (Union[Dict[str, int], str, NoneType]) – 变量单调性的约束。有关详细信息,请参阅 tutorial

  • interaction_constraints (Union[str, List[Tuple[str]], NoneType]) – 表示允许交互的交互约束。约束必须以嵌套列表的形式指定,例如 [[0, 1], [2, 3, 4]],其中每个内部列表是一组允许相互交互的特征索引。有关更多信息,请参阅 tutorial

  • importance_type (Optional[str]) –

    feature_importances_ 属性的特征重要性类型

    • 对于树模型,可以是“gain”、“weight”、“cover”、“total_gain”或“total_cover”。

    • 对于线性模型,仅定义了“weight”,它是去除偏差后的归一化系数。

  • device (Optional[str]) –

    在 2.0.0 版本中新增。

    设备序号,可用选项有 cpucudagpu

  • validate_parameters (Optional[bool]) – 对未知参数发出警告。

  • enable_categorical (bool) – 有关详细信息,请参阅 DMatrix 的相同参数。

  • feature_types (Optional[Sequence[str]]) –

    在 1.7.0 版本中新增。

    用于在不构建 dataframe 的情况下指定特征类型。有关详细信息,请参阅 DMatrix

  • feature_weights (Optional[ArrayLike]) – 每个特征的权重,定义在使用 colsample 时选择每个特征的概率。所有值必须大于 0,否则抛出 ValueError

  • max_cat_to_onehot (Optional[int]) –

    在 1.6.0 版本中新增。

    注意

    此参数为实验性

    决定 XGBoost 是否应对分类数据使用 one-hot 编码分割的阈值。当类别数量小于阈值时,选择 one-hot 编码,否则类别将被划分到子节点中。此外,需要设置 enable_categorical 才能支持分类特征。有关详细信息,请参阅 Categorical DataParameters for Categorical Feature

  • max_cat_threshold (Optional[int]) –

    在 1.7.0 版本中新增。

    注意

    此参数为实验性

    每次分裂时考虑的最大类别数。仅用于基于分区的分裂,以防止过拟合。此外,需要设置 enable_categorical 才能支持分类特征。有关详细信息,请参阅 Categorical DataParameters for Categorical Feature

  • multi_strategy (Optional[str]) –

    在 2.0.0 版本中新增。

    注意

    此参数正在开发中。

    用于训练多目标模型(包括多目标回归和多类分类)的策略。有关更多信息,请参阅 Multiple Outputs

    • one_output_per_tree: 每个目标一个模型。

    • multi_output_tree: 使用多目标树。

  • eval_metric (Union[str, List[str], Callable, NoneType]) –

    在 1.6.0 版本中新增。

    用于监控训练结果和提前停止的指标。它可以是字符串或字符串列表,作为 XGBoost 中预定义指标的名称(参见 XGBoost Parameters),也可以是 sklearn.metrics 中的指标之一,或者任何看起来像 sklearn.metrics 的用户自定义指标。

    如果同时提供了自定义目标,则自定义指标应实现相应的反向链接函数。

    与 scikit-learn 中常用的 scoring 参数不同,当提供可调用对象时,它被认为是代价函数,XGBoost 默认会在提前停止期间最小化结果。

    关于提前停止的高级用法,例如直接选择最大化而不是最小化,请参阅 xgboost.callback.EarlyStopping

    有关详细信息,请参阅 Custom Objective and Evaluation MetricCustom 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_scorebest_iteration。这些属性由predict()apply()方法使用,以在推理过程中确定最优的树数量。如果用户希望访问完整的模型(包括早停后构建的树),他们可以在这些推理方法中指定iteration_range。此外,其他实用工具(如模型绘制)也可以使用整个模型。

    • 如果您更喜欢丢弃 best_iteration 之后的树,请考虑使用回调函数 xgboost.callback.EarlyStopping

    • 如果在 eval_set 中有多个项目,则使用最后一个条目进行提前停止。如果在 eval_metric 中有多个指标,则使用最后一个指标进行提前停止。

  • callbacks (Optional[List[xgboost.callback.TrainingCallback]]) –

    在每次迭代结束时应用的 callback 函数列表。可以使用 Callback API 中预定义的回调。

    注意

    callback 中的状态在训练期间不会保留,这意味着 callback 对象不能在未经重新初始化或深拷贝的情况下重复用于多个训练会话。

    for params in parameters_grid:
        # be sure to (re)initialize the callbacks before each run
        callbacks = [xgb.callback.LearningRateScheduler(custom_rates)]
        reg = xgboost.XGBRegressor(**params, callbacks=callbacks)
        reg.fit(X, y)
    

  • kwargs (Optional[Any]) –

    XGBoost Booster 对象的关键字参数。参数的完整文档可以在 这里 找到。尝试通过构造函数参数和 **kwargs 字典同时设置参数将导致 TypeError。

    注意

    **kwargs 不受 scikit-learn 支持

    **kwargs 不受 scikit-learn 支持。我们不保证通过此参数传递的参数能与 scikit-learn 正确交互。

    注意

    自定义目标函数

    可以为 objective 参数提供自定义目标函数。在这种情况下,它应该具有签名 objective(y_true, y_pred) -> [grad, hess]objective(y_true, y_pred, *, sample_weight) -> [grad, hess]

    y_true: array_like of shape [n_samples]

    目标值

    y_pred: array_like of shape [n_samples]

    预测值

    sample_weight

    可选的样本权重。

    grad: array_like of shape [n_samples]

    每个样本点的梯度值。

    hess: array_like of shape [n_samples]

    每个样本点的二阶导数值

    请注意,如果自定义目标为 Hessian 产生负值,这些值将被裁剪。如果目标是非凸的,也可以考虑使用期望的 Hessian(Fisher 信息)。

apply(X, iteration_range=None)

返回每个样本在每棵树中的预测叶子。如果模型使用早停进行训练,则best_iteration会自动使用。

参数:
返回:

X_leaves – 对于 X 中的每个数据点 x 和每棵树,返回 x 最终到达的叶子索引。叶子的编号在 [0; 2**(self.max_depth+1)) 范围内,编号可能存在间隔。

返回类型:

array_like, shape=[n_samples, n_trees]

property best_iteration: int

提前停止获得的最佳迭代次数。此属性基于 0,例如,如果最佳迭代是第一轮,则 best_iteration 为 0。

property best_score: float

提前停止获得的最佳得分。

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) 的数组

property feature_names_in_: ndarray

fit()期间遇到的特征名称。仅当X具有全部为字符串的特征名称时定义。

fit(X, y, *, sample_weight=None, base_margin=None, eval_set=None, verbose=True, xgb_model=None, sample_weight_eval_set=None, base_margin_eval_set=None, feature_weights=None)

拟合梯度提升模型。

请注意,多次调用 fit() 将导致模型对象从头开始重新拟合。要从上一个检查点继续训练,请显式传递 xgb_model 参数。

参数:
  • X (Any) –

    输入特征矩阵。有关支持的类型列表,请参见 Supported data structures for various XGBoost functions

    tree_method 设置为 hist 时,内部将使用 QuantileDMatrix 而不是 DMatrix 以节省内存。但是,当输入数据设备与算法不匹配时,这会影响性能。例如,如果输入是 CPU 上的 numpy 数组但使用 cuda 进行训练,则数据首先在 CPU 上处理,然后传输到 GPU。

  • y (Any) – 标签

  • sample_weight (Any | None) – 实例权重

  • base_margin (Any | None) – 每个实例的全局偏差。有关详细信息,请参阅截距

  • eval_set (Sequence[Tuple[Any, Any]] | None) – 用作验证集 (X, y) 元组对的列表,将计算这些验证集的指标。验证指标将帮助我们跟踪模型的性能。

  • verbose (bool | int | None) – 如果 verbose 为 True 且使用了评估集,则在每个提升阶段将验证集上衡量的评估指标打印到 stdout。如果 verbose 是一个整数,则在每 verbose 个提升阶段打印评估指标。使用 early_stopping_rounds 找到的最后一个提升阶段/提升阶段也会被打印。

  • xgb_model (Booster | str | XGBModel | None) – 要加载的文件名或 ‘Booster’ 实例 XGBoost 模型,可在训练前加载(允许继续训练)。

  • sample_weight_eval_set (Sequence[Any] | None) – 形式为 [L_1, L_2, …, L_n] 的列表,其中每个 L_i 是一个类数组对象,存储第 i 个验证集的实例权重。

  • base_margin_eval_set (Sequence[Any] | None) – 形式为 [M_1, M_2, …, M_n] 的列表,其中每个 M_i 是一个类数组对象,存储第 i 个验证集的基准边距 (base margin)。

  • feature_weights (Any | None) –

    自 3.0.0 版本起已弃用。

    请改用feature_weights__init__()set_params()中。

返回类型:

XGBRFRegressor

get_booster()

获取此模型底层的 xgboost Booster。

如果在 fit 方法未被调用时,这将引发异常。

返回:

booster

返回类型:

底层模型的 xgboost Booster 实例

get_metadata_routing()

获取此对象的元数据路由。

请查阅用户指南,了解路由机制的工作原理。

返回:

routing – 一个MetadataRequest,封装了路由信息。

返回类型:

MetadataRequest

get_num_boosting_rounds()

获取 xgboost 提升轮次 (boosting rounds) 的数量。

返回类型:

int

get_params(deep=True)

获取参数。

参数:

deep (bool)

返回类型:

Dict[str, Any]

get_xgb_params()

获取 xgboost 特定的参数。

返回类型:

Dict[str, Any]

property intercept_: ndarray

截距(偏差)属性

对于基于树的模型,返回的值是 base_score

返回:

intercept_

返回类型:

形状为 (1,)[n_classes] 的数组

load_model(fname)

从文件或 bytearray 加载模型。

模型以 XGBoost 内部格式保存,该格式在各种 XGBoost 接口中通用。Python Booster 对象的辅助属性(例如 feature_names)仅在使用 JSON 或 UBJSON(默认)格式时保存。此外,不属于模型的参数(如指标、max_depth 等)不会保存,有关更多信息,请参阅 Model IO

model.save_model("model.json")
model.load_model("model.json")

# or
model.save_model("model.ubj")
model.load_model("model.ubj")

# or
buf = model.save_raw()
model.load_model(buf)
参数:

fname (PathLike | bytearray | str) – 输入文件名或内存缓冲区(另请参阅 save_raw)

返回类型:

property n_features_in_: int

fit()期间遇到的特征数量。

predict(X, *, output_margin=False, validate_features=True, base_margin=None, iteration_range=None)

使用X进行预测。如果模型使用早停进行训练,则best_iteration会自动使用。估计器默认使用inplace_predict,如果数据和估计器之间的设备不匹配,则会回退到使用DMatrix

注意

此函数仅对 gbtreedart 线程安全。

参数:
  • X (Any) – 用于预测的数据。有关支持的类型列表,请参阅各种 XGBoost 函数支持的数据结构

  • output_margin (bool) – 是否输出原始未转换的 margin 值。

  • validate_features (bool) – 当此参数设置为 True 时,验证 Booster 和数据的 feature_names 是否完全一致。否则,假设 feature_names 是相同的。

  • base_margin (Any | None) – 每个实例的全局偏差。有关详细信息,请参阅截距

  • iteration_range (Tuple[int | integer, int | integer] | None) –

    指定预测中使用哪一层树。例如,如果随机森林训练了 100 轮。指定 iteration_range=(10, 20),则在此预测中仅使用在 [10, 20)(左闭右开区间)轮次期间构建的森林。

    在 1.4.0 版本中新增。

返回类型:

prediction

save_model(fname)

将模型保存到文件。

模型以 XGBoost 内部格式保存,该格式在各种 XGBoost 接口中通用。Python Booster 对象的辅助属性(例如 feature_names)仅在使用 JSON 或 UBJSON(默认)格式时保存。此外,不属于模型的参数(如指标、max_depth 等)不会保存,有关更多信息,请参阅 Model IO

model.save_model("model.json")
# or
model.save_model("model.ubj")
参数:

fname (str | PathLike) – 输出文件名

返回类型:

score(X, y, sample_weight=None)

返回预测的决定系数 (coefficient of determination)。

决定系数 \(R^2\) 定义为 \((1 - \frac{u}{v})\),其中 \(u\) 是残差平方和 ((y_true - y_pred)** 2).sum()\(v\) 是总平方和 ((y_true - y_true.mean()) ** 2).sum()。最佳分数是 1.0,它也可以是负数(因为模型可能任意差)。忽略输入特征,总是预测 y 的期望值的常数模型将获得 0.0 的 \(R^2\) 分数。

参数:
  • X (array-like of shape (n_samples, n_features)) – 测试样本。对于某些估计器,这可能是预计算的核矩阵,或者形状为 (n_samples, n_samples_fitted) 的通用对象列表,其中 n_samples_fitted 是估计器拟合中使用的样本数量。

  • y (array-like of shape (n_samples,) or (n_samples, n_outputs)) – X 的真实值。

  • sample_weight (array-like of shape (n_samples,), default=None) – 样本权重。

返回:

scoreself.predict(X) 相对于 y\(R^2\) 值。

返回类型:

float

注意

在回归器上调用 score 时使用的 \(R^2\) 分数从 0.23 版本开始使用 multioutput='uniform_average',以便与 r2_score() 的默认值保持一致。这会影响所有多输出回归器(MultiOutputRegressor 除外)的 score 方法。

set_fit_request(*, base_margin='$UNCHANGED$', base_margin_eval_set='$UNCHANGED$', eval_set='$UNCHANGED$', feature_weights='$UNCHANGED$', sample_weight='$UNCHANGED$', sample_weight_eval_set='$UNCHANGED$', verbose='$UNCHANGED$', xgb_model='$UNCHANGED$')

请求传递给 fit 方法的元数据。

请注意,此方法仅在 enable_metadata_routing=True 时相关(参见 sklearn.set_config())。请参阅用户指南,了解路由机制的工作原理。

每个参数的选项如下:

  • True: 请求元数据,如果提供,则传递给 fit。如果未提供元数据,则忽略该请求。

  • False: 不请求元数据,元估计器不会将其传递给 fit

  • None: 不请求元数据,如果用户提供了元数据,元估计器将引发错误。

  • str: 应使用给定的别名而不是原始名称将元数据传递给元估计器。

默认值 (sklearn.utils.metadata_routing.UNCHANGED) 保留现有请求。这允许您更改某些参数的请求而不更改其他参数。

添加于 1.3 版本。

注意

此方法仅在此估计器用作元估计器的子估计器时相关,例如在 Pipeline 中使用时。否则,它无效。

参数:
  • base_margin (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于 fit 方法中 base_margin 参数的元数据路由。

  • base_margin_eval_set (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于 fit 方法中 base_margin_eval_set 参数的元数据路由。

  • eval_set (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于 fit 方法中 eval_set 参数的元数据路由。

  • feature_weights (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于 fit 方法中 feature_weights 参数的元数据路由。

  • sample_weight (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于 fit 方法中 sample_weight 参数的元数据路由。

  • sample_weight_eval_set (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于 fit 方法中 sample_weight_eval_set 参数的元数据路由。

  • verbose (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于 fit 方法中 verbose 参数的元数据路由。

  • xgb_model (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于 fit 方法中 xgb_model 参数的元数据路由。

  • self (XGBRFRegressor)

返回:

self – 更新后的对象。

返回类型:

object

set_params(**params)

设置此估计器的参数。修改了 sklearn 方法以允许未知关键字参数。这使得在 sklearn 网格搜索中可以使用未定义为成员变量的全部 xgboost 参数范围。

返回类型:

自身

参数:

params (Any)

set_predict_request(*, base_margin='$UNCHANGED$', iteration_range='$UNCHANGED$', output_margin='$UNCHANGED$', validate_features='$UNCHANGED$')

请求传递给 predict 方法的元数据。

请注意,此方法仅在 enable_metadata_routing=True 时相关(参见 sklearn.set_config())。请参阅用户指南,了解路由机制的工作原理。

每个参数的选项如下:

  • True: 请求元数据,如果提供,则传递给 predict。如果未提供元数据,则忽略该请求。

  • False: 不请求元数据,元估计器不会将其传递给 predict

  • None: 不请求元数据,如果用户提供了元数据,元估计器将引发错误。

  • str: 应使用给定的别名而不是原始名称将元数据传递给元估计器。

默认值 (sklearn.utils.metadata_routing.UNCHANGED) 保留现有请求。这允许您更改某些参数的请求而不更改其他参数。

添加于 1.3 版本。

注意

此方法仅在此估计器用作元估计器的子估计器时相关,例如在 Pipeline 中使用时。否则,它无效。

参数:
  • base_margin (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于 predict 方法中 base_margin 参数的元数据路由。

  • iteration_range (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于 predict 方法中 iteration_range 参数的元数据路由。

  • output_margin (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于 predict 方法中 output_margin 参数的元数据路由。

  • validate_features (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于 predict 方法中 validate_features 参数的元数据路由。

  • self (XGBRFRegressor)

返回:

self – 更新后的对象。

返回类型:

object

set_score_request(*, sample_weight='$UNCHANGED$')

请求传递给 score 方法的元数据。

请注意,此方法仅在 enable_metadata_routing=True 时相关(参见 sklearn.set_config())。请参阅用户指南,了解路由机制的工作原理。

每个参数的选项如下:

  • True: 请求元数据,如果提供,则传递给 score。如果未提供元数据,则忽略该请求。

  • False: 不请求元数据,元估计器不会将其传递给 score

  • None: 不请求元数据,如果用户提供了元数据,元估计器将引发错误。

  • str: 应使用给定的别名而不是原始名称将元数据传递给元估计器。

默认值 (sklearn.utils.metadata_routing.UNCHANGED) 保留现有请求。这允许您更改某些参数的请求而不更改其他参数。

添加于 1.3 版本。

注意

此方法仅在此估计器用作元估计器的子估计器时相关,例如在 Pipeline 中使用时。否则,它无效。

参数:
  • sample_weight (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于 score 方法中 sample_weight 参数的元数据路由。

  • self (XGBRFRegressor)

返回:

self – 更新后的对象。

返回类型:

object

class xgboost.XGBRFClassifier(*, learning_rate=1.0, subsample=0.8, colsample_bynode=0.8, reg_lambda=1e-05, **kwargs)

基类: XGBClassifier

用于 XGBoost 随机森林分类的 scikit-learn API。详见使用 Scikit-Learn 估计器接口

参数:
  • n_estimators (可选的[整数]) – 要拟合的随机森林中的树数量。

  • max_depth (Optional[int]) – 基础学习器的最大树深度。

  • max_leaves (Optional[int]) – 最大叶子数;0 表示无限制。

  • max_bin (Optional[int]) – 如果使用基于直方图的算法,则每个特征的最大 bin 数

  • grow_policy (Optional[str]) –

    树生长策略。

    • depthwise: 倾向于在最靠近根节点的节点处进行分裂,

    • lossguide: 倾向于在损失变化最大的节点处进行分裂。

  • learning_rate (Optional[float]) – 提升学习率(xgb 的“eta”)

  • verbosity (Optional[int]) – 冗余程度。有效值范围为 0(静默)- 3(调试)。

  • objective (Union[str, xgboost.sklearn._SklObjWProto, Callable[[Any, Any], Tuple[numpy.ndarray, numpy.ndarray]], NoneType]) –

    指定要使用的学习任务和相应的学习目标或自定义目标函数。

    对于自定义目标,有关详细信息以及函数签名的末尾注释,请参阅 Custom Objective and Evaluation MetricCustom objective and metric

  • booster (Optional[str]) – 指定使用哪个 booster:gbtreegblineardart

  • 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 步长。

  • subsample (Optional[float]) – 训练实例的子采样比例。

  • sampling_method (Optional[str]) –

    采样方法。仅由 hist 树方法的 GPU 版本使用。

    • uniform: 均匀随机选择训练实例。

    • gradient_based: 在梯度和 Hessian 较大时以更高概率随机选择训练实例。(参见 CatBoost)

      当梯度和 Hessian 值较大时。(参见 CatBoost)

  • colsample_bytree (Optional[float]) – 构建每棵树时列的子采样比例。

  • colsample_bylevel (Optional[float]) – 每层列的子采样比例。

  • colsample_bynode (Optional[float]) – 每次分裂时列的子采样比例。

  • reg_alpha (Optional[float]) – 权重上的 L1 正则化项(xgb 的 alpha)。

  • reg_lambda (Optional[float]) – 权重上的 L2 正则化项(xgb 的 lambda)。

  • scale_pos_weight (Optional[float]) – 正负权重的平衡。

  • base_score (Optional[float]) – 所有实例的初始预测得分,全局偏置。

  • random_state (Union[numpy.random.mtrand.RandomState, numpy.random._generator.Generator, int, NoneType]) –

    随机数种子。

    注意

    使用带有 shotgun 更新器的 gblinear booster 是非确定性的,因为它使用 Hogwild 算法。

  • missing (float) – 数据中表示缺失值的值。默认为 numpy.nan

  • num_parallel_tree (Optional[int]) – 用于提升随机森林。

  • monotone_constraints (Union[Dict[str, int], str, NoneType]) – 变量单调性的约束。有关详细信息,请参阅 tutorial

  • interaction_constraints (Union[str, List[Tuple[str]], NoneType]) – 表示允许交互的交互约束。约束必须以嵌套列表的形式指定,例如 [[0, 1], [2, 3, 4]],其中每个内部列表是一组允许相互交互的特征索引。有关更多信息,请参阅 tutorial

  • importance_type (Optional[str]) –

    feature_importances_ 属性的特征重要性类型

    • 对于树模型,可以是“gain”、“weight”、“cover”、“total_gain”或“total_cover”。

    • 对于线性模型,仅定义了“weight”,它是去除偏差后的归一化系数。

  • device (Optional[str]) –

    在 2.0.0 版本中新增。

    设备序号,可用选项有 cpucudagpu

  • validate_parameters (Optional[bool]) – 对未知参数发出警告。

  • enable_categorical (bool) – 有关详细信息,请参阅 DMatrix 的相同参数。

  • feature_types (Optional[Sequence[str]]) –

    在 1.7.0 版本中新增。

    用于在不构建 dataframe 的情况下指定特征类型。有关详细信息,请参阅 DMatrix

  • feature_weights (Optional[ArrayLike]) – 每个特征的权重,定义在使用 colsample 时选择每个特征的概率。所有值必须大于 0,否则抛出 ValueError

  • max_cat_to_onehot (Optional[int]) –

    在 1.6.0 版本中新增。

    注意

    此参数为实验性

    决定 XGBoost 是否应对分类数据使用 one-hot 编码分割的阈值。当类别数量小于阈值时,选择 one-hot 编码,否则类别将被划分到子节点中。此外,需要设置 enable_categorical 才能支持分类特征。有关详细信息,请参阅 Categorical DataParameters for Categorical Feature

  • max_cat_threshold (Optional[int]) –

    在 1.7.0 版本中新增。

    注意

    此参数为实验性

    每次分裂时考虑的最大类别数。仅用于基于分区的分裂,以防止过拟合。此外,需要设置 enable_categorical 才能支持分类特征。有关详细信息,请参阅 Categorical DataParameters for Categorical Feature

  • multi_strategy (Optional[str]) –

    在 2.0.0 版本中新增。

    注意

    此参数正在开发中。

    用于训练多目标模型(包括多目标回归和多类分类)的策略。有关更多信息,请参阅 Multiple Outputs

    • one_output_per_tree: 每个目标一个模型。

    • multi_output_tree: 使用多目标树。

  • eval_metric (Union[str, List[str], Callable, NoneType]) –

    在 1.6.0 版本中新增。

    用于监控训练结果和提前停止的指标。它可以是字符串或字符串列表,作为 XGBoost 中预定义指标的名称(参见 XGBoost Parameters),也可以是 sklearn.metrics 中的指标之一,或者任何看起来像 sklearn.metrics 的用户自定义指标。

    如果同时提供了自定义目标,则自定义指标应实现相应的反向链接函数。

    与 scikit-learn 中常用的 scoring 参数不同,当提供可调用对象时,它被认为是代价函数,XGBoost 默认会在提前停止期间最小化结果。

    关于提前停止的高级用法,例如直接选择最大化而不是最小化,请参阅 xgboost.callback.EarlyStopping

    有关详细信息,请参阅 Custom Objective and Evaluation MetricCustom 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_scorebest_iteration。这些属性由predict()apply()方法使用,以在推理过程中确定最优的树数量。如果用户希望访问完整的模型(包括早停后构建的树),他们可以在这些推理方法中指定iteration_range。此外,其他实用工具(如模型绘制)也可以使用整个模型。

    • 如果您更喜欢丢弃 best_iteration 之后的树,请考虑使用回调函数 xgboost.callback.EarlyStopping

    • 如果在 eval_set 中有多个项目,则使用最后一个条目进行提前停止。如果在 eval_metric 中有多个指标,则使用最后一个指标进行提前停止。

  • callbacks (Optional[List[xgboost.callback.TrainingCallback]]) –

    在每次迭代结束时应用的 callback 函数列表。可以使用 Callback API 中预定义的回调。

    注意

    callback 中的状态在训练期间不会保留,这意味着 callback 对象不能在未经重新初始化或深拷贝的情况下重复用于多个训练会话。

    for params in parameters_grid:
        # be sure to (re)initialize the callbacks before each run
        callbacks = [xgb.callback.LearningRateScheduler(custom_rates)]
        reg = xgboost.XGBRegressor(**params, callbacks=callbacks)
        reg.fit(X, y)
    

  • kwargs (Optional[Any]) –

    XGBoost Booster 对象的关键字参数。参数的完整文档可以在 这里 找到。尝试通过构造函数参数和 **kwargs 字典同时设置参数将导致 TypeError。

    注意

    **kwargs 不受 scikit-learn 支持

    **kwargs 不受 scikit-learn 支持。我们不保证通过此参数传递的参数能与 scikit-learn 正确交互。

    注意

    自定义目标函数

    可以为 objective 参数提供自定义目标函数。在这种情况下,它应该具有签名 objective(y_true, y_pred) -> [grad, hess]objective(y_true, y_pred, *, sample_weight) -> [grad, hess]

    y_true: array_like of shape [n_samples]

    目标值

    y_pred: array_like of shape [n_samples]

    预测值

    sample_weight

    可选的样本权重。

    grad: array_like of shape [n_samples]

    每个样本点的梯度值。

    hess: array_like of shape [n_samples]

    每个样本点的二阶导数值

    请注意,如果自定义目标为 Hessian 产生负值,这些值将被裁剪。如果目标是非凸的,也可以考虑使用期望的 Hessian(Fisher 信息)。

apply(X, iteration_range=None)

返回每个样本在每棵树中的预测叶子。如果模型使用早停进行训练,则best_iteration会自动使用。

参数:
返回:

X_leaves – 对于 X 中的每个数据点 x 和每棵树,返回 x 最终到达的叶子索引。叶子的编号在 [0; 2**(self.max_depth+1)) 范围内,编号可能存在间隔。

返回类型:

array_like, shape=[n_samples, n_trees]

property best_iteration: int

提前停止获得的最佳迭代次数。此属性基于 0,例如,如果最佳迭代是第一轮,则 best_iteration 为 0。

property best_score: float

提前停止获得的最佳得分。

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) 的数组

property feature_names_in_: ndarray

fit()期间遇到的特征名称。仅当X具有全部为字符串的特征名称时定义。

fit(X, y, *, sample_weight=None, base_margin=None, eval_set=None, verbose=True, xgb_model=None, sample_weight_eval_set=None, base_margin_eval_set=None, feature_weights=None)

拟合梯度提升分类器。

请注意,多次调用 fit() 将导致模型对象从头开始重新拟合。要从上一个检查点继续训练,请显式传递 xgb_model 参数。

参数:
  • X (Any) –

    输入特征矩阵。有关支持的类型列表,请参见 Supported data structures for various XGBoost functions

    tree_method 设置为 hist 时,内部将使用 QuantileDMatrix 而不是 DMatrix 以节省内存。但是,当输入数据设备与算法不匹配时,这会影响性能。例如,如果输入是 CPU 上的 numpy 数组但使用 cuda 进行训练,则数据首先在 CPU 上处理,然后传输到 GPU。

  • y (Any) – 标签

  • sample_weight (Any | None) – 实例权重

  • base_margin (Any | None) – 每个实例的全局偏差。有关详细信息,请参阅截距

  • eval_set (Sequence[Tuple[Any, Any]] | None) – 用作验证集 (X, y) 元组对的列表,将计算这些验证集的指标。验证指标将帮助我们跟踪模型的性能。

  • verbose (bool | int | None) – 如果 verbose 为 True 且使用了评估集,则在每个提升阶段将验证集上衡量的评估指标打印到 stdout。如果 verbose 是一个整数,则在每 verbose 个提升阶段打印评估指标。使用 early_stopping_rounds 找到的最后一个提升阶段/提升阶段也会被打印。

  • xgb_model (Booster | str | XGBModel | None) – 要加载的文件名或 ‘Booster’ 实例 XGBoost 模型,可在训练前加载(允许继续训练)。

  • sample_weight_eval_set (Sequence[Any] | None) – 形式为 [L_1, L_2, …, L_n] 的列表,其中每个 L_i 是一个类数组对象,存储第 i 个验证集的实例权重。

  • base_margin_eval_set (Sequence[Any] | None) – 形式为 [M_1, M_2, …, M_n] 的列表,其中每个 M_i 是一个类数组对象,存储第 i 个验证集的基准边距 (base margin)。

  • feature_weights (Any | None) –

    自 3.0.0 版本起已弃用。

    请改用feature_weights__init__()set_params()中。

返回类型:

XGBRFClassifier

get_booster()

获取此模型底层的 xgboost Booster。

如果在 fit 方法未被调用时,这将引发异常。

返回:

booster

返回类型:

底层模型的 xgboost Booster 实例

get_metadata_routing()

获取此对象的元数据路由。

请查阅用户指南,了解路由机制的工作原理。

返回:

routing – 一个MetadataRequest,封装了路由信息。

返回类型:

MetadataRequest

get_num_boosting_rounds()

获取 xgboost 提升轮次 (boosting rounds) 的数量。

返回类型:

int

get_params(deep=True)

获取参数。

参数:

deep (bool)

返回类型:

Dict[str, Any]

get_xgb_params()

获取 xgboost 特定的参数。

返回类型:

Dict[str, Any]

property intercept_: ndarray

截距(偏差)属性

对于基于树的模型,返回的值是 base_score

返回:

intercept_

返回类型:

形状为 (1,)[n_classes] 的数组

load_model(fname)

从文件或 bytearray 加载模型。

模型以 XGBoost 内部格式保存,该格式在各种 XGBoost 接口中通用。Python Booster 对象的辅助属性(例如 feature_names)仅在使用 JSON 或 UBJSON(默认)格式时保存。此外,不属于模型的参数(如指标、max_depth 等)不会保存,有关更多信息,请参阅 Model IO

model.save_model("model.json")
model.load_model("model.json")

# or
model.save_model("model.ubj")
model.load_model("model.ubj")

# or
buf = model.save_raw()
model.load_model(buf)
参数:

fname (PathLike | bytearray | str) – 输入文件名或内存缓冲区(另请参阅 save_raw)

返回类型:

property n_features_in_: int

fit()期间遇到的特征数量。

predict(X, *, output_margin=False, validate_features=True, base_margin=None, iteration_range=None)

使用X进行预测。如果模型使用早停进行训练,则best_iteration会自动使用。估计器默认使用inplace_predict,如果数据和估计器之间的设备不匹配,则会回退到使用DMatrix

注意

此函数仅对 gbtreedart 线程安全。

参数:
  • X (Any) – 用于预测的数据。有关支持的类型列表,请参阅各种 XGBoost 函数支持的数据结构

  • output_margin (bool) – 是否输出原始未转换的 margin 值。

  • validate_features (bool) – 当此参数设置为 True 时,验证 Booster 和数据的 feature_names 是否完全一致。否则,假设 feature_names 是相同的。

  • base_margin (Any | None) – 每个实例的全局偏差。有关详细信息,请参阅截距

  • iteration_range (Tuple[int | integer, int | integer] | None) –

    指定预测中使用哪一层树。例如,如果随机森林训练了 100 轮。指定 iteration_range=(10, 20),则在此预测中仅使用在 [10, 20)(左闭右开区间)轮次期间构建的森林。

    在 1.4.0 版本中新增。

返回类型:

prediction

predict_proba(X, validate_features=True, base_margin=None, iteration_range=None)

预测每个X样本属于给定类别的概率。如果模型使用早停进行训练,则best_iteration会自动使用。估计器默认使用inplace_predict,如果数据和估计器之间的设备不匹配,则会回退到使用DMatrix

注意

此函数仅对 gbtreedart 线程安全。

参数:
  • X (Any) – 特征矩阵。有关支持的类型列表,请参阅各种 XGBoost 函数支持的数据结构

  • validate_features (bool) – 当此参数设置为 True 时,验证 Booster 和数据的 feature_names 是否完全一致。否则,假设 feature_names 是相同的。

  • base_margin (Any | None) – 每个实例的全局偏差。有关详细信息,请参阅截距

  • iteration_range (Tuple[int | integer, int | integer] | None) – 指定预测中使用哪一层树。例如,如果随机森林训练了 100 轮。指定 iteration_range=(10, 20),则在此预测中仅使用在 [10, 20)(左闭右开区间)轮次期间构建的森林。

返回:

一个 numpy 数组,形状类似数组,形状为 (n_samples, n_classes),包含每个数据样本属于给定类别的概率。

返回类型:

prediction

save_model(fname)

将模型保存到文件。

模型以 XGBoost 内部格式保存,该格式在各种 XGBoost 接口中通用。Python Booster 对象的辅助属性(例如 feature_names)仅在使用 JSON 或 UBJSON(默认)格式时保存。此外,不属于模型的参数(如指标、max_depth 等)不会保存,有关更多信息,请参阅 Model IO

model.save_model("model.json")
# or
model.save_model("model.ubj")
参数:

fname (str | PathLike) – 输出文件名

返回类型:

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) – 样本权重。

返回:

scoreself.predict(X) 相对于 y 的平均准确率。

返回类型:

float

set_fit_request(*, base_margin='$UNCHANGED$', base_margin_eval_set='$UNCHANGED$', eval_set='$UNCHANGED$', feature_weights='$UNCHANGED$', sample_weight='$UNCHANGED$', sample_weight_eval_set='$UNCHANGED$', verbose='$UNCHANGED$', xgb_model='$UNCHANGED$')

请求传递给 fit 方法的元数据。

请注意,此方法仅在 enable_metadata_routing=True 时相关(参见 sklearn.set_config())。请参阅用户指南,了解路由机制的工作原理。

每个参数的选项如下:

  • True: 请求元数据,如果提供,则传递给 fit。如果未提供元数据,则忽略该请求。

  • False: 不请求元数据,元估计器不会将其传递给 fit

  • None: 不请求元数据,如果用户提供了元数据,元估计器将引发错误。

  • str: 应使用给定的别名而不是原始名称将元数据传递给元估计器。

默认值 (sklearn.utils.metadata_routing.UNCHANGED) 保留现有请求。这允许您更改某些参数的请求而不更改其他参数。

添加于 1.3 版本。

注意

此方法仅在此估计器用作元估计器的子估计器时相关,例如在 Pipeline 中使用时。否则,它无效。

参数:
  • base_margin (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于 fit 方法中 base_margin 参数的元数据路由。

  • base_margin_eval_set (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于 fit 方法中 base_margin_eval_set 参数的元数据路由。

  • eval_set (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于 fit 方法中 eval_set 参数的元数据路由。

  • feature_weights (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于 fit 方法中 feature_weights 参数的元数据路由。

  • sample_weight (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于 fit 方法中 sample_weight 参数的元数据路由。

  • sample_weight_eval_set (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于 fit 方法中 sample_weight_eval_set 参数的元数据路由。

  • verbose (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于 fit 方法中 verbose 参数的元数据路由。

  • xgb_model (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于 fit 方法中 xgb_model 参数的元数据路由。

  • self (XGBRFClassifier)

返回:

self – 更新后的对象。

返回类型:

object

set_params(**params)

设置此估计器的参数。修改了 sklearn 方法以允许未知关键字参数。这使得在 sklearn 网格搜索中可以使用未定义为成员变量的全部 xgboost 参数范围。

返回类型:

自身

参数:

params (Any)

set_predict_proba_request(*, base_margin='$UNCHANGED$', iteration_range='$UNCHANGED$', validate_features='$UNCHANGED$')

请求传递给 predict_proba 方法的元数据。

请注意,此方法仅在 enable_metadata_routing=True 时相关(参见 sklearn.set_config())。请参阅用户指南,了解路由机制的工作原理。

每个参数的选项如下:

  • True: 请求元数据,如果提供,则传递给 predict_proba。如果未提供元数据,则忽略该请求。

  • False: 不请求元数据,元估计器不会将其传递给 predict_proba

  • None: 不请求元数据,如果用户提供了元数据,元估计器将引发错误。

  • str: 应使用给定的别名而不是原始名称将元数据传递给元估计器。

默认值 (sklearn.utils.metadata_routing.UNCHANGED) 保留现有请求。这允许您更改某些参数的请求而不更改其他参数。

添加于 1.3 版本。

注意

此方法仅在此估计器用作元估计器的子估计器时相关,例如在 Pipeline 中使用时。否则,它无效。

参数:
  • base_margin (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于 predict_proba 方法中 base_margin 参数的元数据路由。

  • iteration_range (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于 predict_proba 方法中 iteration_range 参数的元数据路由。

  • validate_features (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于 predict_proba 方法中 validate_features 参数的元数据路由。

  • self (XGBRFClassifier)

返回:

self – 更新后的对象。

返回类型:

object

set_predict_request(*, base_margin='$UNCHANGED$', iteration_range='$UNCHANGED$', output_margin='$UNCHANGED$', validate_features='$UNCHANGED$')

请求传递给 predict 方法的元数据。

请注意,此方法仅在 enable_metadata_routing=True 时相关(参见 sklearn.set_config())。请参阅用户指南,了解路由机制的工作原理。

每个参数的选项如下:

  • True: 请求元数据,如果提供,则传递给 predict。如果未提供元数据,则忽略该请求。

  • False: 不请求元数据,元估计器不会将其传递给 predict

  • None: 不请求元数据,如果用户提供了元数据,元估计器将引发错误。

  • str: 应使用给定的别名而不是原始名称将元数据传递给元估计器。

默认值 (sklearn.utils.metadata_routing.UNCHANGED) 保留现有请求。这允许您更改某些参数的请求而不更改其他参数。

添加于 1.3 版本。

注意

此方法仅在此估计器用作元估计器的子估计器时相关,例如在 Pipeline 中使用时。否则,它无效。

参数:
  • base_margin (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于 predict 方法中 base_margin 参数的元数据路由。

  • iteration_range (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于 predict 方法中 iteration_range 参数的元数据路由。

  • output_margin (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于 predict 方法中 output_margin 参数的元数据路由。

  • validate_features (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于 predict 方法中 validate_features 参数的元数据路由。

  • self (XGBRFClassifier)

返回:

self – 更新后的对象。

返回类型:

object

set_score_request(*, sample_weight='$UNCHANGED$')

请求传递给 score 方法的元数据。

请注意,此方法仅在 enable_metadata_routing=True 时相关(参见 sklearn.set_config())。请参阅用户指南,了解路由机制的工作原理。

每个参数的选项如下:

  • True: 请求元数据,如果提供,则传递给 score。如果未提供元数据,则忽略该请求。

  • False: 不请求元数据,元估计器不会将其传递给 score

  • None: 不请求元数据,如果用户提供了元数据,元估计器将引发错误。

  • str: 应使用给定的别名而不是原始名称将元数据传递给元估计器。

默认值 (sklearn.utils.metadata_routing.UNCHANGED) 保留现有请求。这允许您更改某些参数的请求而不更改其他参数。

添加于 1.3 版本。

注意

此方法仅在此估计器用作元估计器的子估计器时相关,例如在 Pipeline 中使用时。否则,它无效。

参数:
  • sample_weight (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – 用于 score 方法中 sample_weight 参数的元数据路由。

  • self (XGBRFClassifier)

返回:

self – 更新后的对象。

返回类型:

object

绘图API

绘图库。

xgboost.plot_importance(booster, *, ax=None, height=0.2, xlim=None, ylim=None, title='Feature importance', xlabel='Importance score', ylabel='Features', fmap='', importance_type='weight', max_num_features=None, grid=True, show_values=True, values_format='{v}', **kwargs)

根据已拟合的树绘制重要性。

参数:
  • booster (XGBModel | Booster | dict) – Booster 或 XGBModel 实例,或 Booster.get_fscore() 获取的字典

  • ax (matplotlib Axes) – 目标 Axes 实例。如果为 None,将创建新的图形和 Axes。

  • grid (bool) – 开启或关闭 Axes 网格。默认值为 True (开启)。

  • importance_type (str) –

    重要性如何计算:可以是 “weight”、“gain” 或 “cover”

    • “weight” 表示特征在树中出现的次数

    • “gain” 表示使用该特征进行分割的平均增益

    • “cover” 表示使用该特征进行分割的平均覆盖度,覆盖度定义为受该分割影响的样本数量

  • max_num_features (int | None) – 图表中显示的最大顶部特征数量。如果为 None,则显示所有特征。

  • height (float) – 条形图高度,传递给 ax.barh()

  • xlim (tuple | None) – 传递给 axes.xlim() 的元组

  • ylim (tuple | None) – 传递给 axes.ylim() 的元组

  • title (str) – Axes 标题。要禁用,传递 None。

  • xlabel (str) – X 轴标题标签。要禁用,传递 None。

  • ylabel (str) – Y 轴标题标签。要禁用,传递 None。

  • fmap (str | PathLike) – 特征映射文件的名称。

  • show_values (bool) – 在图表中显示值。要禁用,传递 False。

  • values_format (str) – 值的格式字符串。“v” 将被替换为特征重要性的值。例如,传递 “{v:.2f}” 可以将图表上每个值的小数点后的位数限制为两位。

  • kwargs (Any) – 传递给 ax.barh() 的其他关键字参数

返回:

ax

返回类型:

matplotlib Axes

xgboost.plot_tree(booster, *, fmap='', num_trees=None, rankdir=None, ax=None, with_stats=False, tree_idx=0, **kwargs)

绘制指定的树。

参数:
  • booster (Booster | XGBModel) – Booster 或 XGBModel 实例

  • fmap (str (optional)) – 特征映射文件的名称

  • num_trees (int | None) –

    自版本 3.0 起已弃用。

  • rankdir (str, default "TB") – 通过 graph_attr 传递给 graphviz

  • ax (matplotlib Axes, default None) – 目标 Axes 实例。如果为 None,将创建新的图形和 Axes。

  • with_stats (bool) –

    自版本 3.0 添加。

    参阅 to_graphviz()

  • tree_idx (int) –

    自版本 3.0 添加。

    参阅 to_graphviz()

  • kwargs (Any) – 传递给 to_graphviz() 的其他关键字参数

返回:

ax

返回类型:

matplotlib Axes

xgboost.to_graphviz(booster, *, fmap='', num_trees=None, rankdir=None, yes_color=None, no_color=None, condition_node_params=None, leaf_node_params=None, with_stats=False, tree_idx=0, **kwargs)

将指定的树转换为 graphviz 实例。IPython 可以自动绘制返回的 graphviz 实例。否则,您应调用返回的 graphviz 实例的 .render() 方法。

参数:
  • booster (Booster | XGBModel) – Booster 或 XGBModel 实例

  • fmap (str | PathLike) – 特征映射文件的名称

  • num_trees (int | None) –

    自版本 3.0 起已弃用。

    指定目标树的序号

  • rankdir (str | None) – 通过 graph_attr 传递给 graphviz

  • yes_color (str | None) – 满足节点条件时的边颜色。

  • no_color (str | None) – 不满足节点条件时的边颜色。

  • condition_node_params (dict | None) –

    graphviz 的条件节点配置。示例

    {'shape': 'box',
     'style': 'filled,rounded',
     'fillcolor': '#78bceb'}
    

  • leaf_node_params (dict | None) –

    graphviz 的叶节点配置。示例

    {'shape': 'box',
     'style': 'filled',
     'fillcolor': '#e48038'}
    

  • with_stats (bool) –

    自版本 3.0 添加。

    控制是否应包含分割统计信息。

  • tree_idx (int) –

    自版本 3.0 添加。

    指定目标树的序数索引。

  • kwargs (Any) – 传递给 graphviz graph_attr 的其他关键字参数,例如 graph [ {key} = {value} ]

返回:

graph

返回类型:

graphviz.Source

回调 API

包含训练例程的回调库。有关快速介绍,请参阅 回调函数

class xgboost.callback.TrainingCallback

训练回调的接口。

在 1.3.0 版本中新增。

after_iteration(model, epoch, evals_log)

每次迭代后运行。训练应停止时返回 True

参数:
  • model (Any) – Booster 对象或 CVPack(如果使用了 xgboost 中的 cv 函数)

  • epoch (int) – 当前训练迭代次数。

  • evals_log (Dict[str, Dict[str, List[float] | List[Tuple[float, float]]]]) –

    包含评估历史记录的字典

    {"data_name": {"metric_name": [0.5, ...]}}
    

返回类型:

bool

after_training(model)

训练完成后运行。

参数:

model (Any)

返回类型:

Any

before_iteration(model, epoch, evals_log)

每次迭代前运行。训练应停止时返回 True。有关详细信息,请参阅 after_iteration()

参数:
返回类型:

bool

before_training(model)

训练开始前运行。

参数:

model (Any)

返回类型:

Any

class xgboost.callback.EvaluationMonitor(rank=0, period=1, show_stdv=False, logger=<function communicator_print>)

基类: TrainingCallback

在每次迭代时打印评估结果。

在 1.3.0 版本中新增。

参数:
  • rank (int) – 用于打印结果的工作进程排名。

  • period (int) – 打印评估结果的迭代间隔。

  • show_stdv (bool) – 在 cv 中用于显示标准差。用户不应指定此参数。

  • logger (Callable[[str], None]) – 用于记录评估结果的可调用对象。

after_iteration(model, epoch, evals_log)

每次迭代后运行。训练应停止时返回 True

参数:
  • model (Any) – Booster 对象或 CVPack(如果使用了 xgboost 中的 cv 函数)

  • epoch (int) – 当前训练迭代次数。

  • evals_log (Dict[str, Dict[str, List[float] | List[Tuple[float, float]]]]) –

    包含评估历史记录的字典

    {"data_name": {"metric_name": [0.5, ...]}}
    

返回类型:

bool

after_training(model)

训练完成后运行。

参数:

model (Any)

返回类型:

Any

class xgboost.callback.EarlyStopping(*, rounds, metric_name=None, data_name=None, maximize=None, save_best=False, min_delta=0.0)

基类: TrainingCallback

用于提前停止的回调函数

在 1.3.0 版本中新增。

参数:
  • rounds (int) – 提前停止的迭代次数。

  • metric_name (str | None) – 用于提前停止的指标名称。

  • data_name (str | None) – 用于提前停止的数据集名称。

  • maximize (bool | None) – 是否最大化评估指标。None 表示自动(不推荐)。

  • save_best (bool | None) – 训练是否应返回最佳模型或最后一个模型。如果设置为 True,它将只保留检测到的最佳迭代之前的 Boosting 轮次,丢弃之后的轮次。这仅支持树方法(不支持 gblinear)。此外,cv 函数不返回模型,此参数不适用。

  • min_delta (float) –

    自版本 1.5.0 添加。

    视为改进的最小绝对分数变化。

示例

es = xgboost.callback.EarlyStopping(
    rounds=2,
    min_delta=1e-3,
    save_best=True,
    maximize=False,
    data_name="validation_0",
    metric_name="mlogloss",
)
clf = xgboost.XGBClassifier(tree_method="hist", device="cuda", callbacks=[es])

X, y = load_digits(return_X_y=True)
clf.fit(X, y, eval_set=[(X, y)])
after_iteration(model, epoch, evals_log)

每次迭代后运行。训练应停止时返回 True

参数:
  • model (Any) – Booster 对象或 CVPack(如果使用了 xgboost 中的 cv 函数)

  • epoch (int) – 当前训练迭代次数。

  • evals_log (Dict[str, Dict[str, List[float] | List[Tuple[float, float]]]]) –

    包含评估历史记录的字典

    {"data_name": {"metric_name": [0.5, ...]}}
    

返回类型:

bool

after_training(model)

训练完成后运行。

参数:

model (Any)

返回类型:

Any

before_training(model)

训练开始前运行。

参数:

model (Any)

返回类型:

Any

class xgboost.callback.LearningRateScheduler(learning_rates)

基类: TrainingCallback

用于调度学习率的回调函数。

在 1.3.0 版本中新增。

参数:

learning_rates (Callable[[int], float] | Sequence[float]) – 如果是一个可调用对象,则应接受一个整数参数 epoch 并返回相应的学习率。否则它应该是一个序列(如列表或元组),其大小与 Boosting 轮次相同。

after_iteration(model, epoch, evals_log)

每次迭代后运行。训练应停止时返回 True

参数:
  • model (Any) – Booster 对象或 CVPack(如果使用了 xgboost 中的 cv 函数)

  • epoch (int) – 当前训练迭代次数。

  • evals_log (Dict[str, Dict[str, List[float] | List[Tuple[float, float]]]]) –

    包含评估历史记录的字典

    {"data_name": {"metric_name": [0.5, ...]}}
    

返回类型:

bool

class xgboost.callback.TrainingCheckPoint(directory, name='model', as_pickle=False, interval=100)

基类: TrainingCallback

检查点操作。建议用户创建自己的回调函数进行检查点操作,因为 XGBoost 不处理分布式文件系统。在分布式系统上进行检查点操作时,请务必了解工作进程的排名,以避免多个工作进程保存到同一位置。

在 1.3.0 版本中新增。

自 XGBoost 2.1.0 起,默认格式更改为 UBJSON。

参数:
  • directory (str | PathLike) – 输出模型目录。

  • name (str) – 输出模型文件的模式。模型将保存为 name_0.ubj, name_1.ubj, name_2.ubj …。

  • as_pickle (bool) – 当设置为 True 时,所有训练参数将以 pickle 格式保存,而不是仅保存模型。

  • interval (int) – 检查点间隔。检查点操作较慢,因此设置较大的数字可以减少性能影响。

after_iteration(model, epoch, evals_log)

每次迭代后运行。训练应停止时返回 True

参数:
  • model (Any) – Booster 对象或 CVPack(如果使用了 xgboost 中的 cv 函数)

  • epoch (int) – 当前训练迭代次数。

  • evals_log (Dict[str, Dict[str, List[float] | List[Tuple[float, float]]]]) –

    包含评估历史记录的字典

    {"data_name": {"metric_name": [0.5, ...]}}
    

返回类型:

bool

before_training(model)

训练开始前运行。

参数:

model (Any)

返回类型:

Any

Dask API

PySpark API

PySpark XGBoost 集成接口

class xgboost.spark.SparkXGBClassifier(*, features_col='features', label_col='label', prediction_col='prediction', probability_col='probability', raw_prediction_col='rawPrediction', pred_contrib_col=None, validation_indicator_col=None, weight_col=None, base_margin_col=None, num_workers=1, use_gpu=None, device=None, force_repartition=False, repartition_random_shuffle=False, enable_sparse_data_optim=False, launch_tracker_on_driver=True, coll_cfg=None, **kwargs)

基类: _SparkXGBEstimator, HasProbabilityCol, HasRawPredictionCol

SparkXGBClassifier 是一个 PySpark ML 估计器。它基于 XGBoost python 库实现了 XGBoost 分类算法,并且可以在 PySpark Pipeline 和 PySpark ML 元算法中使用,例如 - CrossValidator/ - TrainValidationSplit/ - OneVsRest

SparkXGBClassifier 自动支持 xgboost.XGBClassifier 构造函数中的大多数参数以及 xgboost.XGBClassifier.fit()xgboost.XGBClassifier.predict() 方法中使用的参数。

要启用 GPU 支持,请将 device 设置为 cudagpu

SparkXGBClassifier 不支持显式设置 base_margin,但支持另一个参数 base_margin_col。有关详细信息,请参阅下面的文档。

SparkXGBClassifier 不支持设置 output_margin,但我们可以从原始预测列中获取输出边距。有关详细信息,请参阅下面的 raw_prediction_col 参数文档。

SparkXGBClassifier 不支持 validate_featuresoutput_margin 参数。

SparkXGBClassifier 不支持设置 nthread xgboost 参数,相反,每个 xgboost 工作进程的 nthread 参数将被设置为等于 spark.task.cpus 配置值。

参数:
  • features_col (str | List[str]) – 当值为字符串时,要求特征列为向量类型。当值为字符串列表时,要求所有特征列为数值类型。

  • label_col (str) – 标签列名称。默认为 “label”。

  • prediction_col (str) – 预测列名称。默认为 “prediction”

  • probability_col (str) – 预测类别条件概率的列名称。默认为 probabilityCol

  • raw_prediction_col (str) – output_margin=TruerawPredictionCol 输出列隐式支持,该列始终返回预测的边距值。

  • 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_weightsample_weight_eval_set 参数。

  • base_margin_col (str | None) – 要指定训练和验证数据集的基础边距,请设置 xgboost.spark.SparkXGBClassifier.base_margin_col 参数,而不是在 xgboost.XGBClassifier fit 方法中设置 base_marginbase_margin_eval_set

  • num_workers (int) – 用于训练的 XGBoost 工作进程数量。每个 XGBoost 工作进程对应一个 Spark 任务。

  • use_gpu (bool | None) –

    自版本 2.0.0 起已弃用。

    请改用 device

  • device (str | None) –

    在 2.0.0 版本中新增。

    XGBoost 工作进程的设备,可用选项有 cpucudagpu

  • force_repartition (bool) – 一个布尔值,指定在 XGBoost 训练前是否强制对输入数据集进行重新分区。

  • repartition_random_shuffle (bool) – 一个布尔值,指定在需要重新分区时是否随机混洗数据集。

  • enable_sparse_data_optim (bool) – 一个布尔值,指定是否启用稀疏数据优化,如果为 True,将从稀疏矩阵而不是密集矩阵构建 Xgboost DMatrix 对象。

  • launch_tracker_on_driver (bool) – 一个布尔值,指示 tracker 应在驱动程序端还是执行程序端启动。

  • coll_cfg (Config | None) – 集合配置。参阅 Config

  • kwargs (Any) – XGBoost 参数的字典,请参阅 https://docs.xgboost.com.cn/en/release_3.0.0/parameter.html

注意

上面的参数图表包含需要特殊处理的参数。有关完整参数列表,请参阅下面的 Param(parent=… 条目。

此 API 是实验性的。

示例

>>> from xgboost.spark import SparkXGBClassifier
>>> from pyspark.ml.linalg import Vectors
>>> df_train = spark.createDataFrame([
...     (Vectors.dense(1.0, 2.0, 3.0), 0, False, 1.0),
...     (Vectors.sparse(3, {1: 1.0, 2: 5.5}), 1, False, 2.0),
...     (Vectors.dense(4.0, 5.0, 6.0), 0, True, 1.0),
...     (Vectors.sparse(3, {1: 6.0, 2: 7.5}), 1, True, 2.0),
... ], ["features", "label", "isVal", "weight"])
>>> df_test = spark.createDataFrame([
...     (Vectors.dense(1.0, 2.0, 3.0), ),
... ], ["features"])
>>> xgb_classifier = SparkXGBClassifier(max_depth=5, missing=0.0,
...     validation_indicator_col='isVal', weight_col='weight',
...     early_stopping_rounds=1, eval_metric='logloss')
>>> xgb_clf_model = xgb_classifier.fit(df_train)
>>> xgb_clf_model.transform(df_test).show()
clear(param)

如果已显式设置,则从参数映射中清除参数。

参数:

param (Param)

返回类型:

copy(extra=None)

创建此实例的副本,具有相同的 uid 和一些额外参数。默认实现使用 copy.copy() 创建浅层副本,然后复制嵌入参数和额外参数并返回副本。如果默认方法不足,子类应覆盖此方法。

参数:
  • extra (dict, optional) – 复制到新实例的额外参数

  • self (P)

返回:

此实例的副本

返回类型:

参数

explainParam(param)

解释单个参数并以字符串形式返回其名称、文档以及可选的默认值和用户提供的值。

参数:

param (str | Param)

返回类型:

str

explainParams()

返回所有参数的文档以及其可选的默认值和用户提供的值。

返回类型:

str

extractParamMap(extra=None)

提取嵌入的默认参数值和用户提供的值,然后将其与输入中的额外值合并到平面参数映射中,如果存在冲突,则使用后者的值,即排序如下:默认参数值 < 用户提供的值 < 额外值。

参数:

extra (dict, optional) – 额外参数值

返回:

合并的参数映射

返回类型:

dict

fit(dataset, params=None)

使用可选参数将模型拟合到输入数据集。

在 1.3.0 版本中新增。

参数:
  • dataset (pyspark.sql.DataFrame) – 输入数据集。

  • params (dict or list or tuple, optional) – 覆盖嵌入参数的可选参数映射。如果提供参数映射列表/元组,则此函数将在每个参数映射上调用 fit 并返回模型列表。

返回:

拟合的模型

返回类型:

TransformerTransformer 列表

fitMultiple(dataset, paramMaps)

对于 paramMaps 中的每个参数映射,将模型拟合到输入数据集。

自版本 2.3.0 添加。

参数:
返回:

一个线程安全的迭代器,其中包含每个参数映射的模型。每次调用 next(modelIterator) 将返回 (index, model),其中 model 是使用 paramMaps[index] 拟合的。index 值可能不是连续的。

返回类型:

_FitMultipleIterator

getFeaturesCol()

获取 featuresCol 的值或其默认值。

返回类型:

str

getLabelCol()

获取 labelCol 的值或其默认值。

返回类型:

str

getOrDefault(param)

获取用户提供的参数映射中某个参数的值或其默认值。如果两者都未设置,则引发错误。

参数:

param (str | Param[T])

返回类型:

Any | T

getParam(paramName)

按名称获取参数。

参数:

paramName (str)

返回类型:

Param

getPredictionCol()

获取 predictionCol 的值或其默认值。

返回类型:

str

getProbabilityCol()

获取 probabilityCol 的值或其默认值。

返回类型:

str

getRawPredictionCol()

获取 rawPredictionCol 的值或其默认值。

返回类型:

str

getValidationIndicatorCol()

获取 validationIndicatorCol 的值或其默认值。

返回类型:

str

getWeightCol()

获取 weightCol 的值或其默认值。

返回类型:

str

hasDefault(param)

检查参数是否具有默认值。

参数:

param (str | Param[Any])

返回类型:

bool

hasParam(paramName)

测试此实例是否包含具有给定(字符串)名称的参数。

参数:

paramName (str)

返回类型:

bool

isDefined(param)

检查参数是否由用户显式设置或是否具有默认值。

参数:

param (str | Param[Any])

返回类型:

bool

isSet(param)

检查参数是否由用户显式设置。

参数:

param (str | Param[Any])

返回类型:

bool

classmethod load(path)

从输入路径读取 ML 实例,这是 read().load(path) 的快捷方式。

参数:

path (str)

返回类型:

RL

property params: List[Param]

返回按名称排序的所有参数。默认实现使用 dir() 获取类型为 Param 的所有属性。

classmethod read()

返回用于加载估计器的读取器。

返回类型:

SparkXGBReader

save(path)

将此 ML 实例保存到给定路径,这是 'write().save(path)' 的快捷方式。

参数:

path (str)

返回类型:

set(param, value)

在嵌入的参数映射中设置参数。

参数:
返回类型:

setParams(**kwargs)

为估计器设置参数。

参数:

kwargs (Any)

返回类型:

set_coll_cfg(value)

设置集合配置

参数:

value (Config)

返回类型:

_SparkXGBParams

set_device(value)

设置设备,可选值:cpu, cuda, gpu

参数:

value (str)

返回类型:

_SparkXGBParams

uid

对象的唯一 ID。

write()

返回用于保存估计器的写入器。

返回类型:

SparkXGBWriter

class xgboost.spark.SparkXGBClassifierModel(xgb_sklearn_model=None, training_summary=None)

基类: _ClassificationModel

xgboost.spark.SparkXGBClassifier.fit() 返回的模型

注意

此 API 是实验性的。

参数:
  • xgb_sklearn_model (XGBModel | None)

  • training_summary (XGBoostTrainingSummary | None)

clear(param)

如果已显式设置,则从参数映射中清除参数。

参数:

param (Param)

返回类型:

copy(extra=None)

创建此实例的副本,具有相同的 uid 和一些额外参数。默认实现使用 copy.copy() 创建浅层副本,然后复制嵌入参数和额外参数并返回副本。如果默认方法不足,子类应覆盖此方法。

参数:
  • extra (dict, optional) – 复制到新实例的额外参数

  • self (P)

返回:

此实例的副本

返回类型:

参数

explainParam(param)

解释单个参数并以字符串形式返回其名称、文档以及可选的默认值和用户提供的值。

参数:

param (str | Param)

返回类型:

str

explainParams()

返回所有参数的文档以及其可选的默认值和用户提供的值。

返回类型:

str

extractParamMap(extra=None)

提取嵌入的默认参数值和用户提供的值,然后将其与输入中的额外值合并到平面参数映射中,如果存在冲突,则使用后者的值,即排序如下:默认参数值 < 用户提供的值 < 额外值。

参数:

extra (dict, optional) – 额外参数值

返回:

合并的参数映射

返回类型:

dict

getFeaturesCol()

获取 featuresCol 的值或其默认值。

返回类型:

str

getLabelCol()

获取 labelCol 的值或其默认值。

返回类型:

str

getOrDefault(param)

获取用户提供的参数映射中某个参数的值或其默认值。如果两者都未设置,则引发错误。

参数:

param (str | Param[T])

返回类型:

Any | T

getParam(paramName)

按名称获取参数。

参数:

paramName (str)

返回类型:

Param

getPredictionCol()

获取 predictionCol 的值或其默认值。

返回类型:

str

getProbabilityCol()

获取 probabilityCol 的值或其默认值。

返回类型:

str

getRawPredictionCol()

获取 rawPredictionCol 的值或其默认值。

返回类型:

str

getValidationIndicatorCol()

获取 validationIndicatorCol 的值或其默认值。

返回类型:

str

getWeightCol()

获取 weightCol 的值或其默认值。

返回类型:

str

get_booster()

返回 xgboost.core.Booster 实例。

返回类型:

Booster

get_feature_importances(importance_type='weight')

获取每个特征的特征重要性。重要性类型可以定义为

  • ‘weight’: 在所有树中特征被用于分割数据的次数。

  • ‘gain’: 特征在所有分割中获得的平均增益。

  • ‘cover’: 特征在所有分割中覆盖的平均样本数(覆盖度)。

  • ‘total_gain’: 特征在所有分割中获得的总增益。

  • ‘total_cover’: 特征在所有分割中覆盖的总样本数(覆盖度)。

参数:

importance_type (str, default 'weight') – 上面定义的一种重要性类型。

返回类型:

Dict[str, float | List[float]]

hasDefault(param)

检查参数是否具有默认值。

参数:

param (str | Param[Any])

返回类型:

bool

hasParam(paramName)

测试此实例是否包含具有给定(字符串)名称的参数。

参数:

paramName (str)

返回类型:

bool

isDefined(param)

检查参数是否由用户显式设置或是否具有默认值。

参数:

param (str | Param[Any])

返回类型:

bool

isSet(param)

检查参数是否由用户显式设置。

参数:

param (str | Param[Any])

返回类型:

bool

classmethod load(path)

从输入路径读取 ML 实例,这是 read().load(path) 的快捷方式。

参数:

path (str)

返回类型:

RL

property params: List[Param]

返回按名称排序的所有参数。默认实现使用 dir() 获取类型为 Param 的所有属性。

classmethod read()

返回用于加载模型的读取器。

返回类型:

SparkXGBModelReader

save(path)

将此 ML 实例保存到给定路径,这是 'write().save(path)' 的快捷方式。

参数:

path (str)

返回类型:

set(param, value)

在嵌入的参数映射中设置参数。

参数:
返回类型:

set_coll_cfg(value)

设置集合配置

参数:

value (Config)

返回类型:

_SparkXGBParams

set_device(value)

设置设备,可选值:cpu, cuda, gpu

参数:

value (str)

返回类型:

_SparkXGBParams

transform(dataset, params=None)

使用可选参数转换输入数据集。

在 1.3.0 版本中新增。

参数:
返回:

转换后的数据集

返回类型:

pyspark.sql.DataFrame

uid

对象的唯一 ID。

write()

返回用于保存模型的写入器。

返回类型:

SparkXGBModelWriter

class xgboost.spark.SparkXGBRegressor(*, features_col='features', label_col='label', prediction_col='prediction', pred_contrib_col=None, validation_indicator_col=None, weight_col=None, base_margin_col=None, num_workers=1, use_gpu=None, device=None, force_repartition=False, repartition_random_shuffle=False, enable_sparse_data_optim=False, launch_tracker_on_driver=True, coll_cfg=None, **kwargs)

基类: _SparkXGBEstimator

SparkXGBRegressor 是一个 PySpark ML 估计器。它实现了基于 XGBoost python 库的 XGBoost 回归算法,并且可以用于 PySpark Pipeline 和 PySpark ML 元算法,例如 - CrossValidator / - TrainValidationSplit / - OneVsRest

SparkXGBRegressor 自动支持 xgboost.XGBRegressor 构造函数中的大部分参数以及 xgboost.XGBRegressor.fit()xgboost.XGBRegressor.predict() 方法中使用的大部分参数。

要启用 GPU 支持,请将 device 设置为 cudagpu

SparkXGBRegressor 也不支持显式设置 base_margin 参数,但支持另一个参数称为 base_margin_col。更多细节请参阅下面的文档。

SparkXGBRegressor 不支持 validate_featuresoutput_margin 参数。

SparkXGBRegressor 不支持设置 nthread xgboost 参数,相反,每个 xgboost 工作器的 nthread 参数将被设置为等于 spark.task.cpus 配置值。

参数:
  • features_col (str | List[str]) – 当值为字符串时,要求特征列为向量类型。当值为字符串列表时,要求所有特征列为数值类型。

  • label_col (str) – 标签列名称。默认为 “label”。

  • prediction_col (str) – 预测列名称。默认为 “prediction”

  • pred_contrib_col (pyspark.ml.param.Param[str]) – 贡献预测列名称。

  • validation_indicator_col (str | None) – 对于与使用评估数据集监督进行 xgboost.XGBRegressor 训练相关的参数,请设置 xgboost.spark.SparkXGBRegressor.validation_indicator_col 参数,而不是在 xgboost.XGBRegressor 的 fit 方法中设置 eval_set 参数。

  • weight_col (str | None) – 要指定训练和验证数据集的权重,请设置 xgboost.spark.SparkXGBRegressor.weight_col 参数,而不是在 xgboost.XGBRegressor 的 fit 方法中设置 sample_weightsample_weight_eval_set 参数。

  • base_margin_col (str | None) – 要指定训练和验证数据集的基准边距,请设置 xgboost.spark.SparkXGBRegressor.base_margin_col 参数,而不是在 xgboost.XGBRegressor 的 fit 方法中设置 base_marginbase_margin_eval_set

  • num_workers (int) – 用于训练的 XGBoost 工作进程数量。每个 XGBoost 工作进程对应一个 Spark 任务。

  • use_gpu (bool | None) –

    自版本 2.0.0 起已弃用。

    请改用 device

  • device (str | None) –

    在 2.0.0 版本中新增。

    XGBoost 工作进程的设备,可用选项有 cpucudagpu

  • force_repartition (bool) – 一个布尔值,指定在 XGBoost 训练前是否强制对输入数据集进行重新分区。

  • repartition_random_shuffle (bool) – 一个布尔值,指定在需要重新分区时是否随机混洗数据集。

  • enable_sparse_data_optim (bool) – 一个布尔值,指定是否启用稀疏数据优化,如果为 True,将从稀疏矩阵而不是密集矩阵构建 Xgboost DMatrix 对象。

  • launch_tracker_on_driver (bool) – 一个布尔值,指示 tracker 应在驱动程序端还是执行程序端启动。

  • coll_cfg (Config | None) – 集合配置。参阅 Config

  • kwargs (Any) – XGBoost 参数的字典,请参阅 https://docs.xgboost.com.cn/en/release_3.0.0/parameter.html

注意

上面的参数图表包含需要特殊处理的参数。有关完整参数列表,请参阅下面的 Param(parent=… 条目。

此 API 是实验性的。

示例

>>> from xgboost.spark import SparkXGBRegressor
>>> from pyspark.ml.linalg import Vectors
>>> df_train = spark.createDataFrame([
...     (Vectors.dense(1.0, 2.0, 3.0), 0, False, 1.0),
...     (Vectors.sparse(3, {1: 1.0, 2: 5.5}), 1, False, 2.0),
...     (Vectors.dense(4.0, 5.0, 6.0), 2, True, 1.0),
...     (Vectors.sparse(3, {1: 6.0, 2: 7.5}), 3, True, 2.0),
... ], ["features", "label", "isVal", "weight"])
>>> df_test = spark.createDataFrame([
...     (Vectors.dense(1.0, 2.0, 3.0), ),
...     (Vectors.sparse(3, {1: 1.0, 2: 5.5}), )
... ], ["features"])
>>> xgb_regressor = SparkXGBRegressor(max_depth=5, missing=0.0,
... validation_indicator_col='isVal', weight_col='weight',
... early_stopping_rounds=1, eval_metric='rmse')
>>> xgb_reg_model = xgb_regressor.fit(df_train)
>>> xgb_reg_model.transform(df_test)
clear(param)

如果已显式设置,则从参数映射中清除参数。

参数:

param (Param)

返回类型:

copy(extra=None)

创建此实例的副本,具有相同的 uid 和一些额外参数。默认实现使用 copy.copy() 创建浅层副本,然后复制嵌入参数和额外参数并返回副本。如果默认方法不足,子类应覆盖此方法。

参数:
  • extra (dict, optional) – 复制到新实例的额外参数

  • self (P)

返回:

此实例的副本

返回类型:

参数

explainParam(param)

解释单个参数并以字符串形式返回其名称、文档以及可选的默认值和用户提供的值。

参数:

param (str | Param)

返回类型:

str

explainParams()

返回所有参数的文档以及其可选的默认值和用户提供的值。

返回类型:

str

extractParamMap(extra=None)

提取嵌入的默认参数值和用户提供的值,然后将其与输入中的额外值合并到平面参数映射中,如果存在冲突,则使用后者的值,即排序如下:默认参数值 < 用户提供的值 < 额外值。

参数:

extra (dict, optional) – 额外参数值

返回:

合并的参数映射

返回类型:

dict

fit(dataset, params=None)

使用可选参数将模型拟合到输入数据集。

在 1.3.0 版本中新增。

参数:
  • dataset (pyspark.sql.DataFrame) – 输入数据集。

  • params (dict or list or tuple, optional) – 覆盖嵌入参数的可选参数映射。如果提供参数映射列表/元组,则此函数将在每个参数映射上调用 fit 并返回模型列表。

返回:

拟合的模型

返回类型:

TransformerTransformer 列表

fitMultiple(dataset, paramMaps)

对于 paramMaps 中的每个参数映射,将模型拟合到输入数据集。

自版本 2.3.0 添加。

参数:
返回:

一个线程安全的迭代器,其中包含每个参数映射的模型。每次调用 next(modelIterator) 将返回 (index, model),其中 model 是使用 paramMaps[index] 拟合的。index 值可能不是连续的。

返回类型:

_FitMultipleIterator

getFeaturesCol()

获取 featuresCol 的值或其默认值。

返回类型:

str

getLabelCol()

获取 labelCol 的值或其默认值。

返回类型:

str

getOrDefault(param)

获取用户提供的参数映射中某个参数的值或其默认值。如果两者都未设置,则引发错误。

参数:

param (str | Param[T])

返回类型:

Any | T

getParam(paramName)

按名称获取参数。

参数:

paramName (str)

返回类型:

Param

getPredictionCol()

获取 predictionCol 的值或其默认值。

返回类型:

str

getValidationIndicatorCol()

获取 validationIndicatorCol 的值或其默认值。

返回类型:

str

getWeightCol()

获取 weightCol 的值或其默认值。

返回类型:

str

hasDefault(param)

检查参数是否具有默认值。

参数:

param (str | Param[Any])

返回类型:

bool

hasParam(paramName)

测试此实例是否包含具有给定(字符串)名称的参数。

参数:

paramName (str)

返回类型:

bool

isDefined(param)

检查参数是否由用户显式设置或是否具有默认值。

参数:

param (str | Param[Any])

返回类型:

bool

isSet(param)

检查参数是否由用户显式设置。

参数:

param (str | Param[Any])

返回类型:

bool

classmethod load(path)

从输入路径读取 ML 实例,这是 read().load(path) 的快捷方式。

参数:

path (str)

返回类型:

RL

property params: List[Param]

返回按名称排序的所有参数。默认实现使用 dir() 获取类型为 Param 的所有属性。

classmethod read()

返回用于加载估计器的读取器。

返回类型:

SparkXGBReader

save(path)

将此 ML 实例保存到给定路径,这是 'write().save(path)' 的快捷方式。

参数:

path (str)

返回类型:

set(param, value)

在嵌入的参数映射中设置参数。

参数:
返回类型:

setParams(**kwargs)

为估计器设置参数。

参数:

kwargs (Any)

返回类型:

set_coll_cfg(value)

设置集合配置

参数:

value (Config)

返回类型:

_SparkXGBParams

set_device(value)

设置设备,可选值:cpu, cuda, gpu

参数:

value (str)

返回类型:

_SparkXGBParams

uid

对象的唯一 ID。

write()

返回用于保存估计器的写入器。

返回类型:

SparkXGBWriter

class xgboost.spark.SparkXGBRegressorModel(xgb_sklearn_model=None, training_summary=None)

基类: _SparkXGBModel

xgboost.spark.SparkXGBRegressor.fit() 返回的模型

注意

此 API 是实验性的。

参数:
  • xgb_sklearn_model (XGBModel | None)

  • training_summary (XGBoostTrainingSummary | None)

clear(param)

如果已显式设置,则从参数映射中清除参数。

参数:

param (Param)

返回类型:

copy(extra=None)

创建此实例的副本,具有相同的 uid 和一些额外参数。默认实现使用 copy.copy() 创建浅层副本,然后复制嵌入参数和额外参数并返回副本。如果默认方法不足,子类应覆盖此方法。

参数:
  • extra (dict, optional) – 复制到新实例的额外参数

  • self (P)

返回:

此实例的副本

返回类型:

参数

explainParam(param)

解释单个参数并以字符串形式返回其名称、文档以及可选的默认值和用户提供的值。

参数:

param (str | Param)

返回类型:

str

explainParams()

返回所有参数的文档以及其可选的默认值和用户提供的值。

返回类型:

str

extractParamMap(extra=None)

提取嵌入的默认参数值和用户提供的值,然后将其与输入中的额外值合并到平面参数映射中,如果存在冲突,则使用后者的值,即排序如下:默认参数值 < 用户提供的值 < 额外值。

参数:

extra (dict, optional) – 额外参数值

返回:

合并的参数映射

返回类型:

dict

getFeaturesCol()

获取 featuresCol 的值或其默认值。

返回类型:

str

getLabelCol()

获取 labelCol 的值或其默认值。

返回类型:

str

getOrDefault(param)

获取用户提供的参数映射中某个参数的值或其默认值。如果两者都未设置,则引发错误。

参数:

param (str | Param[T])

返回类型:

Any | T

getParam(paramName)

按名称获取参数。

参数:

paramName (str)

返回类型:

Param

getPredictionCol()

获取 predictionCol 的值或其默认值。

返回类型:

str

getValidationIndicatorCol()

获取 validationIndicatorCol 的值或其默认值。

返回类型:

str

getWeightCol()

获取 weightCol 的值或其默认值。

返回类型:

str

get_booster()

返回 xgboost.core.Booster 实例。

返回类型:

Booster

get_feature_importances(importance_type='weight')

获取每个特征的特征重要性。重要性类型可以定义为

  • ‘weight’: 在所有树中特征被用于分割数据的次数。

  • ‘gain’: 特征在所有分割中获得的平均增益。

  • ‘cover’: 特征在所有分割中覆盖的平均样本数(覆盖度)。

  • ‘total_gain’: 特征在所有分割中获得的总增益。

  • ‘total_cover’: 特征在所有分割中覆盖的总样本数(覆盖度)。

参数:

importance_type (str, default 'weight') – 上面定义的一种重要性类型。

返回类型:

Dict[str, float | List[float]]

hasDefault(param)

检查参数是否具有默认值。

参数:

param (str | Param[Any])

返回类型:

bool

hasParam(paramName)

测试此实例是否包含具有给定(字符串)名称的参数。

参数:

paramName (str)

返回类型:

bool

isDefined(param)

检查参数是否由用户显式设置或是否具有默认值。

参数:

param (str | Param[Any])

返回类型:

bool

isSet(param)

检查参数是否由用户显式设置。

参数:

param (str | Param[Any])

返回类型:

bool

classmethod load(path)

从输入路径读取 ML 实例,这是 read().load(path) 的快捷方式。

参数:

path (str)

返回类型:

RL

property params: List[Param]

返回按名称排序的所有参数。默认实现使用 dir() 获取类型为 Param 的所有属性。

classmethod read()

返回用于加载模型的读取器。

返回类型:

SparkXGBModelReader

save(path)

将此 ML 实例保存到给定路径,这是 'write().save(path)' 的快捷方式。

参数:

path (str)

返回类型:

set(param, value)

在嵌入的参数映射中设置参数。

参数:
返回类型:

set_coll_cfg(value)

设置集合配置

参数:

value (Config)

返回类型:

_SparkXGBParams

set_device(value)

设置设备,可选值:cpu, cuda, gpu

参数:

value (str)

返回类型:

_SparkXGBParams

transform(dataset, params=None)

使用可选参数转换输入数据集。

在 1.3.0 版本中新增。

参数:
返回:

转换后的数据集

返回类型:

pyspark.sql.DataFrame

uid

对象的唯一 ID。

write()

返回用于保存模型的写入器。

返回类型:

SparkXGBModelWriter

class xgboost.spark.SparkXGBRanker(*, features_col='features', label_col='label', prediction_col='prediction', pred_contrib_col=None, validation_indicator_col=None, weight_col=None, base_margin_col=None, qid_col=None, num_workers=1, use_gpu=None, device=None, force_repartition=False, repartition_random_shuffle=False, enable_sparse_data_optim=False, launch_tracker_on_driver=True, coll_cfg=None, **kwargs)

基类: _SparkXGBEstimator

SparkXGBRanker 是一个 PySpark ML 估计器。它实现了基于 XGBoost python 库的 XGBoost 排序算法,并且可以用于 PySpark Pipeline 和 PySpark ML 元算法,例如 CrossValidator / TrainValidationSplit / OneVsRest

SparkXGBRanker 自动支持 xgboost.XGBRanker 构造函数中的大部分参数以及 xgboost.XGBRanker.fit()xgboost.XGBRanker.predict() 方法中使用的大部分参数。

要启用 GPU 支持,请将 device 设置为 cudagpu

SparkXGBRanker 也不支持显式设置 base_margin 参数,但支持另一个参数称为 base_margin_col。更多细节请参阅下面的文档。

SparkXGBRanker 不支持设置 output_margin 参数,但我们可以从原始预测列中获取输出边距。更多细节请参阅下面的 raw_prediction_col 参数文档。

SparkXGBRanker 不支持 validate_featuresoutput_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_weightsample_weight_eval_set 参数。

  • base_margin_col (str | None) – 要指定训练和验证数据集的基准边距,请设置 xgboost.spark.SparkXGBRanker.base_margin_col 参数,而不是在 xgboost.XGBRanker 的 fit 方法中设置 base_marginbase_margin_eval_set

  • qid_col (str | None) – 查询 ID 列名。

  • num_workers (int) – 用于训练的 XGBoost 工作进程数量。每个 XGBoost 工作进程对应一个 Spark 任务。

  • use_gpu (bool | None) –

    自版本 2.0.0 起已弃用。

    请改用 device

  • device (str | None) –

    在 2.0.0 版本中新增。

    XGBoost 工作进程的设备,可用选项有 cpucudagpu

  • force_repartition (bool) – 一个布尔值,指定在 XGBoost 训练前是否强制对输入数据集进行重新分区。

  • repartition_random_shuffle (bool) – 一个布尔值,指定在需要重新分区时是否随机混洗数据集。

  • enable_sparse_data_optim (bool) – 一个布尔值,指定是否启用稀疏数据优化,如果为 True,将从稀疏矩阵而不是密集矩阵构建 Xgboost DMatrix 对象。

  • launch_tracker_on_driver (bool) – 一个布尔值,指示 tracker 应在驱动程序端还是执行程序端启动。

  • coll_cfg (Config | None) – 集合配置。参阅 Config

  • kwargs (Any) – XGBoost 参数的字典,请参阅 https://docs.xgboost.com.cn/en/release_3.0.0/parameter.html

  • 注意: (..) – 上述参数图表包含需要特殊处理的参数。要查看完整参数列表,请参阅下面带有 Param(parent=… 的条目。

  • 注意: – 此 API 为实验性。

示例

>>> from xgboost.spark import SparkXGBRanker
>>> from pyspark.ml.linalg import Vectors
>>> ranker = SparkXGBRanker(qid_col="qid")
>>> df_train = spark.createDataFrame(
...     [
...         (Vectors.dense(1.0, 2.0, 3.0), 0, 0),
...         (Vectors.dense(4.0, 5.0, 6.0), 1, 0),
...         (Vectors.dense(9.0, 4.0, 8.0), 2, 0),
...         (Vectors.sparse(3, {1: 1.0, 2: 5.5}), 0, 1),
...         (Vectors.sparse(3, {1: 6.0, 2: 7.5}), 1, 1),
...         (Vectors.sparse(3, {1: 8.0, 2: 9.5}), 2, 1),
...     ],
...     ["features", "label", "qid"],
... )
>>> df_test = spark.createDataFrame(
...     [
...         (Vectors.dense(1.5, 2.0, 3.0), 0),
...         (Vectors.dense(4.5, 5.0, 6.0), 0),
...         (Vectors.dense(9.0, 4.5, 8.0), 0),
...         (Vectors.sparse(3, {1: 1.0, 2: 6.0}), 1),
...         (Vectors.sparse(3, {1: 6.0, 2: 7.0}), 1),
...         (Vectors.sparse(3, {1: 8.0, 2: 10.5}), 1),
...     ],
...     ["features", "qid"],
... )
>>> model = ranker.fit(df_train)
>>> model.transform(df_test).show()
clear(param)

如果已显式设置,则从参数映射中清除参数。

参数:

param (Param)

返回类型:

copy(extra=None)

创建此实例的副本,具有相同的 uid 和一些额外参数。默认实现使用 copy.copy() 创建浅层副本,然后复制嵌入参数和额外参数并返回副本。如果默认方法不足,子类应覆盖此方法。

参数:
  • extra (dict, optional) – 复制到新实例的额外参数

  • self (P)

返回:

此实例的副本

返回类型:

参数

explainParam(param)

解释单个参数并以字符串形式返回其名称、文档以及可选的默认值和用户提供的值。

参数:

param (str | Param)

返回类型:

str

explainParams()

返回所有参数的文档以及其可选的默认值和用户提供的值。

返回类型:

str

extractParamMap(extra=None)

提取嵌入的默认参数值和用户提供的值,然后将其与输入中的额外值合并到平面参数映射中,如果存在冲突,则使用后者的值,即排序如下:默认参数值 < 用户提供的值 < 额外值。

参数:

extra (dict, optional) – 额外参数值

返回:

合并的参数映射

返回类型:

dict

fit(dataset, params=None)

使用可选参数将模型拟合到输入数据集。

在 1.3.0 版本中新增。

参数:
  • dataset (pyspark.sql.DataFrame) – 输入数据集。

  • params (dict or list or tuple, optional) – 覆盖嵌入参数的可选参数映射。如果提供参数映射列表/元组,则此函数将在每个参数映射上调用 fit 并返回模型列表。

返回:

拟合的模型

返回类型:

TransformerTransformer 列表

fitMultiple(dataset, paramMaps)

对于 paramMaps 中的每个参数映射,将模型拟合到输入数据集。

自版本 2.3.0 添加。

参数:
返回:

一个线程安全的迭代器,其中包含每个参数映射的模型。每次调用 next(modelIterator) 将返回 (index, model),其中 model 是使用 paramMaps[index] 拟合的。index 值可能不是连续的。

返回类型:

_FitMultipleIterator

getFeaturesCol()

获取 featuresCol 的值或其默认值。

返回类型:

str

getLabelCol()

获取 labelCol 的值或其默认值。

返回类型:

str

getOrDefault(param)

获取用户提供的参数映射中某个参数的值或其默认值。如果两者都未设置,则引发错误。

参数:

param (str | Param[T])

返回类型:

Any | T

getParam(paramName)

按名称获取参数。

参数:

paramName (str)

返回类型:

Param

getPredictionCol()

获取 predictionCol 的值或其默认值。

返回类型:

str

getValidationIndicatorCol()

获取 validationIndicatorCol 的值或其默认值。

返回类型:

str

getWeightCol()

获取 weightCol 的值或其默认值。

返回类型:

str

hasDefault(param)

检查参数是否具有默认值。

参数:

param (str | Param[Any])

返回类型:

bool

hasParam(paramName)

测试此实例是否包含具有给定(字符串)名称的参数。

参数:

paramName (str)

返回类型:

bool

isDefined(param)

检查参数是否由用户显式设置或是否具有默认值。

参数:

param (str | Param[Any])

返回类型:

bool

isSet(param)

检查参数是否由用户显式设置。

参数:

param (str | Param[Any])

返回类型:

bool

classmethod load(path)

从输入路径读取 ML 实例,这是 read().load(path) 的快捷方式。

参数:

path (str)

返回类型:

RL

property params: List[Param]

返回按名称排序的所有参数。默认实现使用 dir() 获取类型为 Param 的所有属性。

classmethod read()

返回用于加载估计器的读取器。

返回类型:

SparkXGBReader

save(path)

将此 ML 实例保存到给定路径,这是 'write().save(path)' 的快捷方式。

参数:

path (str)

返回类型:

set(param, value)

在嵌入的参数映射中设置参数。

参数:
返回类型:

setParams(**kwargs)

为估计器设置参数。

参数:

kwargs (Any)

返回类型:

set_coll_cfg(value)

设置集合配置

参数:

value (Config)

返回类型:

_SparkXGBParams

set_device(value)

设置设备,可选值:cpu, cuda, gpu

参数:

value (str)

返回类型:

_SparkXGBParams

uid

对象的唯一 ID。

write()

返回用于保存估计器的写入器。

返回类型:

SparkXGBWriter

class xgboost.spark.SparkXGBRankerModel(xgb_sklearn_model=None, training_summary=None)

基类: _SparkXGBModel

xgboost.spark.SparkXGBRanker.fit() 返回的模型

注意

此 API 是实验性的。

参数:
  • xgb_sklearn_model (XGBModel | None)

  • training_summary (XGBoostTrainingSummary | None)

clear(param)

如果已显式设置,则从参数映射中清除参数。

参数:

param (Param)

返回类型:

copy(extra=None)

创建此实例的副本,具有相同的 uid 和一些额外参数。默认实现使用 copy.copy() 创建浅层副本,然后复制嵌入参数和额外参数并返回副本。如果默认方法不足,子类应覆盖此方法。

参数:
  • extra (dict, optional) – 复制到新实例的额外参数

  • self (P)

返回:

此实例的副本

返回类型:

参数

explainParam(param)

解释单个参数并以字符串形式返回其名称、文档以及可选的默认值和用户提供的值。

参数:

param (str | Param)

返回类型:

str

explainParams()

返回所有参数的文档以及其可选的默认值和用户提供的值。

返回类型:

str

extractParamMap(extra=None)

提取嵌入的默认参数值和用户提供的值,然后将其与输入中的额外值合并到平面参数映射中,如果存在冲突,则使用后者的值,即排序如下:默认参数值 < 用户提供的值 < 额外值。

参数:

extra (dict, optional) – 额外参数值

返回:

合并的参数映射

返回类型:

dict

getFeaturesCol()

获取 featuresCol 的值或其默认值。

返回类型:

str

getLabelCol()

获取 labelCol 的值或其默认值。

返回类型:

str

getOrDefault(param)

获取用户提供的参数映射中某个参数的值或其默认值。如果两者都未设置,则引发错误。

参数:

param (str | Param[T])

返回类型:

Any | T

getParam(paramName)

按名称获取参数。

参数:

paramName (str)

返回类型:

Param

getPredictionCol()

获取 predictionCol 的值或其默认值。

返回类型:

str

getValidationIndicatorCol()

获取 validationIndicatorCol 的值或其默认值。

返回类型:

str

getWeightCol()

获取 weightCol 的值或其默认值。

返回类型:

str

get_booster()

返回 xgboost.core.Booster 实例。

返回类型:

Booster

get_feature_importances(importance_type='weight')

获取每个特征的特征重要性。重要性类型可以定义为

  • ‘weight’: 在所有树中特征被用于分割数据的次数。

  • ‘gain’: 特征在所有分割中获得的平均增益。

  • ‘cover’: 特征在所有分割中覆盖的平均样本数(覆盖度)。

  • ‘total_gain’: 特征在所有分割中获得的总增益。

  • ‘total_cover’: 特征在所有分割中覆盖的总样本数(覆盖度)。

参数:

importance_type (str, default 'weight') – 上面定义的一种重要性类型。

返回类型:

Dict[str, float | List[float]]

hasDefault(param)

检查参数是否具有默认值。

参数:

param (str | Param[Any])

返回类型:

bool

hasParam(paramName)

测试此实例是否包含具有给定(字符串)名称的参数。

参数:

paramName (str)

返回类型:

bool

isDefined(param)

检查参数是否由用户显式设置或是否具有默认值。

参数:

param (str | Param[Any])

返回类型:

bool

isSet(param)

检查参数是否由用户显式设置。

参数:

param (str | Param[Any])

返回类型:

bool

classmethod load(path)

从输入路径读取 ML 实例,这是 read().load(path) 的快捷方式。

参数:

path (str)

返回类型:

RL

property params: List[Param]

返回按名称排序的所有参数。默认实现使用 dir() 获取类型为 Param 的所有属性。

classmethod read()

返回用于加载模型的读取器。

返回类型:

SparkXGBModelReader

save(path)

将此 ML 实例保存到给定路径,这是 'write().save(path)' 的快捷方式。

参数:

path (str)

返回类型:

set(param, value)

在嵌入的参数映射中设置参数。

参数:
返回类型:

set_coll_cfg(value)

设置集合配置

参数:

value (Config)

返回类型:

_SparkXGBParams

set_device(value)

设置设备,可选值:cpu, cuda, gpu

参数:

value (str)

返回类型:

_SparkXGBParams

transform(dataset, params=None)

使用可选参数转换输入数据集。

在 1.3.0 版本中新增。

参数:
返回:

转换后的数据集

返回类型:

pyspark.sql.DataFrame

uid

对象的唯一 ID。

write()

返回用于保存模型的写入器。

返回类型:

SparkXGBModelWriter

集合

XGBoost 集合通信相关的 API。

class xgboost.collective.Config(retry=None, timeout=None, tracker_host_ip=None, tracker_port=None, tracker_timeout=None)

通信器上下文的用户配置。这用于更轻松地与分布式框架集成。集合模块的用户可以直接将参数传递给跟踪器和通信器。

自版本 3.0 添加。

参数:
  • retry (int | None)

  • timeout (int | None)

  • tracker_host_ip (str | None)

  • tracker_port (int | None)

  • tracker_timeout (int | None)

retry
类型:

参见 init() 中的 dmlc_retry

timeout

参见 init() 中的 dmlc_timeout。这仅用于通信器,不用于跟踪器。它们是不同的参数,因为跟踪器的超时仅限制启动和完成通信组的时间,而通信器的超时限制集合操作所用的时间。

类型:

int | None

tracker_host_ip
类型:

参见 RabitTracker

tracker_port
类型:

参见 RabitTracker

tracker_timeout
类型:

参见 RabitTracker

xgboost.collective.init(**args)

使用参数初始化集合库。

参数:

args (int | str | None) –

表示参数及其值的关键字参数。

接受的参数
  • dmlc_communicator: 通信器类型。 * rabit: 使用 Rabit。如果未指定类型,则为默认值。 * federated: 使用 gRPC 接口进行联邦学习。

仅适用于 Rabit 通信器
  • dmlc_tracker_uri: 跟踪器的主机名。

  • dmlc_tracker_port: 跟踪器的端口号。

  • dmlc_task_id: 当前任务的 ID,可用于获取确定性的

  • dmlc_retry: 处理网络错误时的重试次数。

  • dmlc_timeout: 超时时间(秒)。

  • dmlc_nccl_path: 用于加载 (dlopen) nccl 以进行基于 GPU 的通信的路径。

仅适用于联邦通信器
  • federated_server_address: 联邦服务器地址。

  • federated_world_size: 联邦工作器数量。

  • federated_rank: 当前工作器的等级。

  • federated_server_cert: 服务器证书文件路径。仅在 SSL 模式下需要。

  • federated_client_key: 客户端密钥文件路径。仅在 SSL 模式下需要。

  • federated_client_cert: 客户端证书文件路径。仅在 SSL 模式下需要。

环境变量使用大写,运行时配置使用小写。

返回类型:

用于 XGBoost 集合的跟踪器。

class xgboost.tracker.RabitTracker(n_workers, host_ip, port=0, *, sortby='host', timeout=0)

用于 XGBoost 中集合的跟踪器,充当工作器之间的协调器。

参数:
  • n_workers (int) – 通信组中的工作器总数。

  • host_ip (str | None) – 跟踪器节点的 IP 地址。XGBoost 可以尝试通过套接字探测猜测一个地址,但最好是显式传递一个地址。

  • port (int) – 此跟踪器应监听的端口。XGBoost 可以从操作系统查询可用端口,此配置对于受限网络环境很有用。

  • sortby (str) –

    如何对工作器进行排序以分配等级。默认值为 host,但用户可以通过 init() 的参数设置 DMLC_TASK_ID,并通过按任务名称排序来获得确定性的等级分配。可用选项有:

    • host

    • task

  • timeout (int) –

    构建(引导)和关闭通信组的超时时间,不适用于通信组启动并正常运行时。

    超时值应考虑数据加载和预处理的时间,这可能由于延迟执行而发生。默认情况下,跟踪器没有超时设置,以避免过早中止。

    wait_for() 方法有一个不同的超时参数,即使跟踪器仍在被使用,也可以停止它。达到超时时将引发 ValueError。

示例

from xgboost.tracker import RabitTracker
from xgboost import collective as coll

tracker = RabitTracker(host_ip="127.0.0.1", n_workers=2)
tracker.start()

with coll.CommunicatorContext(**tracker.worker_args()):
    ret = coll.broadcast("msg", 0)
    assert str(ret) == "msg"