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]) – 表示参数及其值的关键字参数

返回类型:

None

示例

import xgboost as xgb

# Show all messages, including ones pertaining to debugging
xgb.set_config(verbosity=2)

# Get current value of global configuration
# This is a dict containing all parameters in the global configuration,
# including 'verbosity'
config = xgb.get_config()
assert config['verbosity'] == 2

# Example of using the context manager xgb.config_context().
# The context manager will restore the previous value of the global
# configuration upon exiting.
with xgb.config_context(verbosity=0):
    # Suppress warning caused by model generated with XGBoost version < 1.0.0
    bst = xgb.Booster(model_file='./old_model.bin')
assert xgb.get_config()['verbosity'] == 2  # old value restored

也支持嵌套配置上下文

示例

with xgb.config_context(verbosity=3):
    assert xgb.get_config()["verbosity"] == 3
    with xgb.config_context(verbosity=2):
        assert xgb.get_config()["verbosity"] == 2

xgb.set_config(verbosity=2)
assert xgb.get_config()["verbosity"] == 2
with xgb.config_context(verbosity=3):
    assert xgb.get_config()["verbosity"] == 3
xgboost.get_config()

获取全局配置的当前值。

全局配置由一组可以在全局作用域中应用的参数组成。有关全局配置支持的参数的完整列表,请参阅全局配置

版本 1.4.0 中新增。

返回:

args – 全局参数及其值的列表

返回类型:

Dict[str, Any]

示例

import xgboost as xgb

# Show all messages, including ones pertaining to debugging
xgb.set_config(verbosity=2)

# Get current value of global configuration
# This is a dict containing all parameters in the global configuration,
# including 'verbosity'
config = xgb.get_config()
assert config['verbosity'] == 2

# Example of using the context manager xgb.config_context().
# The context manager will restore the previous value of the global
# configuration upon exiting.
with xgb.config_context(verbosity=0):
    # Suppress warning caused by model generated with XGBoost version < 1.0.0
    bst = xgb.Booster(model_file='./old_model.bin')
assert xgb.get_config()['verbosity'] == 2  # old value restored

也支持嵌套配置上下文

示例

with xgb.config_context(verbosity=3):
    assert xgb.get_config()["verbosity"] == 3
    with xgb.config_context(verbosity=2):
        assert xgb.get_config()["verbosity"] == 2

xgb.set_config(verbosity=2)
assert xgb.get_config()["verbosity"] == 2
with xgb.config_context(verbosity=3):
    assert xgb.get_config()["verbosity"] == 3
xgboost.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 的数据源。有关支持的输入类型列表,请参阅标记

    请注意,如果传递迭代器,它将数据缓存到磁盘,并请注意,像 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] | Categories | None) –

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

    否则,可以传递一个列表,其长度与 data 中的列数相同,并具有以下可能值

    • “c”,表示分类列。

    • “q”,表示数值列。

    • “int”,表示整数列。

    • “i”,表示布尔列。

    请注意,虽然分类类型在模型拟合目的方面与其他类型不同,但其他类型不影响生成的模型,但在特征重要性等其他功能中会产生影响。

    对于分类特征,假定用户已预处理并编码了输入。可以使用 sklearn.preprocessing.OrdinalEncoder 或 pandas dataframe .cat.codes 方法进行编码。当用户想要指定分类特征而无需构造 DataFrame 作为输入时,这很有用。

    版本 3.1.0 中新增。

    或者,用户可以传递先前训练返回的 Categories 对象作为重新编码的参考。可以使用先前训练的 DMatrix 或 Booster 的 get_categories() 方法获取参考。此功能是实验性的。

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

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

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

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

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

  • feature_weights (Any | None) – 设置特征权重以进行列采样。

  • enable_categorical (bool) –

    在 1.3.0 版本中添加。

    注意

    此参数是实验性的

    对分类特征进行专业化的实验性支持。有关更多信息,请参阅分类数据

    如果传递 True 并且 data 是一个数据框(来自 Pandas、Modin、polars 和 cuDF 等支持的库),则 DMatrix 会识别分类列并自动设置 feature_types 参数。如果 data 不是数据框,则忽略此参数。

    如果传递 False 并且 data 是一个带有分类列的数据框,则会引发错误。

    当输入是迭代器时,有关一致性要求,请参阅 DataIter 中的注意事项。

    版本 3.1.0 中已更改。

    当输入是 DataFrame 时,XGBoost 可以记住类别的编码。

  • data_split_mode (DataSplitMode)

data_split_mode()

获取 DMatrix 的数据分割模式。

版本 2.1.0 中新增。

返回类型:

DataSplitMode

property feature_names: Sequence[str] | None

特征的标签(列标签)。

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

property feature_types: Sequence[str] | None

特征的类型(列类型)。

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

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

get_base_margin()

获取 DMatrix 的基准边距。

返回类型:

base_margin

get_categories(export_to_arrow=False)

获取数据集中的类别。

版本 3.1.0 中新增。

警告

此函数是实验性的。

参数:

export_to_arrow (bool) – 返回的容器将包含类别的 pyarrow 数组列表。有关更多信息,请参阅to_arrow()

返回类型:

类别

get_data()

将 DMatrix 的预测变量作为 CSR 矩阵获取。此 getter 主要用于测试目的。如果它是量化 DMatrix,则返回量化值而不是输入值。

在 1.7.0 版本中添加。

返回类型:

csr_matrix

get_float_info(field)

从 DMatrix 获取浮点属性。

参数:

field (str) – 信息字段名称

返回:

info – 一个包含数据浮点信息的 numpy 数组

返回类型:

数组

get_group()

获取 DMatrix 的组。

返回类型:

get_label()

获取 DMatrix 的标签。

返回:

label

返回类型:

数组

get_quantile_cut()

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

2.0.0 版本新增。

返回类型:

Tuple[ndarray, ndarray]

get_uint_info(field)

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

参数:

field (str) – 信息字段名称

返回:

info – 一个包含数据无符号整数信息的 numpy 数组

返回类型:

数组

get_weight()

获取 DMatrix 的权重。

返回:

weight

返回类型:

数组

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 (stringos.PathLike) – 输出缓冲区文件的名称。

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

返回类型:

None

set_base_margin(margin)

设置 Booster 的基准边距以开始。

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

参数:

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

返回类型:

None

set_float_info(field, data)

将浮点类型属性设置为 DMatrix。

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

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

返回类型:

None

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

用于 numpy 2d 数组输入

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

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

返回类型:

None

set_group(group)

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

参数:

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

返回类型:

None

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

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

参数:
  • 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)

返回类型:

None

set_label(label)

设置 dmatrix 的标签

参数:

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

返回类型:

None

set_uint_info(field, data)

将 uint 类型属性设置为 DMatrix。

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

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

返回类型:

None

set_weight(weight)

设置每个实例的权重。

参数:

weight (array like) –

每个数据点的权重

注意

对于排序任务,权重是按组的。

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

返回类型:

None

slice(rindex, allow_groups=False)

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

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

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

返回:

一个仅包含所选索引的新 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 的情况下将 QuantileDMatrix 用作验证/测试数据集,因为量化过程中可能会丢失某些信息。

在 1.7.0 版本中添加。

示例

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

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

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

  • max_quantile_batches (int | None) –

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

    3.0.0 版本新增。

    警告

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

  • data (Any) –

    DMatrix 的数据源。有关支持的输入类型列表,请参阅标记

    请注意,如果传递迭代器,它将数据缓存到磁盘,并请注意,像 label 这样的字段将从迭代器的多次调用中在内存中串联起来。

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

  • weight (Any | None) –

    每个实例的权重。

    注意

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

  • 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 作为输入时,这很有用。

    版本 3.1.0 中新增。

    或者,用户可以传递先前训练返回的 Categories 对象作为重新编码的参考。可以使用先前训练的 DMatrix 或 Booster 的 get_categories() 方法获取参考。此功能是实验性的。

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

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

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

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

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

  • feature_weights (Any | None) – 设置特征权重以进行列采样。

  • enable_categorical (bool) –

    在 1.3.0 版本中添加。

    注意

    此参数是实验性的

    对分类特征进行专业化的实验性支持。有关更多信息,请参阅分类数据

    如果传递 True 并且 data 是一个数据框(来自 Pandas、Modin、polars 和 cuDF 等支持的库),则 DMatrix 会识别分类列并自动设置 feature_types 参数。如果 data 不是数据框,则忽略此参数。

    如果传递 False 并且 data 是一个带有分类列的数据框,则会引发错误。

    当输入是迭代器时,有关一致性要求,请参阅 DataIter 中的注意事项。

    版本 3.1.0 中已更改。

    当输入是 DataFrame 时,XGBoost 可以记住类别的编码。

  • data_split_mode (DataSplitMode)

data_split_mode()

获取 DMatrix 的数据分割模式。

版本 2.1.0 中新增。

返回类型:

DataSplitMode

property feature_names: Sequence[str] | None

特征的标签(列标签)。

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

property feature_types: Sequence[str] | None

特征的类型(列类型)。

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

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

get_base_margin()

获取 DMatrix 的基准边距。

返回类型:

base_margin

get_categories(export_to_arrow=False)

获取数据集中的类别。

版本 3.1.0 中新增。

警告

此函数是实验性的。

参数:

export_to_arrow (bool) – 返回的容器将包含类别的 pyarrow 数组列表。有关更多信息,请参阅to_arrow()

返回类型:

类别

get_data()

将 DMatrix 的预测变量作为 CSR 矩阵获取。此 getter 主要用于测试目的。如果它是量化 DMatrix,则返回量化值而不是输入值。

在 1.7.0 版本中添加。

返回类型:

csr_matrix

get_float_info(field)

从 DMatrix 获取浮点属性。

参数:

field (str) – 信息字段名称

返回:

info – 一个包含数据浮点信息的 numpy 数组

返回类型:

数组

get_group()

获取 DMatrix 的组。

返回类型:

get_label()

获取 DMatrix 的标签。

返回:

label

返回类型:

数组

get_quantile_cut()

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

2.0.0 版本新增。

返回类型:

Tuple[ndarray, ndarray]

get_uint_info(field)

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

参数:

field (str) – 信息字段名称

返回:

info – 一个包含数据无符号整数信息的 numpy 数组

返回类型:

数组

get_weight()

获取 DMatrix 的权重。

返回:

weight

返回类型:

数组

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 (stringos.PathLike) – 输出缓冲区文件的名称。

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

返回类型:

None

set_base_margin(margin)

设置 Booster 的基准边距以开始。

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

参数:

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

返回类型:

None

set_float_info(field, data)

将浮点类型属性设置为 DMatrix。

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

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

返回类型:

None

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

用于 numpy 2d 数组输入

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

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

返回类型:

None

set_group(group)

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

参数:

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

返回类型:

None

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

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

参数:
  • 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)

返回类型:

None

set_label(label)

设置 dmatrix 的标签

参数:

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

返回类型:

None

set_uint_info(field, data)

将 uint 类型属性设置为 DMatrix。

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

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

返回类型:

None

set_weight(weight)

设置每个实例的权重。

参数:

weight (array like) –

每个数据点的权重

注意

对于排序任务,权重是按组的。

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

返回类型:

None

slice(rindex, allow_groups=False)

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

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

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

返回:

一个仅包含所选索引的新 DMatrix。

返回类型:

res

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

基类:DMatrix, _RefMixIn

QuantileDMatrix 的外部内存版本。

有关说明和使用示例,请参阅使用 XGBoost 外部内存版本,有关参数文档,请参阅QuantileDMatrix

警告

这是一个实验性功能,可能会发生更改。

3.0.0 版本新增。

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

  • max_quantile_batches (int | None) – 请参阅QuantileDMatrix

  • cache_host_ratio (float | None) –

    版本 3.1.0 中新增。

    GPU 实现使用。对于基于 GPU 的输入,XGBoost 可以将缓存分为主机缓存和设备缓存,以减少数据传输开销。此参数指定了主机缓存的大小与整个缓存大小的比例:\(host / (host + device)\)

    有关更多信息,请参阅自适应缓存

  • missing (float | None)

  • nthread (int | None)

  • max_bin (int | None)

  • ref (DMatrix | None)

  • enable_categorical (bool)

data_split_mode()

获取 DMatrix 的数据分割模式。

版本 2.1.0 中新增。

返回类型:

DataSplitMode

property feature_names: Sequence[str] | None

特征的标签(列标签)。

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

property feature_types: Sequence[str] | None

特征的类型(列类型)。

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

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

get_base_margin()

获取 DMatrix 的基准边距。

返回类型:

base_margin

get_categories(export_to_arrow=False)

获取数据集中的类别。

版本 3.1.0 中新增。

警告

此函数是实验性的。

参数:

export_to_arrow (bool) – 返回的容器将包含类别的 pyarrow 数组列表。有关更多信息,请参阅to_arrow()

返回类型:

类别

get_data()

将 DMatrix 的预测变量作为 CSR 矩阵获取。此 getter 主要用于测试目的。如果它是量化 DMatrix,则返回量化值而不是输入值。

在 1.7.0 版本中添加。

返回类型:

csr_matrix

get_float_info(field)

从 DMatrix 获取浮点属性。

参数:

field (str) – 信息字段名称

返回:

info – 一个包含数据浮点信息的 numpy 数组

返回类型:

数组

get_group()

获取 DMatrix 的组。

返回类型:

get_label()

获取 DMatrix 的标签。

返回:

label

返回类型:

数组

get_quantile_cut()

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

2.0.0 版本新增。

返回类型:

Tuple[ndarray, ndarray]

get_uint_info(field)

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

参数:

field (str) – 信息字段名称

返回:

info – 一个包含数据无符号整数信息的 numpy 数组

返回类型:

数组

get_weight()

获取 DMatrix 的权重。

返回:

weight

返回类型:

数组

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 (stringos.PathLike) – 输出缓冲区文件的名称。

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

返回类型:

None

set_base_margin(margin)

设置 Booster 的基准边距以开始。

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

参数:

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

返回类型:

None

set_float_info(field, data)

将浮点类型属性设置为 DMatrix。

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

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

返回类型:

None

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

用于 numpy 2d 数组输入

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

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

返回类型:

None

set_group(group)

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

参数:

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

返回类型:

None

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

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

参数:
  • 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)

返回类型:

None

set_label(label)

设置 dmatrix 的标签

参数:

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

返回类型:

None

set_uint_info(field, data)

将 uint 类型属性设置为 DMatrix。

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

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

返回类型:

None

set_weight(weight)

设置每个实例的权重。

参数:

weight (array like) –

每个数据点的权重

注意

对于排序任务,权重是按组的。

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

返回类型:

None

slice(rindex, allow_groups=False)

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

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

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

返回:

一个仅包含所选索引的新 DMatrix。

返回类型:

res

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

基类:object

XGBoost 的 Booster。

Booster 是 xgboost 的模型,其中包含用于训练、预测和评估的低级例程。

参数:
__getitem__(val)

获取树模型的一个切片。诸如 best_iterationbest_score 等属性在生成的 Booster 中已被移除。

在 1.3.0 版本中添加。

参数:

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

返回类型:

Booster

attr(key)

从 Booster 获取属性字符串。

参数:

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

返回:

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

返回类型:

value

attributes()

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

返回:

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

返回类型:

属性名称: 字符串属性值 对的字典。

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)

返回类型:

None

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’。

返回类型:

None

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

在 mat 上评估模型。

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

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

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

返回:

result – 评估结果字符串。

返回类型:

字符串

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

评估一组数据。

参数:
返回:

result – 评估结果字符串。

返回类型:

字符串

property feature_names: Sequence[str] | None

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

property feature_types: Sequence[str] | None

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

get_categories(export_to_arrow=False)

DMatrix.get_categories() 相同的方法。

参数:

export_to_arrow (bool)

返回类型:

类别

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 的列表,否则它们是标量。

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

返回类型:

Dict[str, float | List[float]]

获取特征的拆分值直方图。

feature (str) – 特征的名称。

参数:
  • bin – 箱的数量上限。当 bins == None 或 bins > n_unique 时,箱的数量等于唯一拆分值的数量 n_unique。

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

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

  • bins (int | None)

  • 指定特征使用的拆分值的直方图。

返回:

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

  • ndarray | PdDataFrame

返回类型:

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

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

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

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

注意

版本 1.1.0 中添加。

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

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

data (Any) – 输入数据。

参数:
  • iteration_range (Tuple[int | integer, int | integer]) – 有关详细信息,请参阅 predict()

  • predict_type (str) –

  • value 输出模型预测值。

    • margin 输出原始未转换的 margin 值。

    • missing (float) – 有关详细信息,请参阅 xgboost.DMatrix

  • validate_features (bool) – 有关详细信息,请参阅 xgboost.Booster.predict()

  • base_margin (Any) –

  • 有关详细信息,请参阅 xgboost.DMatrix

    strict_shape (bool) –

    版本 1.4.0 中新增。

  • 有关详细信息,请参阅 xgboost.Booster.predict()

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

    版本 1.4.0 中新增。

返回:

numpy.ndarray/cupy.ndarray

返回类型:

load_config(config)

加载由 save_config 返回的配置。

版本 1.0.0 中添加。

config (str)

参数:

load_model(fname)

返回类型:

None

从文件或字节数组加载模型。

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

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

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

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

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

num_boosted_rounds()

返回类型:

None

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

num_features()

返回类型:

int

Booster 中的特征数量。

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

返回类型:

int

用数据进行预测。除非指定了 iteration_range,否则将使用完整的模型,这意味着用户必须通过切片模型或使用 best_iteration 属性来获取来自早期停止的最佳模型的预测。

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

注意

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

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

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

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

  • approx_contribs (bool) – 近似每个特征的贡献。在 pred_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。

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

    config (str)

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

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

    版本 1.4.0 中新增。

  • 有关详细信息,请参阅 xgboost.Booster.predict()

    numpy 数组

    版本 1.4.0 中新增。

返回:

预测

返回类型:

reset()

save_config()

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

3.0.0 版本新增。

返回类型:

Booster

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

save_model(fname)

config (str)

返回类型:

字符串

将模型保存到文件。

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

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

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

save_raw(raw_format='ubj')

返回类型:

None

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

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

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

参数:

模型的内存缓冲区表示。

返回类型:

set_attr(**kwargs)

设置 Booster 的属性。

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

参数:

set_param(params, value=None)

返回类型:

None

将参数设置到 Booster 中。

params (Dict | Iterable[Tuple[str, Any]] | str) – 键值对列表、键到值的字典或简单的字符串键。

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

  • trees_to_dataframe(fmap='')

返回类型:

None

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

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

PdDataFrame

参数:

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

返回类型:

update(dtrain, iteration, fobj=None)

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

dtrain (DMatrix) – 训练数据。

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

  • fobj (Callable[[ndarray, DMatrix], Tuple[ndarray, ndarray]] | None) – 自定义目标函数。

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

返回类型:

None

Bases: ABC

用户定义数据迭代器的接口。该迭代器通过 QuantileDMatrix 进行分布式训练,并通过 DMatrixExtMemQuantileDMatrix 支持外部内存。

大多数情况下,用户不需要直接与此类进行交互。

注意

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

注意

当每个批次的输入是 DataFrame 时,我们假设类别在所有批次中都经过了一致的编码。例如,对于两个批次的两个 DataFrame,这是无效的

import pandas as pd

x0 = pd.DataFrame({"a": [0, 1]}, dtype="category")
x1 = pd.DataFrame({"a": [1, 2]}, dtype="category")

这是无效的,因为 x0 的类别是 [0, 1],而 x2 的类别是 [1, 2]。它们应该共享相同的类别集和编码。

import numpy as np

categories = np.array([0, 1, 2])
x0["a"] = pd.Categorical.from_codes(
    codes=np.array([0, 1]), categories=categories
)
x1["a"] = pd.Categorical.from_codes(
    codes=np.array([1, 2]), categories=categories
)

您可以在预处理步骤中确保一致的编码,并注意数据以保留编码的方式存储时进行分块。

参数:
  • cache_prefix (str | None) –

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

    注意,使用此类进行外存操作 **会将数据缓存在磁盘上**,路径为此处指定。

  • release_data (bool) – 迭代期间迭代器是否应释放数据。如果数据转换(将数据转换为 np.float32 类型)内存密集,请将其设置为 True。否则,如果转换计算密集,我们可以保留缓存。

  • on_host (bool) –

    在使用具有外存的 GPU 时,数据是否应缓存到主机内存而不是文件系统中。当设置为 True(默认值)时,“外存”是 CPU(主机)内存。有关更多信息,请参阅 使用 XGBoost 外存版本

    3.0.0 版本新增。

    警告

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

  • min_cache_page_bytes (int | None) –

    每个缓存页面的最小字节数。仅用于 GPU 上的外存 ExtMemQuantileDMatrix。在使用外存的 GPU 版本时,如果数据缓存到主机内存中,XGBoost 可以内部连接页面以增加 GPU 的批量大小。默认页面大小约为总设备内存的 1/16。用户可以根据实际硬件和数据集手动设置该值。设置为 0 可禁用页面连接。

    3.0.0 版本新增。

    警告

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

get_callbacks(enable_categorical)

获取用于 C 语言迭代的回调函数。这是一个内部函数。

参数:

enable_categorical (bool)

返回类型:

Tuple[Callable, Callable]

abstract next(input_data)

设置下一批数据。

参数:

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

返回类型:

如果已无更多批次,则返回 False,否则返回 True。

property proxy: _ProxyDMatrix

DMatrix 代理的句柄。

reraise()

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

返回类型:

None

abstract reset()

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

返回类型:

None

class xgboost.core.Categories(handle, arrow_arrays)

DMatrix 和 Booster 返回的类别的内部存储类。此类设计为不透明的。XGBoost 将其专门用于重新编码分类数据。

类别与 booster 对象一起保存。因此,用户不需要保留此类以进行重新编码。如果希望以稳定的格式保存类别,请使用 booster 模型 IO。

版本 3.1.0 中新增。

警告

此类是内部使用的。

Xy = xgboost.QuantileDMatrix(X, y, enable_categorical=True)
booster = xgboost.train({}, Xy)

categories = booster.get_categories() # Get categories

# Use categories as a reference for re-coding
Xy_new = xgboost.QuantileDMatrix(
    X_new, y_new, feature_types=categories, enable_categorical=True, ref=Xy
)

# Categories will be part of the `model.json`.
booster.save_model("model.json")
参数:

学习 API

包含训练例程的训练库。

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

用给定参数训练一个 booster。

参数:
  • 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 中至少有一个项。

    该方法返回最后一轮的模型(而非最佳模型)。如果需要最佳模型,请使用自定义回调 EarlyStopping模型切片。如果 evals 中有多个项,将使用最后一项进行早期停止。

    如果 params 中给出的 eval_metric 参数有多个指标,则将使用最后一个指标进行早期停止。

    如果发生早期停止,模型将有两个附加字段:bst.best_scorebst.best_iteration

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

    此字典存储了监视表中所有项的评估结果。

    例如:当监视表包含 [(dtest,'eval'), (dtrain,'train')] 和参数 ('eval_metric': 'logloss') 时,evals_result 返回

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

  • verbose_eval (bool | int | None) –

    需要 evals 中至少有一个项。

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

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

    例如:使用 verbose_eval=4 并且 evals 中至少有一个项,每 4 个提升阶段打印一次评估指标,而不是每个阶段都打印。

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

  • callbacks (Sequence[TrainingCallback] | None) –

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

    注意

    callback 中的状态在训练期间不会保留,这意味着 callback 对象在重新初始化或深度复制之前无法用于多个训练会话。

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

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

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

返回:

Booster

返回类型:

训练好的 booster 模型。

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

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

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

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

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

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

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

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

  • metrics (stringlist of strings) – CV 中要监视的评估指标。

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

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

  • early_stopping_rounds (int) – 启用早期停止。交叉验证指标(在 CV 折上的平均验证指标)需要在每 early_stopping_rounds 轮中至少改进一次才能继续训练。评估历史中的最后一项将代表最佳迭代。如果 params 中给出的 eval_metric 参数有多个指标,则将使用最后一个指标进行早期停止。

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

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

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

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

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

  • callbacks (Sequence[TrainingCallback] | None) –

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

    注意

    callback 中的状态在训练期间不会保留,这意味着 callback 对象在重新初始化或深度复制之前无法用于多个训练会话。

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

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

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

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

返回:

评估历史

返回类型:

list(string)

Scikit-Learn API

XGBoost 的 Scikit-Learn Wrapper 接口。

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

Bases: RegressorMixin, XGBModel

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

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

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

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

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

  • 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)。

  • 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 (Union[float, List[float], NoneType]) – 所有实例的初始预测分数,全局偏差。

  • 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”之一。

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

  • 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 是否应使用独热编码拆分进行分类数据的阈值。当类别数量小于阈值时,将选择独热编码,否则类别将被划分为子节点。此外,需要设置 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[Union[str, Callable]], Callable, NoneType]) –

    在版本 1.6.0 中添加。

    用于监视训练结果和早期停止的指标。它可以是字符串或字符串列表,作为 XGBoost 中预定义指标的名称(参见 XGBoost Parameters),sklearn.metrics 中的指标之一,或任何其他用户定义的、类似于 sklearn.metrics 的指标。

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

    与 scikit-learn 中常用的 scoring 参数不同,当提供可调用对象时,它被假定为一个成本函数,并且默认情况下 XGBoost 在早期停止时会最小化结果。

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

    有关详细信息,请参阅 Custom Objective and Evaluation 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 中添加。

    • 启用早期停止。在 fit() 中的 eval_set 至少有一个项时,验证指标需要在每 early_stopping_rounds 轮中至少改进一次才能继续训练。

    • 如果发生提前停止,模型将有两个附加属性:best_scorebest_iteration。这些属性由 predict()apply() 方法使用,以在推理过程中确定最佳树的数量。如果用户想要访问完整的模型(包括在提前停止后构建的树),他们可以在这些推理方法中指定 iteration_range。此外,其他实用工具,如模型绘图,也可以使用整个模型。

    • 如果您希望在 best_iteration 之后丢弃树,可以考虑使用回调函数 xgboost.callback.EarlyStopping

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

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

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

    注意

    callback 中的状态在训练期间不会保留,这意味着 callback 对象在重新初始化或深度复制之前无法用于多个训练会话。

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

  • 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: 形状为 [n_samples] 的 array_like

    目标值

    y_pred: 形状为 [n_samples] 的 array_like

    预测值

    sample_weight

    可选的样本权重。

    grad: 形状为 [n_samples] 的 array_like

    每个样本点的梯度值。

    hess: 形状为 [n_samples] 的 array_like

    每个样本点的二阶导数(Hessian)值

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

apply(X, iteration_range=None)

为每个样本返回每棵树的预测叶。如果模型是使用提前停止训练的,那么 best_iteration 会被自动使用。

参数:
返回:

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

返回类型:

array_like,形状为 [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) –

    输入特征矩阵。有关支持的类型列表,请参阅 标记

    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 且使用了评估集,则每次提升阶段在标准输出中打印在验证集上测量的评估指标。如果 verbose 是一个整数,则在每个 verbose 提升阶段打印评估指标。最后一个提升阶段 / 使用 early_stopping_rounds 找到的提升阶段也会被打印。

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

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

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

  • feature_weights (Any | None) –

    已弃用(自 3.0.0 版本起)。

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

返回类型:

XGBModel

get_booster()

获取此模型的底层 xgboost Booster。

如果尚未调用 fit,这将引发异常

返回:

booster

返回类型:

底层模型的 xgboost booster

get_metadata_routing()

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

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

返回:

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

返回类型:

MetadataRequest

get_num_boosting_rounds()

获取 xgboost 提升轮数。

返回类型:

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)

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

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

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

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

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

num_boosted_rounds()

返回类型:

None

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) – 用于预测的数据。有关支持的类型列表,请参阅 标记

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

  • training (bool) –

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

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

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

    版本 1.4.0 中新增。

返回类型:

预测

save_model(fname)

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

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

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

save_raw(raw_format='ubj')

返回类型:

None

score(X, y, sample_weight=None)

返回测试数据的决定系数

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

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

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

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

返回:

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

返回类型:

float

注释

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

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

配置是否应请求将元数据传递给 fit 方法。

请注意,当此估计器作为 元估计器 的子估计器使用,并且通过 enable_metadata_routing=True 启用了元数据路由时,此方法才相关(请参阅 sklearn.set_config())。请查阅 用户指南,了解路由机制的工作原理。

每个参数的选项是

  • True: 请求元数据,并在提供时将其传递给 fit。如果未提供元数据,则忽略此请求。

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

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

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

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

在 1.3 版本中添加。

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

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

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

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

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

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

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

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

  • self (XGBRegressor)

返回:

self – 更新后的对象。

返回类型:

对象

set_params(**params)

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

返回类型:

self

参数:

params (Any)

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

配置是否应请求将元数据传递给 predict 方法。

请注意,当此估计器作为 元估计器 的子估计器使用,并且通过 enable_metadata_routing=True 启用了元数据路由时,此方法才相关(请参阅 sklearn.set_config())。请查阅 用户指南,了解路由机制的工作原理。

每个参数的选项是

  • True: 请求元数据,并在提供时将其传递给 predict。如果未提供元数据,则忽略此请求。

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

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

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

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

在 1.3 版本中添加。

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

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

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

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

  • self (XGBRegressor)

返回:

self – 更新后的对象。

返回类型:

对象

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

配置是否应请求将元数据传递给 score 方法。

请注意,当此估计器作为 元估计器 的子估计器使用,并且通过 enable_metadata_routing=True 启用了元数据路由时,此方法才相关(请参阅 sklearn.set_config())。请查阅 用户指南,了解路由机制的工作原理。

每个参数的选项是

  • True: 请求元数据,并在提供时将其传递给 score。如果未提供元数据,则忽略此请求。

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

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

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

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

在 1.3 版本中添加。

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

  • self (XGBRegressor)

返回:

self – 更新后的对象。

返回类型:

对象

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

Bases: ClassifierMixin, XGBModel

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

参数:
  • n_estimators (Optional[int]) – 提升轮数。

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

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

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

  • 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)。

  • 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 (Union[float, List[float], NoneType]) – 所有实例的初始预测分数,全局偏差。

  • 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”之一。

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

  • 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 是否应使用独热编码拆分进行分类数据的阈值。当类别数量小于阈值时,将选择独热编码,否则类别将被划分为子节点。此外,需要设置 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[Union[str, Callable]], Callable, NoneType]) –

    在版本 1.6.0 中添加。

    用于监视训练结果和早期停止的指标。它可以是字符串或字符串列表,作为 XGBoost 中预定义指标的名称(参见 XGBoost Parameters),sklearn.metrics 中的指标之一,或任何其他用户定义的、类似于 sklearn.metrics 的指标。

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

    与 scikit-learn 中常用的 scoring 参数不同,当提供可调用对象时,它被假定为一个成本函数,并且默认情况下 XGBoost 在早期停止时会最小化结果。

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

    有关详细信息,请参阅 Custom Objective and Evaluation 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,通过 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: 形状为 [n_samples] 的 array_like

    目标值

    y_pred: 形状为 [n_samples] 的 array_like

    预测值

    sample_weight

    可选的样本权重。

    grad: 形状为 [n_samples] 的 array_like

    每个样本点的梯度值。

    hess: 形状为 [n_samples] 的 array_like

    每个样本点的二阶导数(Hessian)值

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

apply(X, iteration_range=None)

为每个样本返回每棵树的预测叶。如果模型是使用提前停止训练的,那么 best_iteration 会被自动使用。

参数:
返回:

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

返回类型:

array_like,形状为 [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) –

    输入特征矩阵。有关支持的类型列表,请参阅 标记

    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 且使用了评估集,则每次提升阶段在标准输出中打印在验证集上测量的评估指标。如果 verbose 是一个整数,则在每个 verbose 提升阶段打印评估指标。最后一个提升阶段 / 使用 early_stopping_rounds 找到的提升阶段也会被打印。

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

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

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

  • feature_weights (Any | None) –

    已弃用(自 3.0.0 版本起)。

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

返回类型:

XGBClassifier

get_booster()

获取此模型的底层 xgboost Booster。

如果尚未调用 fit,这将引发异常

返回:

booster

返回类型:

底层模型的 xgboost booster

get_metadata_routing()

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

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

返回:

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

返回类型:

MetadataRequest

get_num_boosting_rounds()

获取 xgboost 提升轮数。

返回类型:

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)

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

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

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

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

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

num_boosted_rounds()

返回类型:

None

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) – 用于预测的数据。有关支持的类型列表,请参阅 标记

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

  • training (bool) –

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

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

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

    版本 1.4.0 中新增。

返回类型:

预测

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

预测 X 中每个样本属于给定类的概率。如果模型是使用提前停止训练的,那么 best_iteration 会被自动使用。该估计器默认使用 inplace_predict,如果数据和估计器之间的设备不匹配,则回退到使用 DMatrix

注意

此函数仅对 gbtreedart 线程安全。

参数:
  • X (Any) – 特征矩阵。有关支持的类型列表,请参阅 标记

  • training (bool) –

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

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

返回:

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

返回类型:

预测

save_model(fname)

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

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

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

save_raw(raw_format='ubj')

返回类型:

None

score(X, y, sample_weight=None)

返回提供的数据和标签上的准确率

在多标签分类中,这是子集准确率,这是一个严格的指标,因为它要求正确预测每个样本的每个标签集。

参数:
  • X (array-like of shape (n_samples, n_features)) – 测试样本。

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

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

返回:

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 版本中添加。

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

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

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

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

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

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

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

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

  • self (XGBClassifier)

返回:

self – 更新后的对象。

返回类型:

对象

set_params(**params)

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

返回类型:

self

参数:

params (Any)

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

配置是否应请求将元数据传递给 predict_proba 方法。

请注意,当此估计器作为 元估计器 的子估计器使用,并且通过 enable_metadata_routing=True 启用了元数据路由时,此方法才相关(请参阅 sklearn.set_config())。请查阅 用户指南,了解路由机制的工作原理。

每个参数的选项是

  • True: 请求元数据,并在提供时将其传递给 predict_proba。如果未提供元数据,则忽略此请求。

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

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

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

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

在 1.3 版本中添加。

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

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

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

  • self (XGBClassifier)

返回:

self – 更新后的对象。

返回类型:

对象

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

配置是否应请求将元数据传递给 predict 方法。

请注意,当此估计器作为 元估计器 的子估计器使用,并且通过 enable_metadata_routing=True 启用了元数据路由时,此方法才相关(请参阅 sklearn.set_config())。请查阅 用户指南,了解路由机制的工作原理。

每个参数的选项是

  • True: 请求元数据,并在提供时将其传递给 predict。如果未提供元数据,则忽略此请求。

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

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

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

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

在 1.3 版本中添加。

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

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

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

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

  • self (XGBClassifier)

返回:

self – 更新后的对象。

返回类型:

对象

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

配置是否应请求将元数据传递给 score 方法。

请注意,当此估计器作为 元估计器 的子估计器使用,并且通过 enable_metadata_routing=True 启用了元数据路由时,此方法才相关(请参阅 sklearn.set_config())。请查阅 用户指南,了解路由机制的工作原理。

每个参数的选项是

  • True: 请求元数据,并在提供时将其传递给 score。如果未提供元数据,则忽略此请求。

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

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

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

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

在 1.3 版本中添加。

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

  • self (XGBClassifier)

返回:

self – 更新后的对象。

返回类型:

对象

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

Bases: XGBRankerMixIn, XGBModel

XGBoost 排序功能的 Scikit-learn API 实现。

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

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

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

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

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

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

  • 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)。

  • 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 (Union[float, List[float], NoneType]) – 所有实例的初始预测分数,全局偏差。

  • 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”之一。

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

  • 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 是否应使用独热编码拆分进行分类数据的阈值。当类别数量小于阈值时,将选择独热编码,否则类别将被划分为子节点。此外,需要设置 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[Union[str, Callable]], Callable, NoneType]) –

    在版本 1.6.0 中添加。

    用于监视训练结果和早期停止的指标。它可以是字符串或字符串列表,作为 XGBoost 中预定义指标的名称(参见 XGBoost Parameters),sklearn.metrics 中的指标之一,或任何其他用户定义的、类似于 sklearn.metrics 的指标。

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

    与 scikit-learn 中常用的 scoring 参数不同,当提供可调用对象时,它被假定为一个成本函数,并且默认情况下 XGBoost 在早期停止时会最小化结果。

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

    有关详细信息,请参阅 Custom Objective and Evaluation 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,通过 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,形状为 [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) –

    特征矩阵。有关支持的类型列表,请参阅 标记

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

    qid

    feat_0

    feat_1

    0

    \(x_{00}\)

    \(x_{01}\)

    1

    \(x_{10}\)

    \(x_{11}\)

    1

    \(x_{20}\)

    \(x_{21}\)

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

  • y (Any) – 标签

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

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

  • sample_weight (Any | None) –

    查询组权重

    注意

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

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

  • 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 且使用了评估集,则每次提升阶段在标准输出中打印在验证集上测量的评估指标。如果 verbose 是一个整数,则在每个 verbose 提升阶段打印评估指标。最后一个提升阶段 / 使用 early_stopping_rounds 找到的提升阶段也会被打印。

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

  • sample_weight_eval_set (Sequence[Any] | None) –

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

    注意

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

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

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

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

返回类型:

XGBRanker

get_booster()

获取此模型的底层 xgboost Booster。

如果尚未调用 fit,这将引发异常

返回:

booster

返回类型:

底层模型的 xgboost booster

get_metadata_routing()

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

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

返回:

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

返回类型:

MetadataRequest

get_num_boosting_rounds()

获取 xgboost 提升轮数。

返回类型:

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)

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

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

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

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

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

num_boosted_rounds()

返回类型:

None

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) – 用于预测的数据。有关支持的类型列表,请参阅 标记

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

  • training (bool) –

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

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

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

    版本 1.4.0 中新增。

返回类型:

预测

save_model(fname)

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

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

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

save_raw(raw_format='ubj')

返回类型:

None

score(X, y)

使用最后一个评估指标评估数据分数。如果模型使用提前停止进行训练,则会自动使用 best_iteration

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

  • y (Any) – 标签

返回:

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

返回类型:

score

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

配置是否应请求将元数据传递给 fit 方法。

请注意,当此估计器作为 元估计器 的子估计器使用,并且通过 enable_metadata_routing=True 启用了元数据路由时,此方法才相关(请参阅 sklearn.set_config())。请查阅 用户指南,了解路由机制的工作原理。

每个参数的选项是

  • True: 请求元数据,并在提供时将其传递给 fit。如果未提供元数据,则忽略此请求。

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

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

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

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

在 1.3 版本中添加。

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

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

  • eval_group (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – Metadata routing for eval_group parameter in fit

  • eval_qid (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – Metadata routing for eval_qid parameter in fit

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

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

  • group (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – Metadata routing for group parameter in fit

  • qid (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – Metadata routing for qid parameter in fit

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

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

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

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

  • self (XGBRanker)

返回:

self – 更新后的对象。

返回类型:

对象

set_params(**params)

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

返回类型:

self

参数:

params (Any)

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

配置是否应请求将元数据传递给 predict 方法。

请注意,当此估计器作为 元估计器 的子估计器使用,并且通过 enable_metadata_routing=True 启用了元数据路由时,此方法才相关(请参阅 sklearn.set_config())。请查阅 用户指南,了解路由机制的工作原理。

每个参数的选项是

  • True: 请求元数据,并在提供时将其传递给 predict。如果未提供元数据,则忽略此请求。

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

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

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

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

在 1.3 版本中添加。

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

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

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

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

  • self (XGBRanker)

返回:

self – 更新后的对象。

返回类型:

对象

class xgboost.XGBRFRegressor(*, learning_rate=1.0, subsample=0.8, colsample_bynode=0.8, reg_lambda=1e-05, **kwargs)

Bases: XGBRegressor

scikit-learn API for XGBoost random forest regression. See Using the Scikit-Learn Estimator Interface for more information.

参数:
  • n_estimators (Optional[int]) – Random forest 中要拟合的树的数量。

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

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

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

  • 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)。

  • 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 (Union[float, List[float], NoneType]) – 所有实例的初始预测分数,全局偏差。

  • 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”之一。

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

  • 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 是否应使用独热编码拆分进行分类数据的阈值。当类别数量小于阈值时,将选择独热编码,否则类别将被划分为子节点。此外,需要设置 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[Union[str, Callable]], Callable, NoneType]) –

    在版本 1.6.0 中添加。

    用于监视训练结果和早期停止的指标。它可以是字符串或字符串列表,作为 XGBoost 中预定义指标的名称(参见 XGBoost Parameters),sklearn.metrics 中的指标之一,或任何其他用户定义的、类似于 sklearn.metrics 的指标。

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

    与 scikit-learn 中常用的 scoring 参数不同,当提供可调用对象时,它被假定为一个成本函数,并且默认情况下 XGBoost 在早期停止时会最小化结果。

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

    有关详细信息,请参阅 Custom Objective and Evaluation 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,通过 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: 形状为 [n_samples] 的 array_like

    目标值

    y_pred: 形状为 [n_samples] 的 array_like

    预测值

    sample_weight

    可选的样本权重。

    grad: 形状为 [n_samples] 的 array_like

    每个样本点的梯度值。

    hess: 形状为 [n_samples] 的 array_like

    每个样本点的二阶导数(Hessian)值

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

apply(X, iteration_range=None)

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

参数:
返回:

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

返回类型:

array_like,形状为 [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()

返回评估结果。

如果向 fit() 函数传递了 eval_set,则可以调用 evals_result() 来获取所有传递的 eval_sets 的评估结果。当 eval_metric 也被传递给 fit() 函数时,evals_result 将包含传递给 fit() 函数的 eval_metrics

返回的评估结果是一个字典

{'validation_0': {'logloss': ['0.604835', '0.531479']},
 'validation_1': {'logloss': ['0.41965', '0.17686']}}
返回类型:

evals_result

property feature_importances_: ndarray

特征重要性属性,返回值取决于 importance_type 参数。当模型使用多类/多标签/多目标数据集进行训练时,特征重要性会针对所有目标进行“平均”。“平均”的定义基于重要性类型。例如,如果重要性类型是“total_gain”,则分数是所有树的每次分裂造成的损失变化的总和。

返回:

  • feature_importances_(形状为 [n_features] 的数组,多类情况除外)

  • 线性模型,返回一个形状为 (n_features, n_classes) 的数组

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) –

    输入特征矩阵。有关支持的类型列表,请参阅 标记

    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 且使用了评估集,则每次提升阶段在标准输出中打印在验证集上测量的评估指标。如果 verbose 是一个整数,则在每个 verbose 提升阶段打印评估指标。最后一个提升阶段 / 使用 early_stopping_rounds 找到的提升阶段也会被打印。

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

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

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

  • feature_weights (Any | None) –

    已弃用(自 3.0.0 版本起)。

    建议在 __init__()set_params() 中使用 feature_weights

返回类型:

XGBRFRegressor

get_booster()

获取此模型的底层 xgboost Booster。

如果尚未调用 fit,这将引发异常

返回:

booster

返回类型:

底层模型的 xgboost booster

get_metadata_routing()

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

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

返回:

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

返回类型:

MetadataRequest

get_num_boosting_rounds()

获取 xgboost 提升轮数。

返回类型:

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)

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

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

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

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

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

num_boosted_rounds()

返回类型:

None

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) – 用于预测的数据。有关支持的类型列表,请参阅 标记

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

  • training (bool) –

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

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

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

    版本 1.4.0 中新增。

返回类型:

预测

save_model(fname)

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

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

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

save_raw(raw_format='ubj')

返回类型:

None

score(X, y, sample_weight=None)

返回测试数据的决定系数

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

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

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

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

返回:

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

返回类型:

float

注释

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

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

配置是否应请求将元数据传递给 fit 方法。

请注意,当此估计器作为 元估计器 的子估计器使用,并且通过 enable_metadata_routing=True 启用了元数据路由时,此方法才相关(请参阅 sklearn.set_config())。请查阅 用户指南,了解路由机制的工作原理。

每个参数的选项是

  • True: 请求元数据,并在提供时将其传递给 fit。如果未提供元数据,则忽略此请求。

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

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

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

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

在 1.3 版本中添加。

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

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

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

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

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

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

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

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

  • self (XGBRFRegressor)

返回:

self – 更新后的对象。

返回类型:

对象

set_params(**params)

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

返回类型:

self

参数:

params (Any)

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

配置是否应请求将元数据传递给 predict 方法。

请注意,当此估计器作为 元估计器 的子估计器使用,并且通过 enable_metadata_routing=True 启用了元数据路由时,此方法才相关(请参阅 sklearn.set_config())。请查阅 用户指南,了解路由机制的工作原理。

每个参数的选项是

  • True: 请求元数据,并在提供时将其传递给 predict。如果未提供元数据,则忽略此请求。

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

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

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

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

在 1.3 版本中添加。

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

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

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

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

  • self (XGBRFRegressor)

返回:

self – 更新后的对象。

返回类型:

对象

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

配置是否应请求将元数据传递给 score 方法。

请注意,当此估计器作为 元估计器 的子估计器使用,并且通过 enable_metadata_routing=True 启用了元数据路由时,此方法才相关(请参阅 sklearn.set_config())。请查阅 用户指南,了解路由机制的工作原理。

每个参数的选项是

  • True: 请求元数据,并在提供时将其传递给 score。如果未提供元数据,则忽略此请求。

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

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

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

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

在 1.3 版本中添加。

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

  • self (XGBRFRegressor)

返回:

self – 更新后的对象。

返回类型:

对象

class xgboost.XGBRFClassifier(*, learning_rate=1.0, subsample=0.8, colsample_bynode=0.8, reg_lambda=1e-05, **kwargs)

Bases: XGBClassifier

scikit-learn API for XGBoost random forest classification. See Using the Scikit-Learn Estimator Interface for more information.

参数:
  • n_estimators (Optional[int]) – Random forest 中要拟合的树的数量。

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

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

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

  • 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)。

  • 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 (Union[float, List[float], NoneType]) – 所有实例的初始预测分数,全局偏差。

  • 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”之一。

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

  • 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 是否应使用独热编码拆分进行分类数据的阈值。当类别数量小于阈值时,将选择独热编码,否则类别将被划分为子节点。此外,需要设置 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[Union[str, Callable]], Callable, NoneType]) –

    在版本 1.6.0 中添加。

    用于监视训练结果和早期停止的指标。它可以是字符串或字符串列表,作为 XGBoost 中预定义指标的名称(参见 XGBoost Parameters),sklearn.metrics 中的指标之一,或任何其他用户定义的、类似于 sklearn.metrics 的指标。

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

    与 scikit-learn 中常用的 scoring 参数不同,当提供可调用对象时,它被假定为一个成本函数,并且默认情况下 XGBoost 在早期停止时会最小化结果。

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

    有关详细信息,请参阅 Custom Objective and Evaluation 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,通过 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: 形状为 [n_samples] 的 array_like

    目标值

    y_pred: 形状为 [n_samples] 的 array_like

    预测值

    sample_weight

    可选的样本权重。

    grad: 形状为 [n_samples] 的 array_like

    每个样本点的梯度值。

    hess: 形状为 [n_samples] 的 array_like

    每个样本点的二阶导数(Hessian)值

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

apply(X, iteration_range=None)

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

参数:
返回:

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

返回类型:

array_like,形状为 [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()

返回评估结果。

如果向 fit() 函数传递了 eval_set,则可以调用 evals_result() 来获取所有传递的 eval_sets 的评估结果。当 eval_metric 也被传递给 fit() 函数时,evals_result 将包含传递给 fit() 函数的 eval_metrics

返回的评估结果是一个字典

{'validation_0': {'logloss': ['0.604835', '0.531479']},
 'validation_1': {'logloss': ['0.41965', '0.17686']}}
返回类型:

evals_result

property feature_importances_: ndarray

特征重要性属性,返回值取决于 importance_type 参数。当模型使用多类/多标签/多目标数据集进行训练时,特征重要性会针对所有目标进行“平均”。“平均”的定义基于重要性类型。例如,如果重要性类型是“total_gain”,则分数是所有树的每次分裂造成的损失变化的总和。

返回:

  • feature_importances_(形状为 [n_features] 的数组,多类情况除外)

  • 线性模型,返回一个形状为 (n_features, n_classes) 的数组

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) –

    输入特征矩阵。有关支持的类型列表,请参阅 标记

    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 且使用了评估集,则每次提升阶段在标准输出中打印在验证集上测量的评估指标。如果 verbose 是一个整数,则在每个 verbose 提升阶段打印评估指标。最后一个提升阶段 / 使用 early_stopping_rounds 找到的提升阶段也会被打印。

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

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

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

  • feature_weights (Any | None) –

    已弃用(自 3.0.0 版本起)。

    建议在 __init__()set_params() 中使用 feature_weights

返回类型:

XGBRFClassifier

get_booster()

获取此模型的底层 xgboost Booster。

如果尚未调用 fit,这将引发异常

返回:

booster

返回类型:

底层模型的 xgboost booster

get_metadata_routing()

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

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

返回:

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

返回类型:

MetadataRequest

get_num_boosting_rounds()

获取 xgboost 提升轮数。

返回类型:

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)

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

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

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

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

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

num_boosted_rounds()

返回类型:

None

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) – 用于预测的数据。有关支持的类型列表,请参阅 标记

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

  • training (bool) –

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

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

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

    版本 1.4.0 中新增。

返回类型:

预测

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

预测 X 中每个示例属于某个类的概率。如果模型使用提前停止进行训练,则会自动使用 best_iteration。该估计器默认使用 inplace_predict,如果数据和估计器之间的设备不匹配,则回退到使用 DMatrix

注意

此函数仅对 gbtreedart 线程安全。

参数:
  • X (Any) – 特征矩阵。有关支持的类型列表,请参阅 标记

  • training (bool) –

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

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

返回:

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

返回类型:

预测

save_model(fname)

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

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

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

save_raw(raw_format='ubj')

返回类型:

None

score(X, y, sample_weight=None)

返回提供的数据和标签上的准确率

在多标签分类中,这是子集准确率,这是一个严格的指标,因为它要求正确预测每个样本的每个标签集。

参数:
  • X (array-like of shape (n_samples, n_features)) – 测试样本。

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

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

返回:

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 版本中添加。

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

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

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

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

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

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

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

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

  • self (XGBRFClassifier)

返回:

self – 更新后的对象。

返回类型:

对象

set_params(**params)

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

返回类型:

self

参数:

params (Any)

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

配置是否应请求将元数据传递给 predict_proba 方法。

请注意,当此估计器作为 元估计器 的子估计器使用,并且通过 enable_metadata_routing=True 启用了元数据路由时,此方法才相关(请参阅 sklearn.set_config())。请查阅 用户指南,了解路由机制的工作原理。

每个参数的选项是

  • True: 请求元数据,并在提供时将其传递给 predict_proba。如果未提供元数据,则忽略此请求。

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

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

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

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

在 1.3 版本中添加。

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

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

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

  • self (XGBRFClassifier)

返回:

self – 更新后的对象。

返回类型:

对象

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

配置是否应请求将元数据传递给 predict 方法。

请注意,当此估计器作为 元估计器 的子估计器使用,并且通过 enable_metadata_routing=True 启用了元数据路由时,此方法才相关(请参阅 sklearn.set_config())。请查阅 用户指南,了解路由机制的工作原理。

每个参数的选项是

  • True: 请求元数据,并在提供时将其传递给 predict。如果未提供元数据,则忽略此请求。

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

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

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

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

在 1.3 版本中添加。

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

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

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

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

  • self (XGBRFClassifier)

返回:

self – 更新后的对象。

返回类型:

对象

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

配置是否应请求将元数据传递给 score 方法。

请注意,当此估计器作为 元估计器 的子估计器使用,并且通过 enable_metadata_routing=True 启用了元数据路由时,此方法才相关(请参阅 sklearn.set_config())。请查阅 用户指南,了解路由机制的工作原理。

每个参数的选项是

  • True: 请求元数据,并在提供时将其传递给 score。如果未提供元数据,则忽略此请求。

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

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

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

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

在 1.3 版本中添加。

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

  • self (XGBRFClassifier)

返回:

self – 更新后的对象。

返回类型:

对象

绘图 API

绘图库。请参阅 Using the Scikit-Learn Estimator Interface 获取更多信息。

xgboost.plot_importance(booster, *, ax=None, height=0.2, xlim=None, ylim=None, title='Feature importance', xlabel='Importance score', ylabel='Features', fmap='', importance_type='weight', max_num_features=None, grid=True, show_values=True, values_format='{v}', **kwargs)

基于已拟合的树绘制重要性。

参数:
  • booster (XGBModel | Booster | dict) – Booster 或 XGBModel 实例,或 Booster.get_fscore() 所接受的 dict。

  • ax (matplotlib Axes) – 目标 axes 实例。如果为 None,则会创建新的 figure 和 axes。

  • grid (bool) – 打开或关闭 axes 网格。默认值为 True(开启)。

  • importance_type (str) –

    重要性如何计算:可以是 “weight”, “gain”, 或 “cover”

    • “weight” 是特征在树中出现的次数

    • “gain” 是使用该特征的分割的平均增益

    • “cover” 是使用该特征的分割的平均覆盖率,其中覆盖率定义为受分割影响的样本数量

  • max_num_features (int | None) – 图上显示的前 N 个特征的最大数量。如果为 None,则显示所有特征。

  • height (float) – 条形高度,传递给 ax.barh()

  • xlim (tuple | None) – 传递给 axes.xlim() 的元组

  • ylim (tuple | None) – 传递给 axes.ylim() 的元组

  • title (str) – Axes 标题。要禁用,请传递 None。

  • xlabel (str) – X 轴标题标签。要禁用,请传递 None。

  • ylabel (str) – Y 轴标题标签。要禁用,请传递 None。

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

  • show_values (bool) – 在图上显示值。要禁用,请传递 False。

  • values_format (str) – 值的格式字符串。“v”将被特征重要性值替换。例如,传递 “{v:.2f}” 以将每个打印在图上的值的小数点后的位数限制为两位。

  • kwargs (Any) – 传递给 ax.barh() 的其他关键字参数

返回:

ax

返回类型:

matplotlib Axes

xgboost.plot_tree(booster, *, fmap='', num_trees=None, rankdir=None, ax=None, with_stats=False, tree_idx=0, **kwargs)

绘制指定的树。

参数:
  • booster (Booster | XGBModel) – Booster 或 XGBModel 实例

  • fmap (str (optional)) – 特征映射文件的名称

  • num_trees (int | None) –

    已弃用,版本 3.0。

  • rankdir (str, default "TB") – 通过 graphviz 传递给 graph_attr

  • ax (matplotlib Axes, default None) – 目标 axes 实例。如果为 None,则会创建新的 figure 和 axes。

  • with_stats (bool) –

    3.0 版本新增。

    请参阅 to_graphviz()

  • tree_idx (int) –

    3.0 版本新增。

    请参阅 to_graphviz()

  • kwargs (Any) – 传递给 to_graphviz() 的其他关键字参数

返回:

ax

返回类型:

matplotlib Axes

xgboost.to_graphviz(booster, *, fmap='', num_trees=None, rankdir=None, yes_color=None, no_color=None, condition_node_params=None, leaf_node_params=None, with_stats=False, tree_idx=0, **kwargs)

将指定树转换为 graphviz 实例。IPython 可以自动绘制返回的 graphviz 实例。否则,您应该调用返回的 graphviz 实例的 .render() 方法。

参数:
  • booster (Booster | XGBModel) – Booster 或 XGBModel 实例

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

  • num_trees (int | None) –

    已弃用,版本 3.0。

    指定目标树的序数。

  • rankdir (str | None) – 通过 graphviz 传递给 graph_attr

  • yes_color (str | None) – 满足节点条件时的边颜色。

  • no_color (str | None) – 不满足节点条件时的边颜色。

  • condition_node_params (dict | None) –

    用于 graphviz 的条件节点配置。例如

    {'shape': 'box',
     'style': 'filled,rounded',
     'fillcolor': '#78bceb'}
    

  • leaf_node_params (dict | None) –

    用于 graphviz 的叶子节点配置。例如

    {'shape': 'box',
     'style': 'filled',
     'fillcolor': '#e48038'}
    

  • with_stats (bool) –

    3.0 版本新增。

    控制是否包含分裂统计信息。

  • tree_idx (int) –

    3.0 版本新增。

    指定目标树的序数索引。

  • kwargs (Any) – 传递给 graphviz graph_attr 的其他关键字参数,例如 graph [ {key} = {value} ]

返回:

graph

返回类型:

graphviz.Source

回调 API

包含训练例程的回调库。请参阅 Callback Functions 获取快速入门。

class xgboost.callback.TrainingCallback

训练回调的接口。

在 1.3.0 版本中添加。

after_iteration(model, epoch, evals_log)

在每次迭代后运行。返回 True 表示应停止训练。

参数:
  • model (Any) – 要么是 Booster 对象,要么是 xgboost 中使用的 cv 函数的 CVPack。

  • 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>)

Bases: TrainingCallback

在每次迭代时打印评估结果。

在 1.3.0 版本中添加。

参数:
  • rank (int) – 用于打印结果的 worker。

  • period (int) – 打印之间的 epoch 数量。

  • show_stdv (bool) – 在 cv 中用于显示标准差。用户不应指定它。

  • logger (Callable[[str], None]) – 用于记录评估结果的可调用对象。

after_iteration(model, epoch, evals_log)

在每次迭代后运行。返回 True 表示应停止训练。

参数:
  • model (Any) – 要么是 Booster 对象,要么是 xgboost 中使用的 cv 函数的 CVPack。

  • 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)

Bases: TrainingCallback

用于提前停止的回调函数

在 1.3.0 版本中添加。

参数:
  • rounds (int) – 提前停止轮数。

  • metric_name (str | None) – 用于提前停止的指标名称。

  • data_name (str | None) – 用于提前停止的数据集名称。

  • maximize (bool | None) – 是否最大化评估指标。None 表示自动(不推荐)。

  • save_best (bool | None) – 训练是应返回最佳模型还是最后一个模型。如果设置为 True,它将只保留到检测到的最佳迭代的提升轮数,丢弃之后的轮数。这仅支持树模型(不支持 gblinear)。此外,cv 函数不返回模型,此参数不适用。

  • min_delta (float) –

    在版本 1.5.0 中添加。

    被视为改进的得分的最小绝对变化。

示例

es = xgboost.callback.EarlyStopping(
    rounds=2,
    min_delta=1e-3,
    save_best=True,
    maximize=False,
    data_name="validation_0",
    metric_name="mlogloss",
)
clf = xgboost.XGBClassifier(tree_method="hist", device="cuda", callbacks=[es])

X, y = load_digits(return_X_y=True)
clf.fit(X, y, eval_set=[(X, y)])
after_iteration(model, epoch, evals_log)

在每次迭代后运行。返回 True 表示应停止训练。

参数:
  • model (Any) – 要么是 Booster 对象,要么是 xgboost 中使用的 cv 函数的 CVPack。

  • 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)

Bases: TrainingCallback

用于调度学习率的回调函数。

在 1.3.0 版本中添加。

参数:

learning_rates (Callable[[int], float] | Sequence[float]) – 如果是可调用对象,则它应该接受一个整数参数 epoch 并返回相应的学习率。否则,它应该是一个列表或元组等序列,其大小与提升轮数相同。

after_iteration(model, epoch, evals_log)

在每次迭代后运行。返回 True 表示应停止训练。

参数:
  • model (Any) – 要么是 Booster 对象,要么是 xgboost 中使用的 cv 函数的 CVPack。

  • 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)

Bases: TrainingCallback

检查点操作。鼓励用户为检查点创建自己的回调函数,因为 XGBoost 不处理分布式文件系统。在分布式系统上进行检查点时,请务必了解 worker 的 rank,以避免多个 worker 检查点到同一个地方。

在 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 对象,要么是 xgboost 中使用的 cv 函数的 CVPack。

  • 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, device=None, force_repartition=False, repartition_random_shuffle=False, enable_sparse_data_optim=False, launch_tracker_on_driver=True, coll_cfg=None, **kwargs)

Bases: _SparkXGBEstimator, HasProbabilityCol, 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 worker 的 nthread 参数设置为等于 spark.task.cpus 配置值。

参数:
  • features_col (str | List[str]) – 当值为字符串时,需要特征列为向量类型。当值为字符串列表时,需要所有特征列为数值类型。

  • label_col (str) – 标签列名称。默认为“label”。

  • prediction_col (str) – 预测列名称。默认为“prediction”

  • probability_col (str) – 预测类条件概率的列名称。默认为 probabilityCol

  • raw_prediction_col (str) – output_margin=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 worker 数量。每个 XGBoost worker 对应一个 spark 任务。

  • device (str | None) –

    2.0.0 版本新增。

    XGBoost worker 的设备,可用选项是 cpucudagpu

  • force_repartition (bool) – 指定在 XGBoost 训练前是否强制重新分区输入数据集的布尔值。

  • repartition_random_shuffle (bool) – 指定在需要重新分区时是否随机打乱数据集的布尔值。

  • enable_sparse_data_optim (bool) – 指定是否启用稀疏数据优化的布尔值,如果为 True,将从稀疏矩阵而不是密集矩阵构造 Xgboost DMatrix 对象。

  • launch_tracker_on_driver (bool) – 指示跟踪器是在驱动程序端还是执行器端启动的布尔值。

  • coll_cfg (Config | None) – 集合配置。请参阅 Config

  • kwargs (Any) – xgboost 参数字典,请参阅 https://docs.xgboost.com.cn/en/stable/parameter.html

注意

上面的参数图包含需要特殊处理的参数。有关参数的完整列表,请参阅带有 Param(parent=… 的条目。

此 API 是实验性的。

示例

>>> from xgboost.spark import SparkXGBClassifier
>>> from pyspark.ml.linalg import Vectors
>>> df_train = spark.createDataFrame([
...     (Vectors.dense(1.0, 2.0, 3.0), 0, False, 1.0),
...     (Vectors.sparse(3, {1: 1.0, 2: 5.5}), 1, False, 2.0),
...     (Vectors.dense(4.0, 5.0, 6.0), 0, True, 1.0),
...     (Vectors.sparse(3, {1: 6.0, 2: 7.5}), 1, True, 2.0),
... ], ["features", "label", "isVal", "weight"])
>>> df_test = spark.createDataFrame([
...     (Vectors.dense(1.0, 2.0, 3.0), ),
... ], ["features"])
>>> xgb_classifier = SparkXGBClassifier(max_depth=5, missing=0.0,
...     validation_indicator_col='isVal', weight_col='weight',
...     early_stopping_rounds=1, eval_metric='logloss')
>>> xgb_clf_model = xgb_classifier.fit(df_train)
>>> xgb_clf_model.transform(df_test).show()
clear(param)

清除参数映射中已显式设置的参数。

参数:

param (Param)

返回类型:

None

copy(extra=None)

使用相同的 uid 和一些额外参数创建此实例的副本。默认实现使用 copy.copy() 创建浅拷贝,然后将嵌入式和额外参数复制过来并返回副本。如果默认方法不够,子类应重写此方法。

参数:
  • extra (dict, optional) – 要复制到新实例的额外参数

  • self (P)

返回:

此实例的副本

返回类型:

Params

explainParam(param)

解释单个参数并返回其名称、文档以及可选的默认值和用户提供的值(字符串格式)。

参数:

param (str | Param)

返回类型:

字符串

explainParams()

返回所有参数的文档,包括可选的默认值和用户提供的值。

返回类型:

字符串

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 的值或其默认值。

返回类型:

字符串

getLabelCol()

获取 labelCol 的值或其默认值。

返回类型:

字符串

getOrDefault(param)

获取用户提供的参数映射中的参数值或其默认值。如果两者都未设置,则引发错误。

参数:

param (str | Param[T])

返回类型:

Any | T

getParam(paramName)

通过名称获取参数。

参数:

paramName (str)

返回类型:

Param

getPredictionCol()

获取 predictionCol 的值或其默认值。

返回类型:

字符串

getProbabilityCol()

获取 probabilityCol 的值或其默认值。

返回类型:

字符串

getRawPredictionCol()

获取 rawPredictionCol 的值或其默认值。

返回类型:

字符串

getValidationIndicatorCol()

获取 validationIndicatorCol 的值或其默认值。

返回类型:

字符串

getWeightCol()

获取 weightCol 的值或其默认值。

返回类型:

字符串

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)

返回类型:

None

set(param, value)

设置嵌入式参数映射中的参数。

参数:
返回类型:

None

setParams(**kwargs)

为估计器设置参数。

参数:

kwargs (Any)

返回类型:

None

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)

Bases: _ClassificationModel

xgboost.spark.SparkXGBClassifier.fit() 返回的模型

注意

此 API 是实验性的。

参数:
  • xgb_sklearn_model (XGBModel | None)

  • training_summary (XGBoostTrainingSummary | None)

clear(param)

清除参数映射中已显式设置的参数。

参数:

param (Param)

返回类型:

None

copy(extra=None)

使用相同的 uid 和一些额外参数创建此实例的副本。默认实现使用 copy.copy() 创建浅拷贝,然后将嵌入式和额外参数复制过来并返回副本。如果默认方法不够,子类应重写此方法。

参数:
  • extra (dict, optional) – 要复制到新实例的额外参数

  • self (P)

返回:

此实例的副本

返回类型:

Params

explainParam(param)

解释单个参数并返回其名称、文档以及可选的默认值和用户提供的值(字符串格式)。

参数:

param (str | Param)

返回类型:

字符串

explainParams()

返回所有参数的文档,包括可选的默认值和用户提供的值。

返回类型:

字符串

extractParamMap(extra=None)

提取嵌入的默认参数值和用户提供的值,然后将它们与输入中的额外值合并成一个扁平的参数映射,其中后者值在存在冲突时使用,即按顺序:默认参数值 < 用户提供的值 < 额外值。

参数:

extra (dict, optional) – 额外的参数值

返回:

合并的参数映射

返回类型:

dict

getFeaturesCol()

获取 featuresCol 的值或其默认值。

返回类型:

字符串

getLabelCol()

获取 labelCol 的值或其默认值。

返回类型:

字符串

getOrDefault(param)

获取用户提供的参数映射中的参数值或其默认值。如果两者都未设置,则引发错误。

参数:

param (str | Param[T])

返回类型:

Any | T

getParam(paramName)

通过名称获取参数。

参数:

paramName (str)

返回类型:

Param

getPredictionCol()

获取 predictionCol 的值或其默认值。

返回类型:

字符串

getProbabilityCol()

获取 probabilityCol 的值或其默认值。

返回类型:

字符串

getRawPredictionCol()

获取 rawPredictionCol 的值或其默认值。

返回类型:

字符串

getValidationIndicatorCol()

获取 validationIndicatorCol 的值或其默认值。

返回类型:

字符串

getWeightCol()

获取 weightCol 的值或其默认值。

返回类型:

字符串

get_booster()

返回 xgboost.core.Booster 实例。

返回类型:

Booster

get_feature_importances(importance_type='weight')

获取每个特征的特征重要性。重要性类型可以定义为

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

  • ‘cover’:一个特征在所有拆分中使用的平均覆盖范围。

  • ‘total_gain’:一个特征在所有拆分中使用的总增益。

  • ‘total_cover’:一个特征在所有拆分中使用的总覆盖范围。

  • 对于线性模型,只有“weight”被定义,它是没有偏置的归一化系数。

参数:

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)

返回类型:

None

set(param, value)

设置嵌入式参数映射中的参数。

参数:
返回类型:

None

set_coll_cfg(value)

设置集合配置

参数:

value (Config)

返回类型:

_SparkXGBParams

set_device(value)

设置设备,可选值:cpu、cuda、gpu

参数:

value (str)

返回类型:

_SparkXGBParams

transform(dataset, params=None)

使用可选参数转换输入数据集。

在 1.3.0 版本中添加。

参数:
  • dataset (pyspark.sql.DataFrame) – 输入数据集

  • params (dict, optional) – 一个可选的参数映射,用于覆盖嵌入的参数。

返回:

转换后的数据集

返回类型:

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, device=None, force_repartition=False, repartition_random_shuffle=False, enable_sparse_data_optim=False, launch_tracker_on_driver=True, coll_cfg=None, **kwargs)

Bases: _SparkXGBEstimator

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 worker 的 nthread 参数设置为等于 spark.task.cpus 配置值。

参数:
  • features_col (str | List[str]) – 当值为字符串时,需要特征列为向量类型。当值为字符串列表时,需要所有特征列为数值类型。

  • label_col (str) – 标签列名称。默认为“label”。

  • prediction_col (str) – 预测列名称。默认为“prediction”

  • pred_contrib_col (pyspark.ml.param.Param[str]) – 贡献预测列名称。

  • validation_indicator_col (str | None) – 对于与 xgboost.XGBRegressor 使用评估数据集的监督训练相关的参数,请设置 xgboost.spark.SparkXGBRegressor.validation_indicator_col 参数,而不是在 xgboost.XGBRegressor fit 方法中设置 eval_set 参数。

  • weight_col (str | None) – 要指定训练集和验证集的权重,请设置 xgboost.spark.SparkXGBRegressor.weight_col 参数,而不是在 xgboost.XGBRegressor fit 方法中设置 sample_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 worker 数量。每个 XGBoost worker 对应一个 spark 任务。

  • device (str | None) –

    2.0.0 版本新增。

    XGBoost worker 的设备,可用选项是 cpucudagpu

  • force_repartition (bool) – 指定在 XGBoost 训练前是否强制重新分区输入数据集的布尔值。

  • repartition_random_shuffle (bool) – 指定在需要重新分区时是否随机打乱数据集的布尔值。

  • enable_sparse_data_optim (bool) – 指定是否启用稀疏数据优化的布尔值,如果为 True,将从稀疏矩阵而不是密集矩阵构造 Xgboost DMatrix 对象。

  • launch_tracker_on_driver (bool) – 指示跟踪器是在驱动程序端还是执行器端启动的布尔值。

  • coll_cfg (Config | None) – 集合配置。请参阅 Config

  • kwargs (Any) – xgboost 参数字典,请参阅 https://docs.xgboost.com.cn/en/stable/parameter.html

注意

上面的参数图包含需要特殊处理的参数。有关参数的完整列表,请参阅带有 Param(parent=… 的条目。

此 API 是实验性的。

示例

>>> from xgboost.spark import SparkXGBRegressor
>>> from pyspark.ml.linalg import Vectors
>>> df_train = spark.createDataFrame([
...     (Vectors.dense(1.0, 2.0, 3.0), 0, False, 1.0),
...     (Vectors.sparse(3, {1: 1.0, 2: 5.5}), 1, False, 2.0),
...     (Vectors.dense(4.0, 5.0, 6.0), 2, True, 1.0),
...     (Vectors.sparse(3, {1: 6.0, 2: 7.5}), 3, True, 2.0),
... ], ["features", "label", "isVal", "weight"])
>>> df_test = spark.createDataFrame([
...     (Vectors.dense(1.0, 2.0, 3.0), ),
...     (Vectors.sparse(3, {1: 1.0, 2: 5.5}), )
... ], ["features"])
>>> xgb_regressor = SparkXGBRegressor(max_depth=5, missing=0.0,
... validation_indicator_col='isVal', weight_col='weight',
... early_stopping_rounds=1, eval_metric='rmse')
>>> xgb_reg_model = xgb_regressor.fit(df_train)
>>> xgb_reg_model.transform(df_test)
clear(param)

清除参数映射中已显式设置的参数。

参数:

param (Param)

返回类型:

None

copy(extra=None)

使用相同的 uid 和一些额外参数创建此实例的副本。默认实现使用 copy.copy() 创建浅拷贝,然后将嵌入式和额外参数复制过来并返回副本。如果默认方法不够,子类应重写此方法。

参数:
  • extra (dict, optional) – 要复制到新实例的额外参数

  • self (P)

返回:

此实例的副本

返回类型:

Params

explainParam(param)

解释单个参数并返回其名称、文档以及可选的默认值和用户提供的值(字符串格式)。

参数:

param (str | Param)

返回类型:

字符串

explainParams()

返回所有参数的文档,包括可选的默认值和用户提供的值。

返回类型:

字符串

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 的值或其默认值。

返回类型:

字符串

getLabelCol()

获取 labelCol 的值或其默认值。

返回类型:

字符串

getOrDefault(param)

获取用户提供的参数映射中的参数值或其默认值。如果两者都未设置,则引发错误。

参数:

param (str | Param[T])

返回类型:

Any | T

getParam(paramName)

通过名称获取参数。

参数:

paramName (str)

返回类型:

Param

getPredictionCol()

获取 predictionCol 的值或其默认值。

返回类型:

字符串

getValidationIndicatorCol()

获取 validationIndicatorCol 的值或其默认值。

返回类型:

字符串

getWeightCol()

获取 weightCol 的值或其默认值。

返回类型:

字符串

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)

返回类型:

None

set(param, value)

设置嵌入式参数映射中的参数。

参数:
返回类型:

None

setParams(**kwargs)

为估计器设置参数。

参数:

kwargs (Any)

返回类型:

None

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)

Bases: _SparkXGBModel

xgboost.spark.SparkXGBRegressor.fit() 返回的模型

注意

此 API 是实验性的。

参数:
  • xgb_sklearn_model (XGBModel | None)

  • training_summary (XGBoostTrainingSummary | None)

clear(param)

清除参数映射中已显式设置的参数。

参数:

param (Param)

返回类型:

None

copy(extra=None)

使用相同的 uid 和一些额外参数创建此实例的副本。默认实现使用 copy.copy() 创建浅拷贝,然后将嵌入式和额外参数复制过来并返回副本。如果默认方法不够,子类应重写此方法。

参数:
  • extra (dict, optional) – 要复制到新实例的额外参数

  • self (P)

返回:

此实例的副本

返回类型:

Params

explainParam(param)

解释单个参数并返回其名称、文档以及可选的默认值和用户提供的值(字符串格式)。

参数:

param (str | Param)

返回类型:

字符串

explainParams()

返回所有参数的文档,包括可选的默认值和用户提供的值。

返回类型:

字符串

extractParamMap(extra=None)

提取嵌入的默认参数值和用户提供的值,然后将它们与输入中的额外值合并成一个扁平的参数映射,其中后者值在存在冲突时使用,即按顺序:默认参数值 < 用户提供的值 < 额外值。

参数:

extra (dict, optional) – 额外的参数值

返回:

合并的参数映射

返回类型:

dict

getFeaturesCol()

获取 featuresCol 的值或其默认值。

返回类型:

字符串

getLabelCol()

获取 labelCol 的值或其默认值。

返回类型:

字符串

getOrDefault(param)

获取用户提供的参数映射中的参数值或其默认值。如果两者都未设置,则引发错误。

参数:

param (str | Param[T])

返回类型:

Any | T

getParam(paramName)

通过名称获取参数。

参数:

paramName (str)

返回类型:

Param

getPredictionCol()

获取 predictionCol 的值或其默认值。

返回类型:

字符串

getValidationIndicatorCol()

获取 validationIndicatorCol 的值或其默认值。

返回类型:

字符串

getWeightCol()

获取 weightCol 的值或其默认值。

返回类型:

字符串

get_booster()

返回 xgboost.core.Booster 实例。

返回类型:

Booster

get_feature_importances(importance_type='weight')

获取每个特征的特征重要性。重要性类型可以定义为

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

  • ‘cover’:一个特征在所有拆分中使用的平均覆盖范围。

  • ‘total_gain’:一个特征在所有拆分中使用的总增益。

  • ‘total_cover’:一个特征在所有拆分中使用的总覆盖范围。

  • 对于线性模型,只有“weight”被定义,它是没有偏置的归一化系数。

参数:

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)

返回类型:

None

set(param, value)

设置嵌入式参数映射中的参数。

参数:
返回类型:

None

set_coll_cfg(value)

设置集合配置

参数:

value (Config)

返回类型:

_SparkXGBParams

set_device(value)

设置设备,可选值:cpu、cuda、gpu

参数:

value (str)

返回类型:

_SparkXGBParams

transform(dataset, params=None)

使用可选参数转换输入数据集。

在 1.3.0 版本中添加。

参数:
  • dataset (pyspark.sql.DataFrame) – 输入数据集

  • params (dict, optional) – 一个可选的参数映射,用于覆盖嵌入的参数。

返回:

转换后的数据集

返回类型:

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, device=None, force_repartition=False, repartition_random_shuffle=False, enable_sparse_data_optim=False, launch_tracker_on_driver=True, coll_cfg=None, **kwargs)

Bases: _SparkXGBEstimator

SparkXGBRanker 是一个 PySpark ML 估计器。它实现了基于 XGBoost Python 库的 XGBoost ranking 算法,并且可以用于 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 worker 数量。每个 XGBoost worker 对应一个 spark 任务。

  • device (str | None) –

    2.0.0 版本新增。

    XGBoost worker 的设备,可用选项是 cpucudagpu

  • force_repartition (bool) – 指定在 XGBoost 训练前是否强制重新分区输入数据集的布尔值。

  • repartition_random_shuffle (bool) – 指定在需要重新分区时是否随机打乱数据集的布尔值。

  • enable_sparse_data_optim (bool) – 指定是否启用稀疏数据优化的布尔值,如果为 True,将从稀疏矩阵而不是密集矩阵构造 Xgboost DMatrix 对象。

  • launch_tracker_on_driver (bool) – 指示跟踪器是在驱动程序端还是执行器端启动的布尔值。

  • coll_cfg (Config | None) – 集合配置。请参阅 Config

  • kwargs (Any) – xgboost 参数字典,请参阅 https://docs.xgboost.com.cn/en/stable/parameter.html

  • Note: (..) – 上面的参数表包含需要特殊处理的参数:有关参数的完整列表,请参阅下方带有 Param(parent=… 的条目。

  • Note: – 此 API 是实验性的。

示例

>>> from xgboost.spark import SparkXGBRanker
>>> from pyspark.ml.linalg import Vectors
>>> ranker = SparkXGBRanker(qid_col="qid")
>>> df_train = spark.createDataFrame(
...     [
...         (Vectors.dense(1.0, 2.0, 3.0), 0, 0),
...         (Vectors.dense(4.0, 5.0, 6.0), 1, 0),
...         (Vectors.dense(9.0, 4.0, 8.0), 2, 0),
...         (Vectors.sparse(3, {1: 1.0, 2: 5.5}), 0, 1),
...         (Vectors.sparse(3, {1: 6.0, 2: 7.5}), 1, 1),
...         (Vectors.sparse(3, {1: 8.0, 2: 9.5}), 2, 1),
...     ],
...     ["features", "label", "qid"],
... )
>>> df_test = spark.createDataFrame(
...     [
...         (Vectors.dense(1.5, 2.0, 3.0), 0),
...         (Vectors.dense(4.5, 5.0, 6.0), 0),
...         (Vectors.dense(9.0, 4.5, 8.0), 0),
...         (Vectors.sparse(3, {1: 1.0, 2: 6.0}), 1),
...         (Vectors.sparse(3, {1: 6.0, 2: 7.0}), 1),
...         (Vectors.sparse(3, {1: 8.0, 2: 10.5}), 1),
...     ],
...     ["features", "qid"],
... )
>>> model = ranker.fit(df_train)
>>> model.transform(df_test).show()
clear(param)

清除参数映射中已显式设置的参数。

参数:

param (Param)

返回类型:

None

copy(extra=None)

使用相同的 uid 和一些额外参数创建此实例的副本。默认实现使用 copy.copy() 创建浅拷贝,然后将嵌入式和额外参数复制过来并返回副本。如果默认方法不够,子类应重写此方法。

参数:
  • extra (dict, optional) – 要复制到新实例的额外参数

  • self (P)

返回:

此实例的副本

返回类型:

Params

explainParam(param)

解释单个参数并返回其名称、文档以及可选的默认值和用户提供的值(字符串格式)。

参数:

param (str | Param)

返回类型:

字符串

explainParams()

返回所有参数的文档,包括可选的默认值和用户提供的值。

返回类型:

字符串

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 的值或其默认值。

返回类型:

字符串

getLabelCol()

获取 labelCol 的值或其默认值。

返回类型:

字符串

getOrDefault(param)

获取用户提供的参数映射中的参数值或其默认值。如果两者都未设置,则引发错误。

参数:

param (str | Param[T])

返回类型:

Any | T

getParam(paramName)

通过名称获取参数。

参数:

paramName (str)

返回类型:

Param

getPredictionCol()

获取 predictionCol 的值或其默认值。

返回类型:

字符串

getValidationIndicatorCol()

获取 validationIndicatorCol 的值或其默认值。

返回类型:

字符串

getWeightCol()

获取 weightCol 的值或其默认值。

返回类型:

字符串

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)

返回类型:

None

set(param, value)

设置嵌入式参数映射中的参数。

参数:
返回类型:

None

setParams(**kwargs)

为估计器设置参数。

参数:

kwargs (Any)

返回类型:

None

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)

Bases: _SparkXGBModel

xgboost.spark.SparkXGBRanker.fit() 返回的模型

注意

此 API 是实验性的。

参数:
  • xgb_sklearn_model (XGBModel | None)

  • training_summary (XGBoostTrainingSummary | None)

clear(param)

清除参数映射中已显式设置的参数。

参数:

param (Param)

返回类型:

None

copy(extra=None)

使用相同的 uid 和一些额外参数创建此实例的副本。默认实现使用 copy.copy() 创建浅拷贝,然后将嵌入式和额外参数复制过来并返回副本。如果默认方法不够,子类应重写此方法。

参数:
  • extra (dict, optional) – 要复制到新实例的额外参数

  • self (P)

返回:

此实例的副本

返回类型:

Params

explainParam(param)

解释单个参数并返回其名称、文档以及可选的默认值和用户提供的值(字符串格式)。

参数:

param (str | Param)

返回类型:

字符串

explainParams()

返回所有参数的文档,包括可选的默认值和用户提供的值。

返回类型:

字符串

extractParamMap(extra=None)

提取嵌入的默认参数值和用户提供的值,然后将它们与输入中的额外值合并成一个扁平的参数映射,其中后者值在存在冲突时使用,即按顺序:默认参数值 < 用户提供的值 < 额外值。

参数:

extra (dict, optional) – 额外的参数值

返回:

合并的参数映射

返回类型:

dict

getFeaturesCol()

获取 featuresCol 的值或其默认值。

返回类型:

字符串

getLabelCol()

获取 labelCol 的值或其默认值。

返回类型:

字符串

getOrDefault(param)

获取用户提供的参数映射中的参数值或其默认值。如果两者都未设置,则引发错误。

参数:

param (str | Param[T])

返回类型:

Any | T

getParam(paramName)

通过名称获取参数。

参数:

paramName (str)

返回类型:

Param

getPredictionCol()

获取 predictionCol 的值或其默认值。

返回类型:

字符串

getValidationIndicatorCol()

获取 validationIndicatorCol 的值或其默认值。

返回类型:

字符串

getWeightCol()

获取 weightCol 的值或其默认值。

返回类型:

字符串

get_booster()

返回 xgboost.core.Booster 实例。

返回类型:

Booster

get_feature_importances(importance_type='weight')

获取每个特征的特征重要性。重要性类型可以定义为

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

  • ‘cover’:一个特征在所有拆分中使用的平均覆盖范围。

  • ‘total_gain’:一个特征在所有拆分中使用的总增益。

  • ‘total_cover’:一个特征在所有拆分中使用的总覆盖范围。

  • 对于线性模型,只有“weight”被定义,它是没有偏置的归一化系数。

参数:

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)

返回类型:

None

set(param, value)

设置嵌入式参数映射中的参数。

参数:
返回类型:

None

set_coll_cfg(value)

设置集合配置

参数:

value (Config)

返回类型:

_SparkXGBParams

set_device(value)

设置设备,可选值:cpu、cuda、gpu

参数:

value (str)

返回类型:

_SparkXGBParams

transform(dataset, params=None)

使用可选参数转换输入数据集。

在 1.3.0 版本中添加。

参数:
  • dataset (pyspark.sql.DataFrame) – 输入数据集

  • params (dict, optional) – 一个可选的参数映射,用于覆盖嵌入的参数。

返回:

转换后的数据集

返回类型:

pyspark.sql.DataFrame

uid

对象的唯一 ID。

write()

返回用于保存模型的写入器。

返回类型:

SparkXGBModelWriter

Collective

XGBoost collective communication related API.

class xgboost.collective.Config(retry=None, timeout=None, tracker_host_ip=None, tracker_port=None, tracker_timeout=None)

用于通信器上下文的用户配置。这用于与分布式框架更轻松地集成。collective 模块的用户可以直接将参数传递给 tracker 和通信器。

3.0 版本新增。

参数:
  • retry (int | None)

  • timeout (int | None)

  • tracker_host_ip (str | None)

  • tracker_port (int | None)

  • tracker_timeout (int | None)

retry
Type:

请参阅 init() 中的 dmlc_retry

timeout

请参阅 init() 中的 dmlc_timeout。这仅用于通信器,而不用于 tracker。它们是不同的参数,因为 tracker 的超时仅限于启动和完成通信组的时间,而通信器的超时则限制了集体操作(如 allreduce())所使用的时间。

Type:

int | None

tracker_host_ip
Type:

请参阅 RabitTracker

tracker_port
Type:

请参阅 RabitTracker

tracker_timeout
Type:

请参阅 RabitTracker

xgboost.collective.init(**args)

使用参数初始化 collective 库。

参数:

args (int | str | None) –

代表参数及其值的关键字参数。

接受的参数
  • dmlc_communicator: 通信器的类型。* rabit: 使用 Rabit。这是默认值,如果未指定类型。* federated: 使用 gRPC 接口进行联邦学习。

仅适用于 Rabit 通信器
  • dmlc_tracker_uri: tracker 的主机名。

  • dmlc_tracker_port: 追踪器的端口号。

  • dmlc_task_id: 当前任务的 ID,可用于获取确定性的

  • dmlc_retry: 处理网络错误时的重试次数。

  • dmlc_timeout: 超时时间(秒)。

  • dmlc_nccl_path: 用于 GPU 通信的 nccl 加载(dlopen)路径。

仅适用于 Federated 通信器
  • federated_server_address: 联邦服务器地址。

  • federated_world_size: 联邦工作器数量。

  • federated_rank: 当前工作器的排名。

  • federated_server_cert: 服务器证书文件路径。仅在 SSL 模式下需要。

  • federated_client_key: 客户端密钥文件路径。仅在 SSL 模式下需要。

  • federated_client_cert: 客户端证书文件路径。仅在 SSL 模式下需要。

请使用大写字母表示环境变量,使用小写字母表示运行时配置。

返回类型:

None

xgboost.collective.finalize()

完成通信器。

返回类型:

None

xgboost.collective.get_rank()

获取当前进程的 rank。

返回:

rank – 当前进程的 rank。

返回类型:

int

xgboost.collective.get_world_size()

获取总 worker 数。

返回:

总进程数。

返回类型:

n

class xgboost.collective.CommunicatorContext(**args)

用于控制 collective 通信器初始化和最终化的上下文。

参数:

args (int | str | None)

XGBoost collective 的 tracker。

class xgboost.tracker.RabitTracker(n_workers, host_ip, port=0, *, sortby='host', timeout=0)

XGBoost collective 的 tracker,充当 worker 之间的协调器。

参数:
  • n_workers (int) – 通信组中的总 worker 数。

  • host_ip (str | None) – tracker 节点的 IP 地址。XGBoost 可以通过套接字探测来尝试猜测一个。但最好显式传递一个地址。

  • port (int) – 此 tracker 应监听的端口。XGBoost 可以从操作系统查询可用端口,此配置在受限网络环境中很有用。

  • sortby (str) –

    如何对 worker 进行排序以分配 rank。默认是 host,但用户可以通过 init() 的参数设置 DMLC_TASK_ID,通过按任务名称排序来获得确定的 rank 分配。可用选项是

    • host

    • task

  • timeout (int) –

    构造(引导)和关闭通信组的超时时间,不适用于组已启动并运行时的通信。

    由于可能存在惰性执行,超时值应考虑数据加载和预处理的时间。默认情况下,Tracker 没有超时时间,以避免过早中止。

    请注意,wait_for() 方法有一个不同的超时参数,即使 tracker 仍在被使用,它也可以停止 tracker。当达到超时时,将引发 ValueError。

示例

from xgboost.tracker import RabitTracker
from xgboost import collective as coll

tracker = RabitTracker(host_ip="127.0.0.1", n_workers=2)
tracker.start()

with coll.CommunicatorContext(**tracker.worker_args()):
    ret = coll.broadcast("msg", 0)
    assert str(ret) == "msg"