Python API 参考

本页面提供了 xgboost 的 Python API 参考,关于 Python 包的更多信息,请参阅 Python 包介绍。

全局配置

xgboost.config_context(**new_config)[源代码]

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

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

备注

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

Added in version 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)[源代码]

设置全局配置。

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

Added in version 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()[源代码]

获取全局配置的当前值。

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

Added in version 1.4.0.

返回:

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

返回类型:

Dict[str, Any]

示例

import xgboost as xgb

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

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

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

嵌套配置上下文也受支持:

示例

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

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

核心数据结构

核心 XGBoost 库。

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

基类:object

XGBoost 中使用的数据矩阵。

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

参数:
  • data (Any) – DMatrix 的数据源。查看 各种 XGBoost 函数支持的数据结构 以获取支持的输入类型列表。

  • label (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 方法完成。当用户想要指定分类特征而不必构建数据框作为输入时,这很有用。

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

    Added in version 1.3.0.

    备注

    此参数为实验性

    实验性支持对分类特征进行专门化处理。

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

    如果传递 ‘False’ 并且 ‘data’ 是一个包含分类列的数据框,将会导致抛出一个错误。

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

    JSON/UBJSON 序列化格式是此功能所必需的。

  • data_split_mode (DataSplitMode)

data_split_mode()[源代码]

获取DMatrix的数据分割模式。

Added in version 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_data()[源代码]

从 DMatrix 获取预测器作为 CSR 矩阵。此获取器主要用于测试目的。如果这是一个量化的 DMatrix,则返回量化值而不是输入值。

Added in version 1.7.0.

返回类型:

csr_matrix

get_float_info(field)[源代码]

从 DMatrix 获取浮点属性。

参数:

field (str) – 信息的字段名称

返回:

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

返回类型:

array

get_group()[源代码]

获取 DMatrix 的组。

返回类型:

group

get_label()[源代码]

获取 DMatrix 的标签。

返回:

标签

返回类型:

array

get_quantile_cut()[源代码]

获取量化所需的量化分位数。

Added in version 2.0.0.

返回类型:

Tuple[ndarray, ndarray]

get_uint_info(field)[源代码]

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

参数:

field (str) – 信息的字段名称

返回:

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

返回类型:

array

get_weight()[源代码]

获取 DMatrix 的权重。

返回:

重量

返回类型:

array

num_col()[源代码]

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

返回类型:

int

num_nonmissing()[源代码]

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

Added in version 1.7.0.

返回类型:

int

num_row()[源代码]

获取DMatrix中的行数。

返回类型:

int

save_binary(fname, silent=True)[源代码]

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

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

  • silent (bool (optional; default: True)) – 如果设置,输出将被抑制。

返回类型:

None

set_base_margin(margin)[源代码]

设置助推器的基边距以开始。

这可以用来指定现有模型的预测值作为 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 二维数组输入

参数:
  • 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)[源代码]

Set meta info for DMatrix. See doc string for 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, data_split_mode=DataSplitMode.ROW)[源代码]

基类:DMatrix

A DMatrix variant that generates quantilized data directly from input for the hist tree method. This DMatrix is primarily designed to save memory in training by avoiding intermediate storage. Set max_bin to control the number of bins during quantisation, which should be consistent with the training parameter max_bin. When QuantileDMatrix is used for validation/test dataset, ref should be another QuantileDMatrix``(or ``DMatrix, but not recommended as it defeats the purpose of saving memory) constructed from training dataset. See xgboost.DMatrix for documents on meta info.

备注

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

Added in version 1.7.0.

参数:
  • max_bin (int | None) – 直方图的箱数,应与训练参数 max_bin 一致。

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

  • data (Any) – DMatrix 的数据源。查看 各种 XGBoost 函数支持的数据结构 以获取支持的输入类型列表。

  • 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 方法完成。当用户想要指定分类特征而不必构建数据框作为输入时,这很有用。

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

    Added in version 1.3.0.

    备注

    此参数为实验性

    实验性支持对分类特征进行专门化处理。

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

    如果传递 ‘False’ 并且 ‘data’ 是一个包含分类列的数据框,将会导致抛出一个错误。

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

    JSON/UBJSON 序列化格式是此功能所必需的。

  • data_split_mode (DataSplitMode)

class xgboost.Booster(params=None, cache=None, model_file=None)[源代码]

基类:object

XGBoost 的助推器。

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

参数:
attr(key)[源代码]

从 Booster 获取属性字符串。

参数:

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

返回:

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

返回类型:

value

attributes()[源代码]

以字典形式获取存储在 Booster 中的属性。

返回:

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

返回类型:

dictionary of attribute_name: attribute_value pairs of strings.

property best_iteration: int

训练期间的最佳迭代。

property best_score: float

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

boost(dtrain, iteration, grad, hess)[源代码]

使用自定义的梯度统计数据对助推器进行一次迭代增强。类似于 xgboost.Booster.update(),此函数不应由用户直接调用。

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

  • grad (Any) – 梯度的第一阶。

  • hess (Any) – 二阶梯度。

  • iteration (int)

返回类型:

None

copy()[源代码]

复制助推器对象。

返回:

复制的助推器模型

返回类型:

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) – 当前迭代次数。

返回:

结果 – 评估结果字符串。

返回类型:

str

eval_set(evals, iteration=0, feval=None, output_margin=True)[源代码]

评估一组数据。

参数:
返回:

结果 – 评估结果字符串。

返回类型:

str

property feature_names: Sequence[str] | None

此增强器的特征名称。可以直接通过输入数据设置,也可以通过赋值设置。

property feature_types: Sequence[str] | None

此增强器的特征类型。可以直接通过输入数据设置,也可以通过赋值设置。详情请参见 DMatrix

get_dump(fmap='', with_stats=False, dump_format='text')[源代码]

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

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

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

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

返回类型:

List[str]

get_fscore(fmap='')[源代码]

获取每个特征的重要性。

备注

零重要性特征将不会被包含

请记住,此函数不包括零重要性特征,即那些在任何分割条件中未使用的特征。

参数:

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

返回类型:

Dict[str, float | List[float]]

get_score(fmap='', importance_type='weight')[源代码]

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

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

  • gain: 该特征在所有分割中使用的平均增益。

  • ‘cover’: 该特征在所有分割中使用的平均覆盖率。

  • total_gain:该特征在所有分割中使用的总增益。

  • ‘total_cover’: 该特征在所有分割中使用的总覆盖率。

备注

对于线性模型,仅定义了“权重”,它是没有偏差的归一化系数。

备注

零重要性特征将不会被包含

请记住,此函数不包括零重要性特征,即那些在任何分割条件中未使用的特征。

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

  • importance_type (str) – 上述定义的重要类型之一。

返回:

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

  • *多类分类 每个特征的分数是一个长度为*的列表

  • n_classes,否则它们是标量。

返回类型:

Dict[str, float | List[float]]

get_split_value_histogram(feature, fmap='', bins=None, as_pandas=True)[源代码]

获取特征的分裂值直方图

参数:
  • feature (str) – 功能的名称。

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

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

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

  • bins (int | None)

返回:

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

  • 可以是numpy数组或pandas DataFrame。

返回类型:

ndarray | DataFrame

inplace_predict(data, iteration_range=(0, 0), predict_type='value', missing=nan, validate_features=True, base_margin=None, strict_shape=False)[源代码]

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

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

备注

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

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

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

Added in version 1.1.0.

参数:
返回:

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

返回类型:

numpy.ndarray/cupy.ndarray

load_config(config)[源代码]

加载由 save_config 返回的配置。

Added in version 1.0.0.

参数:

config (str)

返回类型:

None

load_model(fname)[源代码]

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

模型以XGBoost内部格式保存,该格式在各种XGBoost接口中通用。Python Booster对象的辅助属性(如feature_names)仅在使用JSON或UBJSON(默认)格式时保存。更多信息请参见 模型IO

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

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

返回类型:

None

num_boosted_rounds()[源代码]

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

返回类型:

int

num_features()[源代码]

增强器中的特征数量。

返回类型:

int

predict(data, output_margin=False, pred_leaf=False, pred_contribs=False, approx_contribs=False, pred_interactions=False, validate_features=True, training=False, iteration_range=(0, 0), strict_shape=False)[源代码]

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

备注

关于线程安全和此函数输出的摘要等问题,请参阅 预测

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

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

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

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

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

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

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

  • training (bool) – 预测值是否用于训练。这会影响 dart 增强器,它在训练迭代期间执行丢弃操作,但在推理时使用所有树。如果你想获得带有丢弃的结果,请将此参数设置为 True。此外,在获取自定义目标函数的预测时,此参数也会设置为 true。 .. versionadded:: 1.0.0

  • iteration_range (Tuple[int | integer, int | integer]) – 指定用于预测的树层。例如,如果一个随机森林经过100轮训练。指定 iteration_range=(10, 20),那么只有在这[10, 20)(半开集)轮期间构建的森林用于此次预测。 .. versionadded:: 1.4.0

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

返回:

预测

返回类型:

numpy array

save_config()[源代码]

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

Added in version 1.0.0.

返回类型:

str

save_model(fname)[源代码]

将模型保存到文件中。

模型以XGBoost内部格式保存,该格式在各种XGBoost接口中通用。Python Booster对象的辅助属性(如feature_names)仅在使用JSON或UBJSON(默认)格式时保存。更多信息请参见 模型IO

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

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

返回类型:

None

save_raw(raw_format='ubj')[源代码]

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

模型以XGBoost内部格式保存,该格式在各种XGBoost接口中通用。Python Booster对象的辅助属性(如feature_names)仅在使用JSON或UBJSON(默认)格式时保存。更多信息请参见 模型IO

参数:

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

返回类型:

An in memory buffer representation of the model

set_attr(**kwargs)[源代码]

设置 Booster 的属性。

参数:

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

返回类型:

None

set_param(params, value=None)[源代码]

将参数设置到 Booster 中。

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

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

返回类型:

None

trees_to_dataframe(fmap='')[源代码]

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

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

参数:

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

返回类型:

DataFrame

update(dtrain, iteration, fobj=None)[源代码]

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

参数:
返回类型:

None

class xgboost.DataIter(cache_prefix=None, release_data=True)[源代码]

基类:ABC

用户定义数据迭代器的接口。该迭代器便于分布式训练、QuantileDMatrix 以及使用 DMatrix 的外部内存支持。大多数情况下,用户不需要直接与这个类交互。

备注

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

参数:
  • cache_prefix (str | None) – 缓存文件的前缀,仅在外部内存中使用。

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

get_callbacks(enable_categorical)[源代码]

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

参数:

enable_categorical (bool)

返回类型:

Tuple[Callable, Callable]

abstract next(input_data)[源代码]

设置下一批数据。

参数:

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

返回类型:

0 if there’s no more batch, otherwise 1.

property proxy: _ProxyDMatrix

DMatrix 代理的处理。

reraise()[源代码]

重新引发迭代过程中抛出的异常。

返回类型:

None

abstract reset()[源代码]

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

返回类型:

None

学习 API

包含训练例程的训练库。

xgboost.train(params, dtrain, num_boost_round=10, *, evals=None, obj=None, feval=None, maximize=None, early_stopping_rounds=None, evals_result=None, verbose_eval=True, xgb_model=None, callbacks=None, custom_metric=None)[源代码]

使用给定的参数训练一个增强器。

参数:
  • params (Dict[str, Any]) – 助推器参数。

  • dtrain (DMatrix) – 待训练的数据。

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

  • evals (Sequence[Tuple[DMatrix, str]] | None) – 在训练期间将评估其指标的验证集列表。验证指标将帮助我们跟踪模型的性能。

  • obj (Callable[[ndarray, DMatrix], Tuple[ndarray, ndarray]] | None) – 自定义目标函数。详情请参阅 自定义目标

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

    自 1.6.0 版本弃用: 使用 custom_metric 代替。

  • maximize (bool | None) – 是否最大化 feval。

  • early_stopping_rounds (int | None) – 激活早停机制。验证指标需要在每 early_stopping_rounds 轮中至少改善一次才能继续训练。至少需要一个 evals 中的项目。该方法返回最后一轮的模型(不是最佳模型)。如果需要最佳模型,请使用自定义回调或模型切片。如果 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 返回 .. code-block:: python {‘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) – 在每次迭代结束时应用的回调函数列表。可以通过使用 回调 API 来使用预定义的回调。 .. note:

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

    自定义指标函数。详情请参阅 自定义指标

返回:

助推器

返回类型:

a trained booster model

xgboost.cv(params, dtrain, num_boost_round=10, nfold=3, stratified=False, folds=None, metrics=(), obj=None, feval=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) – 助推器参数。

  • dtrain (DMatrix) – 待训练的数据。

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

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

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

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

  • metrics (string or list of strings) – 在计算机视觉中需要关注的评估指标。

  • obj (Callable[[ndarray, DMatrix], Tuple[ndarray, ndarray]] | None) – 自定义目标函数。详情请参阅 自定义目标

  • feval (function) –

    自 1.6.0 版本弃用: 使用 custom_metric 代替。

  • maximize (bool) – 是否最大化 feval。

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

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

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

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

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

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

  • callbacks (Sequence[TrainingCallback] | None) – 在每次迭代结束时应用的回调函数列表。可以通过使用 回调 API 来使用预定义的回调。 .. note:

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

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

    自定义指标函数。详情请参阅 自定义指标

返回:

评估历史

返回类型:

list(string)

Scikit-Learn API

Scikit-Learn 包装器接口用于 XGBoost。

class xgboost.XGBRegressor(*, objective='reg:squarederror', **kwargs)[源代码]

基类:XGBModel, RegressorMixin

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]) – 指定学习任务以及相应的学习目标或自定义目标函数。对于自定义目标,请参阅 自定义目标和评估指标自定义目标和指标 以获取更多信息,以及函数签名的结尾注释。

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

  • tree_method (Optional[str]) – 指定要使用的树方法。默认为自动。如果此参数设置为默认,XGBoost 将选择最保守的可用选项。建议从参数文档中研究此选项 树方法

  • n_jobs (Optional[int]) – 用于运行 xgboost 的并行线程数。当与其他 Scikit-Learn 算法(如网格搜索)一起使用时,您可以选择并行化哪个算法并平衡线程。创建线程争用将显著减慢两个算法。

  • gamma (Optional[float]) – (min_split_loss) 在树的叶节点上进行进一步分区所需的最小损失减少量。

  • min_child_weight (Optional[float]) – 子节点中所需的实例权重(Hessian)的最小和。

  • max_delta_step (Optional[float]) – 我们允许每棵树的权重估计的最大增量步长。

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

  • random_state (Union[numpy.random.mtrand.RandomState, numpy.random._generator.Generator, int, NoneType]) – 随机数种子。 .. 注意:: 使用 shotgun updater 的 gblinear booster 是非确定性的,因为它使用了 Hogwild 算法。

  • missing (float) – 数据中需要作为缺失值存在的值。默认为 numpy.nan

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

  • monotone_constraints (Union[Dict[str, int], str, NoneType]) – 变量单调性的约束。更多信息请参见 教程

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

  • importance_type (Optional[str]) – 特征重要性类型用于feature_importances_属性: * 对于树模型,可以是”gain”、”weight”、”cover”、”total_gain”或”total_cover”。 * 对于线性模型,仅定义了”weight”,它是无偏差的归一化系数。

  • device (Optional[str]) –

    Added in version 2.0.0.

    设备序号,可用选项为 cpucudagpu

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

  • enable_categorical (bool) – 详情请参见 DMatrix 的相同参数。

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

    Added in version 1.7.0.

    用于指定特征类型而不构建数据框。详情请参见 DMatrix

  • max_cat_to_onehot (Optional[int]) –

    Added in version 1.6.0.

    备注

    此参数为实验性

    决定XGBoost是否应使用独热编码进行分类数据分割的阈值。当类别数量小于阈值时,选择独热编码,否则类别将被分割到子节点中。此外,需要设置 enable_categorical 以支持分类特征。详情请参见 分类数据分类特征的参数

  • max_cat_threshold (Optional[int]) –

    Added in version 1.7.0.

    备注

    此参数为实验性

    每个分割考虑的最大类别数。仅用于基于分区的分割,以防止过拟合。此外,enable_categorical 需要设置为支持分类特征。详情请参见 分类数据分类特征的参数

  • multi_strategy (Optional[str]) –

    Added in version 2.0.0.

    备注

    此参数正在开发中。

    用于训练多目标模型的策略,包括多目标回归和多类分类。更多信息请参见 多重输出

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

    • multi_output_tree: 使用多目标树。

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

    Added in version 1.6.0.

    用于监控训练结果和提前停止的指标。它可以是一个字符串或字符串列表,作为XGBoost中预定义指标的名称(参见doc/parameter.rst),也可以是 sklearn.metrics 中的一个指标,或者是任何其他类似于 sklearn.metrics 的用户定义指标。

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

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

    For advanced usage on Early stopping like directly choosing to maximize instead of minimize, see xgboost.callback.EarlyStopping.

    更多信息请参见 自定义目标和评估指标自定义目标和指标

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

    Added in version 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]]) – 在每次迭代结束时应用的回调函数列表。可以通过使用 回调 API 来使用预定义的回调。 .. 注意:

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

apply(X, iteration_range=None)

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

参数:
返回:

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

返回类型:

array_like, shape=[n_samples, n_trees]

property best_iteration: int

通过早期停止获得的最佳迭代。此属性是基于0的,例如,如果最佳迭代是第一轮,那么 best_iteration 为 0。

property best_score: float

通过早期停止获得的最佳分数。

property coef_: ndarray

Coefficients 属性

备注

系数仅针对线性学习器定义

系数仅在选择线性模型作为基础学习器时定义(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) – 功能矩阵。查看 各种 XGBoost 函数支持的数据结构 以获取支持的类型列表。当 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 个验证集的基边界的类似数组的对象。

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

返回类型:

XGBModel

get_booster()

获取此模型的底层 xgboost Booster。

当未调用 fit 时,这将引发异常

返回:

booster

返回类型:

a xgboost booster of underlying model

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

返回:

拦截_

返回类型:

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

load_model(fname)

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

模型以XGBoost内部格式保存,该格式在各种XGBoost接口中通用。Python Booster对象的辅助属性(如feature_names)仅在使用JSON或UBJSON(默认)格式时保存。更多信息请参见 模型IO

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

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

返回类型:

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) – 用于预测的数据。

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

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

  • base_margin (Any | None) – 每个实例的全局偏差。详情请参见 拦截

  • iteration_range (Tuple[int | integer, int | integer] | None) – 指定用于预测的树层。例如,如果一个随机森林经过100轮训练。指定 iteration_range=(10, 20),那么只有在此期间[10, 20)(半开集)轮次内构建的森林用于此次预测。 .. versionadded:: 1.4.0

返回类型:

prediction

save_model(fname)

将模型保存到文件中。

模型以XGBoost内部格式保存,该格式在各种XGBoost接口中通用。Python Booster对象的辅助属性(如feature_names)仅在使用JSON或UBJSON(默认)格式时保存。更多信息请参见 模型IO

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

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

返回类型:

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 的期望值的常数模型,忽略输入特征,将得到一个 \(R^2\) 分数为 0.0。

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

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

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

返回:

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

返回类型:

float

备注

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

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) 保留现有的请求。这允许你更改某些参数的请求,而不更改其他参数。

Added in version 1.3.

备注

此方法仅在将此估计器用作元估计器的子估计器时相关,例如在 Pipeline 内部使用。否则它不会有任何效果。

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

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

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

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

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

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

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

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

  • self (XGBRegressor)

返回:

self – 更新后的对象。

返回类型:

object

set_params(**params)

设置此估计器的参数。修改了 sklearn 方法以允许未知的 kwargs。这允许使用在 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) 保留现有的请求。这允许你更改某些参数的请求,而不更改其他参数。

Added in version 1.3.

备注

此方法仅在将此估计器用作元估计器的子估计器时相关,例如在 Pipeline 内部使用。否则它不会有任何效果。

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

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

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

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

  • self (XGBRegressor)

返回:

self – 更新后的对象。

返回类型:

object

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

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

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

每个参数的选项是:

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

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

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

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

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

Added in version 1.3.

备注

此方法仅在将此估计器用作元估计器的子估计器时相关,例如在 Pipeline 内部使用。否则它不会有任何效果。

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

  • self (XGBRegressor)

返回:

self – 更新后的对象。

返回类型:

object

class xgboost.XGBClassifier(*, objective='binary:logistic', **kwargs)[源代码]

基类:XGBModel, ClassifierMixin

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]) – 指定学习任务以及相应的学习目标或自定义目标函数。对于自定义目标,请参阅 自定义目标和评估指标自定义目标和指标 以获取更多信息,以及函数签名的结尾注释。

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

  • tree_method (Optional[str]) – 指定要使用的树方法。默认为自动。如果此参数设置为默认,XGBoost 将选择最保守的可用选项。建议从参数文档中研究此选项 树方法

  • n_jobs (Optional[int]) – 用于运行 xgboost 的并行线程数。当与其他 Scikit-Learn 算法(如网格搜索)一起使用时,您可以选择并行化哪个算法并平衡线程。创建线程争用将显著减慢两个算法。

  • gamma (Optional[float]) – (min_split_loss) 在树的叶节点上进行进一步分区所需的最小损失减少量。

  • min_child_weight (Optional[float]) – 子节点中所需的实例权重(Hessian)的最小和。

  • max_delta_step (Optional[float]) – 我们允许每棵树的权重估计的最大增量步长。

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

  • random_state (Union[numpy.random.mtrand.RandomState, numpy.random._generator.Generator, int, NoneType]) – 随机数种子。 .. 注意:: 使用 shotgun updater 的 gblinear booster 是非确定性的,因为它使用了 Hogwild 算法。

  • missing (float) – 数据中需要作为缺失值存在的值。默认为 numpy.nan

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

  • monotone_constraints (Union[Dict[str, int], str, NoneType]) – 变量单调性的约束。更多信息请参见 教程

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

  • importance_type (Optional[str]) – 特征重要性类型用于feature_importances_属性: * 对于树模型,可以是”gain”、”weight”、”cover”、”total_gain”或”total_cover”。 * 对于线性模型,仅定义了”weight”,它是无偏差的归一化系数。

  • device (Optional[str]) –

    Added in version 2.0.0.

    设备序号,可用选项为 cpucudagpu

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

  • enable_categorical (bool) – 详情请参见 DMatrix 的相同参数。

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

    Added in version 1.7.0.

    用于指定特征类型而不构建数据框。详情请参见 DMatrix

  • max_cat_to_onehot (Optional[int]) –

    Added in version 1.6.0.

    备注

    此参数为实验性

    决定XGBoost是否应使用独热编码进行分类数据分割的阈值。当类别数量小于阈值时,选择独热编码,否则类别将被分割到子节点中。此外,需要设置 enable_categorical 以支持分类特征。详情请参见 分类数据分类特征的参数

  • max_cat_threshold (Optional[int]) –

    Added in version 1.7.0.

    备注

    此参数为实验性

    每个分割考虑的最大类别数。仅用于基于分区的分割,以防止过拟合。此外,enable_categorical 需要设置为支持分类特征。详情请参见 分类数据分类特征的参数

  • multi_strategy (Optional[str]) –

    Added in version 2.0.0.

    备注

    此参数正在开发中。

    用于训练多目标模型的策略,包括多目标回归和多类分类。更多信息请参见 多重输出

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

    • multi_output_tree: 使用多目标树。

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

    Added in version 1.6.0.

    用于监控训练结果和提前停止的指标。它可以是一个字符串或字符串列表,作为XGBoost中预定义指标的名称(参见doc/parameter.rst),也可以是 sklearn.metrics 中的一个指标,或者是任何其他类似于 sklearn.metrics 的用户定义指标。

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

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

    For advanced usage on Early stopping like directly choosing to maximize instead of minimize, see xgboost.callback.EarlyStopping.

    更多信息请参见 自定义目标和评估指标自定义目标和指标

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

    Added in version 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]]) – 在每次迭代结束时应用的回调函数列表。可以通过使用 回调 API 来使用预定义的回调。 .. 注意:

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

apply(X, iteration_range=None)

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

参数:
返回:

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

返回类型:

array_like, shape=[n_samples, n_trees]

property best_iteration: int

通过早期停止获得的最佳迭代。此属性是基于0的,例如,如果最佳迭代是第一轮,那么 best_iteration 为 0。

property best_score: float

通过早期停止获得的最佳分数。

property coef_: ndarray

Coefficients 属性

备注

系数仅针对线性学习器定义

系数仅在选择线性模型作为基础学习器时定义(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) – 功能矩阵。查看 各种 XGBoost 函数支持的数据结构 以获取支持的类型列表。当 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 个验证集的基边界的类似数组的对象。

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

返回类型:

XGBClassifier

get_booster()

获取此模型的底层 xgboost Booster。

当未调用 fit 时,这将引发异常

返回:

booster

返回类型:

a xgboost booster of underlying model

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

返回:

拦截_

返回类型:

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

load_model(fname)

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

模型以XGBoost内部格式保存,该格式在各种XGBoost接口中通用。Python Booster对象的辅助属性(如feature_names)仅在使用JSON或UBJSON(默认)格式时保存。更多信息请参见 模型IO

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

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

返回类型:

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) – 用于预测的数据。

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

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

  • base_margin (Any | None) – 每个实例的全局偏差。详情请参见 拦截

  • iteration_range (Tuple[int | integer, int | integer] | None) – 指定用于预测的树层。例如,如果一个随机森林经过100轮训练。指定 iteration_range=(10, 20),那么只有在此期间[10, 20)(半开集)轮次内构建的森林用于此次预测。 .. versionadded:: 1.4.0

返回类型:

prediction

predict_proba(X, validate_features=True, base_margin=None, iteration_range=None)[源代码]

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

备注

此函数仅对 gbtreedart 线程安全。

参数:
  • X (Any) – 功能矩阵。查看 各种 XGBoost 函数支持的数据结构 以获取支持的类型列表。

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

  • base_margin (Any | None) – 每个实例的全局偏差。详情请参见 拦截

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

返回:

一个形状为 (n_samples, n_classes) 的 numpy 数组,表示每个数据样本属于某一类的概率。

返回类型:

prediction

save_model(fname)

将模型保存到文件中。

模型以XGBoost内部格式保存,该格式在各种XGBoost接口中通用。Python Booster对象的辅助属性(如feature_names)仅在使用JSON或UBJSON(默认)格式时保存。更多信息请参见 模型IO

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

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

返回类型:

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) 保留现有的请求。这允许你更改某些参数的请求,而不更改其他参数。

Added in version 1.3.

备注

此方法仅在将此估计器用作元估计器的子估计器时相关,例如在 Pipeline 内部使用。否则它不会有任何效果。

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

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

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

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

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

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

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

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

  • self (XGBClassifier)

返回:

self – 更新后的对象。

返回类型:

object

set_params(**params)

设置此估计器的参数。修改了 sklearn 方法以允许未知的 kwargs。这允许使用在 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) 保留现有的请求。这允许你更改某些参数的请求,而不更改其他参数。

Added in version 1.3.

备注

此方法仅在将此估计器用作元估计器的子估计器时相关,例如在 Pipeline 内部使用。否则它不会有任何效果。

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

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

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

  • self (XGBClassifier)

返回:

self – 更新后的对象。

返回类型:

object

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

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

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

每个参数的选项是:

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

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

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

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

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

Added in version 1.3.

备注

此方法仅在将此估计器用作元估计器的子估计器时相关,例如在 Pipeline 内部使用。否则它不会有任何效果。

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

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

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

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

  • self (XGBClassifier)

返回:

self – 更新后的对象。

返回类型:

object

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

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

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

每个参数的选项是:

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

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

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

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

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

Added in version 1.3.

备注

此方法仅在将此估计器用作元估计器的子估计器时相关,例如在 Pipeline 内部使用。否则它不会有任何效果。

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

  • self (XGBClassifier)

返回:

self – 更新后的对象。

返回类型:

object

class xgboost.XGBRanker(*, objective='rank:ndcg', **kwargs)[源代码]

基类:XGBModel, XGBRankerMixIn

XGBoost 排名的 Scikit-Learn API 实现。

请参阅 Learning to Rank 以获取介绍。

更多信息请参见 使用 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]) – 指定学习任务以及相应的学习目标或自定义目标函数。对于自定义目标,请参阅 自定义目标和评估指标自定义目标和指标 以获取更多信息,以及函数签名的结尾注释。

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

  • tree_method (Optional[str]) – 指定要使用的树方法。默认为自动。如果此参数设置为默认,XGBoost 将选择最保守的可用选项。建议从参数文档中研究此选项 树方法

  • n_jobs (Optional[int]) – 用于运行 xgboost 的并行线程数。当与其他 Scikit-Learn 算法(如网格搜索)一起使用时,您可以选择并行化哪个算法并平衡线程。创建线程争用将显著减慢两个算法。

  • gamma (Optional[float]) – (min_split_loss) 在树的叶节点上进行进一步分区所需的最小损失减少量。

  • min_child_weight (Optional[float]) – 子节点中所需的实例权重(Hessian)的最小和。

  • max_delta_step (Optional[float]) – 我们允许每棵树的权重估计的最大增量步长。

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

  • random_state (Union[numpy.random.mtrand.RandomState, numpy.random._generator.Generator, int, NoneType]) – 随机数种子。 .. 注意:: 使用 shotgun updater 的 gblinear booster 是非确定性的,因为它使用了 Hogwild 算法。

  • missing (float) – 数据中需要作为缺失值存在的值。默认为 numpy.nan

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

  • monotone_constraints (Union[Dict[str, int], str, NoneType]) – 变量单调性的约束。更多信息请参见 教程

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

  • importance_type (Optional[str]) – 特征重要性类型用于feature_importances_属性: * 对于树模型,可以是”gain”、”weight”、”cover”、”total_gain”或”total_cover”。 * 对于线性模型,仅定义了”weight”,它是无偏差的归一化系数。

  • device (Optional[str]) –

    Added in version 2.0.0.

    设备序号,可用选项为 cpucudagpu

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

  • enable_categorical (bool) – 详情请参见 DMatrix 的相同参数。

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

    Added in version 1.7.0.

    用于指定特征类型而不构建数据框。详情请参见 DMatrix

  • max_cat_to_onehot (Optional[int]) –

    Added in version 1.6.0.

    备注

    此参数为实验性

    决定XGBoost是否应使用独热编码进行分类数据分割的阈值。当类别数量小于阈值时,选择独热编码,否则类别将被分割到子节点中。此外,需要设置 enable_categorical 以支持分类特征。详情请参见 分类数据分类特征的参数

  • max_cat_threshold (Optional[int]) –

    Added in version 1.7.0.

    备注

    此参数为实验性

    每个分割考虑的最大类别数。仅用于基于分区的分割,以防止过拟合。此外,enable_categorical 需要设置为支持分类特征。详情请参见 分类数据分类特征的参数

  • multi_strategy (Optional[str]) –

    Added in version 2.0.0.

    备注

    此参数正在开发中。

    用于训练多目标模型的策略,包括多目标回归和多类分类。更多信息请参见 多重输出

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

    • multi_output_tree: 使用多目标树。

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

    Added in version 1.6.0.

    用于监控训练结果和提前停止的指标。它可以是一个字符串或字符串列表,作为XGBoost中预定义指标的名称(参见doc/parameter.rst),也可以是 sklearn.metrics 中的一个指标,或者是任何其他类似于 sklearn.metrics 的用户定义指标。

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

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

    For advanced usage on Early stopping like directly choosing to maximize instead of minimize, see xgboost.callback.EarlyStopping.

    更多信息请参见 自定义目标和评估指标自定义目标和指标

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

    Added in version 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]]) – 在每次迭代结束时应用的回调函数列表。可以通过使用 回调 API 来使用预定义的回调。 .. 注意:

  • kwargs (Optional[Any]) – XGBoost Booster对象的关键字参数。参数的完整文档可以在:doc:`这里 </parameter>`找到。尝试通过构造函数参数和**kwargs字典同时设置参数将导致TypeError。

apply(X, iteration_range=None)[源代码]

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

参数:
返回:

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

返回类型:

array_like, shape=[n_samples, n_trees]

property best_iteration: int

通过早期停止获得的最佳迭代。此属性是基于0的,例如,如果最佳迭代是第一轮,那么 best_iteration 为 0。

property best_score: float

通过早期停止获得的最佳分数。

property coef_: ndarray

Coefficients 属性

备注

系数仅针对线性学习器定义

系数仅在选择线性模型作为基础学习器时定义(booster=gblinear)。对于其他基础学习器类型,如树学习器(booster=gbtree),则未定义。

返回:

coef_

返回类型:

形状为 [n_features][n_classes, n_features] 的数组

evals_result()

返回评估结果。

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

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

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

evals_result

property feature_importances_: ndarray

特征重要性属性,返回结果取决于 importance_type 参数。当模型使用多类/多标签/多目标数据集训练时,特征重要性是“平均”所有目标的。“平均”是基于重要性类型定义的。例如,如果重要性类型是“total_gain”,那么分数是所有树中每个分裂的损失变化的总和。

返回:

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

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

property feature_names_in_: ndarray

fit() 过程中看到的特征名称。仅当 X 的特征名称均为字符串时定义。

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

拟合梯度提升排序器

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

参数:
  • X (Any) – 功能矩阵。有关支持的类型列表,请参阅 各种 XGBoost 函数支持的数据结构 。当这是一个 pandas.DataFramecudf.DataFrame 时,它可能包含一个名为 qid 的特殊列,用于指定查询索引。使用特殊列与使用 qid 参数相同,只是它与 sklearn 实用函数(如 sklearn.model_selection.cross_validation())兼容。同样的约定适用于 XGBRanker.score()XGBRanker.predict() 。 +—–+—————-+—————-+ | qid | feat_0 | feat_1 | +—–+—————-+—————-+ | 0 | \(x_{00}\) | \(x_{01}\) | +—–+—————-+—————-+ | 1 | \(x_{10}\) | \(x_{11}\) | +—–+—————-+—————-+ | 1 | \(x_{20}\) | \(x_{21}\) | +—–+—————-+—————-+ 当 tree_method 设置为 hist 时,内部将使用 QuantileDMatrix 而不是 DMatrix 以节省内存。然而,当输入数据的设备与算法不匹配时,这会影响性能。例如,如果输入是 CPU 上的 numpy 数组,但训练使用 cuda ,则数据首先在 CPU 上处理,然后传输到 GPU。

  • y (Any) – 标签

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

  • qid (Any | None) – 每个训练样本的查询ID。应具有n_samples的大小。如果设置为None,则用户必须提供组或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 个验证集的基边界的类似数组的对象。

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

返回类型:

XGBRanker

get_booster()

获取此模型的底层 xgboost Booster。

当未调用 fit 时,这将引发异常

返回:

booster

返回类型:

a xgboost booster of underlying model

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

返回:

拦截_

返回类型:

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

load_model(fname)

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

模型以XGBoost内部格式保存,该格式在各种XGBoost接口中通用。Python Booster对象的辅助属性(如feature_names)仅在使用JSON或UBJSON(默认)格式时保存。更多信息请参见 模型IO

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

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

返回类型:

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) – 用于预测的数据。

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

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

  • base_margin (Any | None) – 每个实例的全局偏差。详情请参见 拦截

  • iteration_range (Tuple[int | integer, int | integer] | None) – 指定用于预测的树层。例如,如果一个随机森林经过100轮训练。指定 iteration_range=(10, 20),那么只有在此期间[10, 20)(半开集)轮次内构建的森林用于此次预测。 .. versionadded:: 1.4.0

返回类型:

prediction

save_model(fname)

将模型保存到文件中。

模型以XGBoost内部格式保存,该格式在各种XGBoost接口中通用。Python Booster对象的辅助属性(如feature_names)仅在使用JSON或UBJSON(默认)格式时保存。更多信息请参见 模型IO

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

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

返回类型:

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) 保留现有的请求。这允许你更改某些参数的请求,而不更改其他参数。

Added in version 1.3.

备注

此方法仅在将此估计器用作元估计器的子估计器时相关,例如在 Pipeline 内部使用。否则它不会有任何效果。

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

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

  • eval_group (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – fiteval_group 参数的元数据路由。

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

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

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

  • group (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – fitgroup 参数的元数据路由。

  • qid (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – fitqid 参数的元数据路由。

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

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

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

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

  • self (XGBRanker)

返回:

self – 更新后的对象。

返回类型:

object

set_params(**params)

设置此估计器的参数。修改了 sklearn 方法以允许未知的 kwargs。这允许使用在 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) 保留现有的请求。这允许你更改某些参数的请求,而不更改其他参数。

Added in version 1.3.

备注

此方法仅在将此估计器用作元估计器的子估计器时相关,例如在 Pipeline 内部使用。否则它不会有任何效果。

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

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

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

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

  • self (XGBRanker)

返回:

self – 更新后的对象。

返回类型:

object

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

基类:XGBRegressor

XGBoost 随机森林回归的 scikit-learn API。更多信息请参见 使用 Scikit-Learn 估计器接口

参数:
  • n_estimators (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]) – 指定学习任务以及相应的学习目标或自定义目标函数。对于自定义目标,请参阅 自定义目标和评估指标自定义目标和指标 以获取更多信息,以及函数签名的结尾注释。

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

  • tree_method (Optional[str]) – 指定要使用的树方法。默认为自动。如果此参数设置为默认,XGBoost 将选择最保守的可用选项。建议从参数文档中研究此选项 树方法

  • n_jobs (Optional[int]) – 用于运行 xgboost 的并行线程数。当与其他 Scikit-Learn 算法(如网格搜索)一起使用时,您可以选择并行化哪个算法并平衡线程。创建线程争用将显著减慢两个算法。

  • gamma (Optional[float]) – (min_split_loss) 在树的叶节点上进行进一步分区所需的最小损失减少量。

  • min_child_weight (Optional[float]) – 子节点中所需的实例权重(Hessian)的最小和。

  • max_delta_step (Optional[float]) – 我们允许每棵树的权重估计的最大增量步长。

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

  • random_state (Union[numpy.random.mtrand.RandomState, numpy.random._generator.Generator, int, NoneType]) – 随机数种子。 .. 注意:: 使用 shotgun updater 的 gblinear booster 是非确定性的,因为它使用了 Hogwild 算法。

  • missing (float) – 数据中需要作为缺失值存在的值。默认为 numpy.nan

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

  • monotone_constraints (Union[Dict[str, int], str, NoneType]) – 变量单调性的约束。更多信息请参见 教程

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

  • importance_type (Optional[str]) – 特征重要性类型用于feature_importances_属性: * 对于树模型,可以是”gain”、”weight”、”cover”、”total_gain”或”total_cover”。 * 对于线性模型,仅定义了”weight”,它是无偏差的归一化系数。

  • device (Optional[str]) –

    Added in version 2.0.0.

    设备序号,可用选项为 cpucudagpu

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

  • enable_categorical (bool) – 详情请参见 DMatrix 的相同参数。

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

    Added in version 1.7.0.

    用于指定特征类型而不构建数据框。详情请参见 DMatrix

  • max_cat_to_onehot (Optional[int]) –

    Added in version 1.6.0.

    备注

    此参数为实验性

    决定XGBoost是否应使用独热编码进行分类数据分割的阈值。当类别数量小于阈值时,选择独热编码,否则类别将被分割到子节点中。此外,需要设置 enable_categorical 以支持分类特征。详情请参见 分类数据分类特征的参数

  • max_cat_threshold (Optional[int]) –

    Added in version 1.7.0.

    备注

    此参数为实验性

    每个分割考虑的最大类别数。仅用于基于分区的分割,以防止过拟合。此外,enable_categorical 需要设置为支持分类特征。详情请参见 分类数据分类特征的参数

  • multi_strategy (Optional[str]) –

    Added in version 2.0.0.

    备注

    此参数正在开发中。

    用于训练多目标模型的策略,包括多目标回归和多类分类。更多信息请参见 多重输出

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

    • multi_output_tree: 使用多目标树。

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

    Added in version 1.6.0.

    用于监控训练结果和提前停止的指标。它可以是一个字符串或字符串列表,作为XGBoost中预定义指标的名称(参见doc/parameter.rst),也可以是 sklearn.metrics 中的一个指标,或者是任何其他类似于 sklearn.metrics 的用户定义指标。

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

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

    For advanced usage on Early stopping like directly choosing to maximize instead of minimize, see xgboost.callback.EarlyStopping.

    更多信息请参见 自定义目标和评估指标自定义目标和指标

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

    Added in version 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]]) – 在每次迭代结束时应用的回调函数列表。可以通过使用 回调 API 来使用预定义的回调。 .. 注意:

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

apply(X, iteration_range=None)

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

参数:
返回:

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

返回类型:

array_like, shape=[n_samples, n_trees]

property best_iteration: int

通过早期停止获得的最佳迭代。此属性是基于0的,例如,如果最佳迭代是第一轮,那么 best_iteration 为 0。

property best_score: float

通过早期停止获得的最佳分数。

property coef_: ndarray

Coefficients 属性

备注

系数仅针对线性学习器定义

系数仅在选择线性模型作为基础学习器时定义(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) – 功能矩阵。查看 各种 XGBoost 函数支持的数据结构 以获取支持的类型列表。当 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 个验证集的基边界的类似数组的对象。

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

返回类型:

XGBRFRegressor

get_booster()

获取此模型的底层 xgboost Booster。

当未调用 fit 时,这将引发异常

返回:

booster

返回类型:

a xgboost booster of underlying model

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

返回:

拦截_

返回类型:

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

load_model(fname)

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

模型以XGBoost内部格式保存,该格式在各种XGBoost接口中通用。Python Booster对象的辅助属性(如feature_names)仅在使用JSON或UBJSON(默认)格式时保存。更多信息请参见 模型IO

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

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

返回类型:

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) – 用于预测的数据。

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

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

  • base_margin (Any | None) – 每个实例的全局偏差。详情请参见 拦截

  • iteration_range (Tuple[int | integer, int | integer] | None) – 指定用于预测的树层。例如,如果一个随机森林经过100轮训练。指定 iteration_range=(10, 20),那么只有在此期间[10, 20)(半开集)轮次内构建的森林用于此次预测。 .. versionadded:: 1.4.0

返回类型:

prediction

save_model(fname)

将模型保存到文件中。

模型以XGBoost内部格式保存,该格式在各种XGBoost接口中通用。Python Booster对象的辅助属性(如feature_names)仅在使用JSON或UBJSON(默认)格式时保存。更多信息请参见 模型IO

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

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

返回类型:

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 的期望值的常数模型,忽略输入特征,将得到一个 \(R^2\) 分数为 0.0。

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

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

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

返回:

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

返回类型:

float

备注

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

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) 保留现有的请求。这允许你更改某些参数的请求,而不更改其他参数。

Added in version 1.3.

备注

此方法仅在将此估计器用作元估计器的子估计器时相关,例如在 Pipeline 内部使用。否则它不会有任何效果。

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

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

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

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

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

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

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

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

  • self (XGBRFRegressor)

返回:

self – 更新后的对象。

返回类型:

object

set_params(**params)

设置此估计器的参数。修改了 sklearn 方法以允许未知的 kwargs。这允许使用在 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) 保留现有的请求。这允许你更改某些参数的请求,而不更改其他参数。

Added in version 1.3.

备注

此方法仅在将此估计器用作元估计器的子估计器时相关,例如在 Pipeline 内部使用。否则它不会有任何效果。

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

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

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

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

  • self (XGBRFRegressor)

返回:

self – 更新后的对象。

返回类型:

object

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

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

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

每个参数的选项是:

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

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

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

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

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

Added in version 1.3.

备注

此方法仅在将此估计器用作元估计器的子估计器时相关,例如在 Pipeline 内部使用。否则它不会有任何效果。

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

  • self (XGBRFRegressor)

返回:

self – 更新后的对象。

返回类型:

object

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

基类:XGBClassifier

XGBoost 随机森林分类的 scikit-learn API。更多信息请参见 使用 Scikit-Learn 估计器接口

参数:
  • n_estimators (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]) – 指定学习任务以及相应的学习目标或自定义目标函数。对于自定义目标,请参阅 自定义目标和评估指标自定义目标和指标 以获取更多信息,以及函数签名的结尾注释。

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

  • tree_method (Optional[str]) – 指定要使用的树方法。默认为自动。如果此参数设置为默认,XGBoost 将选择最保守的可用选项。建议从参数文档中研究此选项 树方法

  • n_jobs (Optional[int]) – 用于运行 xgboost 的并行线程数。当与其他 Scikit-Learn 算法(如网格搜索)一起使用时,您可以选择并行化哪个算法并平衡线程。创建线程争用将显著减慢两个算法。

  • gamma (Optional[float]) – (min_split_loss) 在树的叶节点上进行进一步分区所需的最小损失减少量。

  • min_child_weight (Optional[float]) – 子节点中所需的实例权重(Hessian)的最小和。

  • max_delta_step (Optional[float]) – 我们允许每棵树的权重估计的最大增量步长。

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

  • random_state (Union[numpy.random.mtrand.RandomState, numpy.random._generator.Generator, int, NoneType]) – 随机数种子。 .. 注意:: 使用 shotgun updater 的 gblinear booster 是非确定性的,因为它使用了 Hogwild 算法。

  • missing (float) – 数据中需要作为缺失值存在的值。默认为 numpy.nan

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

  • monotone_constraints (Union[Dict[str, int], str, NoneType]) – 变量单调性的约束。更多信息请参见 教程

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

  • importance_type (Optional[str]) – 特征重要性类型用于feature_importances_属性: * 对于树模型,可以是”gain”、”weight”、”cover”、”total_gain”或”total_cover”。 * 对于线性模型,仅定义了”weight”,它是无偏差的归一化系数。

  • device (Optional[str]) –

    Added in version 2.0.0.

    设备序号,可用选项为 cpucudagpu

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

  • enable_categorical (bool) – 详情请参见 DMatrix 的相同参数。

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

    Added in version 1.7.0.

    用于指定特征类型而不构建数据框。详情请参见 DMatrix

  • max_cat_to_onehot (Optional[int]) –

    Added in version 1.6.0.

    备注

    此参数为实验性

    决定XGBoost是否应使用独热编码进行分类数据分割的阈值。当类别数量小于阈值时,选择独热编码,否则类别将被分割到子节点中。此外,需要设置 enable_categorical 以支持分类特征。详情请参见 分类数据分类特征的参数

  • max_cat_threshold (Optional[int]) –

    Added in version 1.7.0.

    备注

    此参数为实验性

    每个分割考虑的最大类别数。仅用于基于分区的分割,以防止过拟合。此外,enable_categorical 需要设置为支持分类特征。详情请参见 分类数据分类特征的参数

  • multi_strategy (Optional[str]) –

    Added in version 2.0.0.

    备注

    此参数正在开发中。

    用于训练多目标模型的策略,包括多目标回归和多类分类。更多信息请参见 多重输出

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

    • multi_output_tree: 使用多目标树。

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

    Added in version 1.6.0.

    用于监控训练结果和提前停止的指标。它可以是一个字符串或字符串列表,作为XGBoost中预定义指标的名称(参见doc/parameter.rst),也可以是 sklearn.metrics 中的一个指标,或者是任何其他类似于 sklearn.metrics 的用户定义指标。

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

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

    For advanced usage on Early stopping like directly choosing to maximize instead of minimize, see xgboost.callback.EarlyStopping.

    更多信息请参见 自定义目标和评估指标自定义目标和指标

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

    Added in version 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]]) – 在每次迭代结束时应用的回调函数列表。可以通过使用 回调 API 来使用预定义的回调。 .. 注意:

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

apply(X, iteration_range=None)

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

参数:
返回:

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

返回类型:

array_like, shape=[n_samples, n_trees]

property best_iteration: int

通过早期停止获得的最佳迭代。此属性是基于0的,例如,如果最佳迭代是第一轮,那么 best_iteration 为 0。

property best_score: float

通过早期停止获得的最佳分数。

property coef_: ndarray

Coefficients 属性

备注

系数仅针对线性学习器定义

系数仅在选择线性模型作为基础学习器时定义(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) – 功能矩阵。查看 各种 XGBoost 函数支持的数据结构 以获取支持的类型列表。当 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 个验证集的基边界的类似数组的对象。

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

返回类型:

XGBRFClassifier

get_booster()

获取此模型的底层 xgboost Booster。

当未调用 fit 时,这将引发异常

返回:

booster

返回类型:

a xgboost booster of underlying model

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

返回:

拦截_

返回类型:

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

load_model(fname)

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

模型以XGBoost内部格式保存,该格式在各种XGBoost接口中通用。Python Booster对象的辅助属性(如feature_names)仅在使用JSON或UBJSON(默认)格式时保存。更多信息请参见 模型IO

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

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

返回类型:

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) – 用于预测的数据。

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

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

  • base_margin (Any | None) – 每个实例的全局偏差。详情请参见 拦截

  • iteration_range (Tuple[int | integer, int | integer] | None) – 指定用于预测的树层。例如,如果一个随机森林经过100轮训练。指定 iteration_range=(10, 20),那么只有在此期间[10, 20)(半开集)轮次内构建的森林用于此次预测。 .. versionadded:: 1.4.0

返回类型:

prediction

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

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

备注

此函数仅对 gbtreedart 线程安全。

参数:
  • X (Any) – 功能矩阵。查看 各种 XGBoost 函数支持的数据结构 以获取支持的类型列表。

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

  • base_margin (Any | None) – 每个实例的全局偏差。详情请参见 拦截

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

返回:

一个形状为 (n_samples, n_classes) 的 numpy 数组,表示每个数据样本属于某一类的概率。

返回类型:

prediction

save_model(fname)

将模型保存到文件中。

模型以XGBoost内部格式保存,该格式在各种XGBoost接口中通用。Python Booster对象的辅助属性(如feature_names)仅在使用JSON或UBJSON(默认)格式时保存。更多信息请参见 模型IO

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

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

返回类型:

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) 保留现有的请求。这允许你更改某些参数的请求,而不更改其他参数。

Added in version 1.3.

备注

此方法仅在将此估计器用作元估计器的子估计器时相关,例如在 Pipeline 内部使用。否则它不会有任何效果。

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

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

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

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

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

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

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

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

  • self (XGBRFClassifier)

返回:

self – 更新后的对象。

返回类型:

object

set_params(**params)

设置此估计器的参数。修改了 sklearn 方法以允许未知的 kwargs。这允许使用在 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) 保留现有的请求。这允许你更改某些参数的请求,而不更改其他参数。

Added in version 1.3.

备注

此方法仅在将此估计器用作元估计器的子估计器时相关,例如在 Pipeline 内部使用。否则它不会有任何效果。

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

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

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

  • self (XGBRFClassifier)

返回:

self – 更新后的对象。

返回类型:

object

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

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

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

每个参数的选项是:

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

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

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

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

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

Added in version 1.3.

备注

此方法仅在将此估计器用作元估计器的子估计器时相关,例如在 Pipeline 内部使用。否则它不会有任何效果。

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

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

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

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

  • self (XGBRFClassifier)

返回:

self – 更新后的对象。

返回类型:

object

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

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

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

每个参数的选项是:

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

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

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

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

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

Added in version 1.3.

备注

此方法仅在将此估计器用作元估计器的子估计器时相关,例如在 Pipeline 内部使用。否则它不会有任何效果。

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

  • self (XGBRFClassifier)

返回:

self – 更新后的对象。

返回类型:

object

绘图 API

绘图库。

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

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

参数:
  • booster (XGBModel | Booster | dict) – Booster 或 XGBModel 实例,或由 Booster.get_fscore() 获取的字典

  • ax (matplotlib Axes) – 目标轴实例。如果为 None,将创建新的图形和轴。

  • grid (bool) – 打开或关闭轴网格。默认是True(打开)。

  • importance_type (str) – 重要性计算方式:可以是“权重”、“增益”或“覆盖” * “权重”是特征在树中出现的次数 * “增益”是使用该特征的分割的平均增益 * “覆盖”是使用该特征的分割的平均覆盖范围 其中,覆盖范围定义为受分割影响的样本数量

  • max_num_features (int | None) – 绘图上显示的最大顶部特征数量。如果为 None,则将显示所有特征。

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

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

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

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

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

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

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

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

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

  • kwargs (Any) – 传递给 ax.barh() 的其他关键字

返回:

ax

返回类型:

matplotlib Axes

xgboost.plot_tree(booster, fmap='', num_trees=0, rankdir=None, ax=None, **kwargs)[源代码]

绘制指定的树。

参数:
  • booster (Booster, XGBModel) – Booster 或 XGBModel 实例

  • fmap (str (optional)) – 特征图文件的名称

  • num_trees (int, default 0) – 指定目标树的序号

  • rankdir (str, default "TB") – 通过 graph_attr 传递给 graphviz

  • ax (matplotlib Axes, default None) – 目标轴实例。如果为 None,将创建新的图形和轴。

  • kwargs (Any) – 传递给 to_graphviz 的其他关键字

返回:

ax

返回类型:

matplotlib Axes

xgboost.to_graphviz(booster, fmap='', num_trees=0, rankdir=None, yes_color=None, no_color=None, condition_node_params=None, leaf_node_params=None, **kwargs)[源代码]

将指定的树转换为 graphviz 实例。IPython 可以自动绘制返回的 graphviz 实例。否则,您应该调用返回的 graphviz 实例的 .render() 方法。

参数:
  • booster (Booster | XGBModel) – Booster 或 XGBModel 实例

  • fmap (str | PathLike) – 特征图文件的名称

  • num_trees (int) – 指定目标树的序号

  • rankdir (str | None) – 通过 graph_attr 传递给 graphviz

  • yes_color (str | None) – 当满足节点条件时的边颜色。

  • no_color (str | None) – 当不满足节点条件时的边颜色。

  • condition_node_params (dict | None) – graphviz 的条件节点配置。示例: .. code-block:: python

  • leaf_node_params (dict | None) – graphviz 的叶节点配置。示例: .. code-block:: python

  • kwargs (Any) – 传递给 graphviz graph_attr 的其他关键字,例如 graph [ {key} = {value} ]

返回:

返回类型:

graphviz.Source

回调 API

包含训练例程的回调库。有关快速介绍,请参阅 回调函数

class xgboost.callback.TrainingCallback[源代码]

训练回调的接口。

Added in version 1.3.0.

after_iteration(model, epoch, evals_log)[源代码]

每次迭代后运行。当训练应停止时返回 True

参数:
  • model (Any) – 如果使用 xgboost 中的 cv 函数,则可以是 Booster 对象或 CVPack。

  • epoch (int) – 当前的训练迭代。

  • evals_log (Dict[str, Dict[str, List[float] | List[Tuple[float, float]]]]) – 包含评估历史的字典: .. code-block:: python {“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)[源代码]

基类:TrainingCallback

在每次迭代时打印评估结果。

Added in version 1.3.0.

参数:
  • rank (int) – 应该使用哪个工作者来打印结果。

  • period (int) – 打印之间的轮数。

  • show_stdv (bool) – 用于在简历中显示标准差。用户不应指定它。

after_iteration(model, epoch, evals_log)[源代码]

每次迭代后运行。当训练应停止时返回 True

参数:
  • model (Any) – 如果使用 xgboost 中的 cv 函数,则可以是 Booster 对象或 CVPack。

  • epoch (int) – 当前的训练迭代。

  • evals_log (Dict[str, Dict[str, List[float] | List[Tuple[float, float]]]]) – 包含评估历史的字典: .. code-block:: python {“data_name”: {“metric_name”: [0.5, …]}}

返回类型:

bool

after_training(model)[源代码]

训练完成后运行。

参数:

model (Any)

返回类型:

Any

class xgboost.callback.EarlyStopping(rounds, metric_name=None, data_name=None, maximize=None, save_best=False, min_delta=0.0)[源代码]

基类:TrainingCallback

用于提前停止的回调函数

Added in version 1.3.0.

参数:
  • rounds (int) – 早停轮数。

  • metric_name (str | None) – 用于提前停止的指标名称。

  • data_name (str | None) – 用于提前停止的数据集名称。

  • maximize (bool | None) – 是否最大化评估指标。None 表示自动(不推荐)。

  • save_best (bool | None) – 训练是否应该返回最佳模型或最后一个模型。

  • min_delta (float) –

    Added in version 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) – 如果使用 xgboost 中的 cv 函数,则可以是 Booster 对象或 CVPack。

  • epoch (int) – 当前的训练迭代。

  • evals_log (Dict[str, Dict[str, List[float] | List[Tuple[float, float]]]]) – 包含评估历史的字典: .. code-block:: python {“data_name”: {“metric_name”: [0.5, …]}}

返回类型:

bool

after_training(model)[源代码]

训练完成后运行。

参数:

model (Any)

返回类型:

Any

before_training(model)[源代码]

在训练开始前运行。

参数:

model (Any)

返回类型:

Any

class xgboost.callback.LearningRateScheduler(learning_rates)[源代码]

基类:TrainingCallback

用于调度学习率的回调函数。

Added in version 1.3.0.

参数:

learning_rates (Callable[[int], float] | Sequence[float]) – 如果它是一个可调用对象,那么它应该接受一个整数参数 epoch 并返回相应的学习率。否则,它应该是一个与提升轮数大小相同的序列,如列表或元组。

after_iteration(model, epoch, evals_log)[源代码]

每次迭代后运行。当训练应停止时返回 True

参数:
  • model (Any) – 如果使用 xgboost 中的 cv 函数,则可以是 Booster 对象或 CVPack。

  • epoch (int) – 当前的训练迭代。

  • evals_log (Dict[str, Dict[str, List[float] | List[Tuple[float, float]]]]) – 包含评估历史的字典: .. code-block:: python {“data_name”: {“metric_name”: [0.5, …]}}

返回类型:

bool

class xgboost.callback.TrainingCheckPoint(directory, name='model', as_pickle=False, interval=100)[源代码]

基类:TrainingCallback

检查点操作。鼓励用户为检查点创建自己的回调,因为 XGBoost 不处理分布式文件系统。在分布式系统上进行检查点操作时,请确保了解工作节点的等级,以避免多个工作节点将检查点保存到同一位置。

Added in version 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) – 如果使用 xgboost 中的 cv 函数,则可以是 Booster 对象或 CVPack。

  • epoch (int) – 当前的训练迭代。

  • evals_log (Dict[str, Dict[str, List[float] | List[Tuple[float, float]]]]) – 包含评估历史的字典: .. code-block:: python {“data_name”: {“metric_name”: [0.5, …]}}

返回类型:

bool

before_training(model)[源代码]

在训练开始前运行。

参数:

model (Any)

返回类型:

Any

Dask API

分布式训练的 Dask 扩展

参见 使用 Dask 进行分布式 XGBoost 的简单教程。另外参见 XGBoost Dask 功能演示 的一些示例。

本模块中有两组API,一组是包含 trainpredict 方法的功能性API。另一组是有状态的Scikit-Learner包装器,继承自单节点Scikit-Learn接口。

该实现深受 dask_xgboost 的影响:https://github.com/dask/dask-xgboost

可选的 dask 配置

  • xgboost.scheduler_address: 指定调度器地址,参见 故障排除

    Added in version 1.6.0.

    dask.config.set({"xgboost.scheduler_address": "192.0.0.100"})
    # We can also specify the port.
    dask.config.set({"xgboost.scheduler_address": "192.0.0.100:12345"})
    
class xgboost.dask.DaskDMatrix(client, data, label=None, *, weight=None, base_margin=None, missing=None, silent=False, feature_names=None, feature_types=None, group=None, qid=None, label_lower_bound=None, label_upper_bound=None, feature_weights=None, enable_categorical=False)[源代码]

基类:object

DMatrix 持有对 Dask DataFrame 或 Dask Array 的引用。构建 DaskDMatrix 会强制所有惰性计算执行。如果你想看到构建 DaskDMatrix 的实际计算,请显式等待输入数据。

See doc for xgboost.DMatrix constructor for other parameters. DaskDMatrix accepts only dask collection.

备注

DaskDMatrix 不会在工作者之间重新分区或移动数据。平衡数据是调用者的责任。

Added in version 1.0.0.

参数:
  • client (distributed.Client) – 指定用于训练的 dask 客户端。如果没有设置,则使用 dask 返回的默认客户端。

  • data (da.Array | dd.DataFrame)

  • label (da.Array | dd.DataFrame | dd.Series | None)

  • weight (da.Array | dd.DataFrame | dd.Series | None)

  • base_margin (da.Array | dd.DataFrame | dd.Series | None)

  • missing (float | None)

  • silent (bool)

  • feature_names (Sequence[str] | None)

  • feature_types (Sequence[str] | None)

  • group (da.Array | dd.DataFrame | dd.Series | None)

  • qid (da.Array | dd.DataFrame | dd.Series | None)

  • label_lower_bound (da.Array | dd.DataFrame | dd.Series | None)

  • label_upper_bound (da.Array | dd.DataFrame | dd.Series | None)

  • feature_weights (da.Array | dd.DataFrame | dd.Series | None)

  • enable_categorical (bool)

num_col()[源代码]

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

返回类型:

number of columns

class xgboost.dask.DaskQuantileDMatrix(client, data, label=None, *, weight=None, base_margin=None, missing=None, silent=False, feature_names=None, feature_types=None, max_bin=None, ref=None, group=None, qid=None, label_lower_bound=None, label_upper_bound=None, feature_weights=None, enable_categorical=False)[源代码]

基类:DaskDMatrix

一个 QuantileDMatrix 的 dask 版本。

参数:
  • client (distributed.Client)

  • data (da.Array | dd.DataFrame)

  • label (da.Array | dd.DataFrame | dd.Series | None)

  • weight (da.Array | dd.DataFrame | dd.Series | None)

  • base_margin (da.Array | dd.DataFrame | dd.Series | None)

  • missing (float | None)

  • silent (bool)

  • feature_names (Sequence[str] | None)

  • feature_types (Any | List[Any] | None)

  • max_bin (int | None)

  • ref (DMatrix | None)

  • group (da.Array | dd.DataFrame | dd.Series | None)

  • qid (da.Array | dd.DataFrame | dd.Series | None)

  • label_lower_bound (da.Array | dd.DataFrame | dd.Series | None)

  • label_upper_bound (da.Array | dd.DataFrame | dd.Series | None)

  • feature_weights (da.Array | dd.DataFrame | dd.Series | None)

  • enable_categorical (bool)

num_col()

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

返回类型:

number of columns

xgboost.dask.train(client, params, dtrain, num_boost_round=10, *, evals=None, obj=None, feval=None, early_stopping_rounds=None, xgb_model=None, verbose_eval=True, callbacks=None, custom_metric=None)[源代码]

训练 XGBoost 模型。

Added in version 1.0.0.

备注

其他参数与 xgboost.train() 相同,除了 evals_result,它作为函数返回值的一部分返回,而不是作为参数。

参数:
返回:

结果 – 包含训练好的增强器和评估历史的字典。history 字段与 xgboost.train 中的 eval_result 相同。 .. code-block:: python {‘booster’: xgboost.Booster, ‘history’: {‘train’: {‘logloss’: [‘0.48253’, ‘0.35953’]}, ‘eval’: {‘logloss’: [‘0.480385’, ‘0.357756’]}}}

返回类型:

dict

xgboost.dask.predict(client, model, data, output_margin=False, missing=nan, pred_leaf=False, pred_contribs=False, approx_contribs=False, pred_interactions=False, validate_features=True, iteration_range=(0, 0), strict_shape=False)[源代码]

使用训练好的提升器进行预测。

备注

使用 inplace_predict 在不需要某些特征时可能会更快。有关各种参数的详细信息,请参阅 xgboost.Booster.predict()。当输出具有超过2个维度(shap值,严格形状的叶子)时,输入应为 da.ArrayDaskDMatrix

Added in version 1.0.0.

参数:
  • client (distributed.Client | None) – 指定用于训练的 dask 客户端。如果没有设置,则使用 dask 返回的默认客户端。

  • model (TrainReturnT | Booster | distributed.Future) – 训练好的模型。它可以是一个分布式.Future,因此用户可以预先将它分散到所有工作节点上。

  • data (DaskDMatrix | da.Array | dd.DataFrame) – 用于预测的输入数据。当输入是数据框对象时,预测输出是一个序列。

  • missing (float) – 当输入数据不是 DaskDMatrix 时使用。指定被视为缺失的值。

  • output_margin (bool)

  • pred_leaf (bool)

  • pred_contribs (bool)

  • approx_contribs (bool)

  • pred_interactions (bool)

  • validate_features (bool)

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

  • strict_shape (bool)

返回:

预测 – 当输入数据是 dask.array.ArrayDaskDMatrix 时,返回值是一个数组;当输入数据是 dask.dataframe.DataFrame 时,返回值可以是 dask.dataframe.Seriesdask.dataframe.DataFrame,具体取决于输出形状。

返回类型:

dask.array.Array/dask.dataframe.Series

xgboost.dask.inplace_predict(client, model, data, iteration_range=(0, 0), predict_type='value', missing=nan, validate_features=True, base_margin=None, strict_shape=False)[源代码]

原地预测。详情请参阅 xgboost.Booster.inplace_predict() 中的文档。

Added in version 1.1.0.

参数:
返回:

当输入数据是 dask.array.Array 时,返回值是一个数组;当输入数据是 dask.dataframe.DataFrame 时,返回值可以是 dask.dataframe.Seriesdask.dataframe.DataFrame,具体取决于输出形状。

返回类型:

prediction

class xgboost.dask.DaskXGBClassifier(max_depth=None, max_leaves=None, max_bin=None, grow_policy=None, learning_rate=None, n_estimators=None, verbosity=None, objective=None, booster=None, tree_method=None, n_jobs=None, gamma=None, min_child_weight=None, max_delta_step=None, subsample=None, sampling_method=None, colsample_bytree=None, colsample_bylevel=None, colsample_bynode=None, reg_alpha=None, reg_lambda=None, scale_pos_weight=None, base_score=None, random_state=None, missing=nan, num_parallel_tree=None, monotone_constraints=None, interaction_constraints=None, importance_type=None, device=None, validate_parameters=None, enable_categorical=False, feature_types=None, max_cat_to_onehot=None, max_cat_threshold=None, multi_strategy=None, eval_metric=None, early_stopping_rounds=None, callbacks=None, **kwargs)[源代码]

基类:DaskScikitLearnBase, ClassifierMixin

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]) – 指定学习任务以及相应的学习目标或自定义目标函数。对于自定义目标,请参阅 自定义目标和评估指标自定义目标和指标 以获取更多信息,以及函数签名的结尾注释。

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

  • tree_method (Optional[str]) – 指定要使用的树方法。默认为自动。如果此参数设置为默认,XGBoost 将选择最保守的可用选项。建议从参数文档中研究此选项 树方法

  • n_jobs (Optional[int]) – 用于运行 xgboost 的并行线程数。当与其他 Scikit-Learn 算法(如网格搜索)一起使用时,您可以选择并行化哪个算法并平衡线程。创建线程争用将显著减慢两个算法。

  • gamma (Optional[float]) – (min_split_loss) 在树的叶节点上进行进一步分区所需的最小损失减少量。

  • min_child_weight (Optional[float]) – 子节点中所需的实例权重(Hessian)的最小和。

  • max_delta_step (Optional[float]) – 我们允许每棵树的权重估计的最大增量步长。

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

  • random_state (Union[numpy.random.mtrand.RandomState, numpy.random._generator.Generator, int, NoneType]) – 随机数种子。 .. 注意:: 使用 shotgun updater 的 gblinear booster 是非确定性的,因为它使用了 Hogwild 算法。

  • missing (float) – 数据中需要作为缺失值存在的值。默认为 numpy.nan

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

  • monotone_constraints (Union[Dict[str, int], str, NoneType]) – 变量单调性的约束。更多信息请参见 教程

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

  • importance_type (Optional[str]) – 特征重要性类型用于feature_importances_属性: * 对于树模型,可以是”gain”、”weight”、”cover”、”total_gain”或”total_cover”。 * 对于线性模型,仅定义了”weight”,它是无偏差的归一化系数。

  • device (Optional[str]) –

    Added in version 2.0.0.

    设备序号,可用选项为 cpucudagpu

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

  • enable_categorical (bool) – 详情请参见 DMatrix 的相同参数。

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

    Added in version 1.7.0.

    用于指定特征类型而不构建数据框。详情请参见 DMatrix

  • max_cat_to_onehot (Optional[int]) –

    Added in version 1.6.0.

    备注

    此参数为实验性

    决定XGBoost是否应使用独热编码进行分类数据分割的阈值。当类别数量小于阈值时,选择独热编码,否则类别将被分割到子节点中。此外,需要设置 enable_categorical 以支持分类特征。详情请参见 分类数据分类特征的参数

  • max_cat_threshold (Optional[int]) –

    Added in version 1.7.0.

    备注

    此参数为实验性

    每个分割考虑的最大类别数。仅用于基于分区的分割,以防止过拟合。此外,enable_categorical 需要设置为支持分类特征。详情请参见 分类数据分类特征的参数

  • multi_strategy (Optional[str]) –

    Added in version 2.0.0.

    备注

    此参数正在开发中。

    用于训练多目标模型的策略,包括多目标回归和多类分类。更多信息请参见 多重输出

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

    • multi_output_tree: 使用多目标树。

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

    Added in version 1.6.0.

    用于监控训练结果和提前停止的指标。它可以是一个字符串或字符串列表,作为XGBoost中预定义指标的名称(参见doc/parameter.rst),也可以是 sklearn.metrics 中的一个指标,或者是任何其他类似于 sklearn.metrics 的用户定义指标。

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

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

    For advanced usage on Early stopping like directly choosing to maximize instead of minimize, see xgboost.callback.EarlyStopping.

    更多信息请参见 自定义目标和评估指标自定义目标和指标

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

    Added in version 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]]) – 在每次迭代结束时应用的回调函数列表。可以通过使用 回调 API 来使用预定义的回调。 .. 注意:

  • kwargs (Optional[Any]) – XGBoost Booster对象的关键字参数。参数的完整文档可以在 这里 找到。尝试通过构造函数参数和 **kwargs 字典同时设置参数将导致 TypeError。 .. 注意:: **kwargs 不支持 scikit-learn **kwargs 不被 scikit-learn 支持。我们不保证通过此参数传递的参数会与 scikit-learn 正确交互。

apply(X, iteration_range=None)

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

参数:
返回:

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

返回类型:

array_like, shape=[n_samples, n_trees]

property best_iteration: int

通过早期停止获得的最佳迭代。此属性是基于0的,例如,如果最佳迭代是第一轮,那么 best_iteration 为 0。

property best_score: float

通过早期停止获得的最佳分数。

property client: distributed.Client

在此模型中使用的 dask 客户端。Client 对象不能被序列化以进行传输,因此如果任务是从工作进程而不是直接从客户端进程启动的,则需要在该工作进程中设置此属性。

property coef_: ndarray

Coefficients 属性

备注

系数仅针对线性学习器定义

系数仅在选择线性模型作为基础学习器时定义(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 (da.Array | dd.DataFrame) – 功能矩阵。查看 各种 XGBoost 函数支持的数据结构 以获取支持的类型列表。当 tree_method 设置为 hist 时,内部将使用 QuantileDMatrix 而不是 DMatrix 以节省内存。然而,当输入数据的设备与算法不匹配时,这会影响性能。例如,如果输入是CPU上的numpy数组,但训练使用 cuda,则数据首先在CPU上处理,然后传输到GPU。

  • y (da.Array | dd.DataFrame | dd.Series) – 标签

  • sample_weight (da.Array | dd.DataFrame | dd.Series | None) – 实例权重

  • base_margin (da.Array | dd.DataFrame | dd.Series | None) – 每个实例的全局偏差。详情请参见 拦截

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

  • verbose (int | bool) – 如果 verbose 为 True 并且使用了评估集,验证集上的评估指标会在每次提升阶段打印到标准输出。如果 verbose 是一个整数,评估指标会在每 verbose 次提升阶段打印。最后一次提升阶段或通过 early_stopping_rounds 找到的提升阶段也会被打印。

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

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

  • base_margin_eval_set (Sequence[da.Array | dd.DataFrame | dd.Series] | None) – 形式为 [M_1, M_2, …, M_n] 的列表,其中每个 M_i 是一个存储第 i 个验证集的基边界的类似数组的对象。

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

返回类型:

DaskXGBClassifier

get_booster()

获取此模型的底层 xgboost Booster。

当未调用 fit 时,这将引发异常

返回:

booster

返回类型:

a xgboost booster of underlying model

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

返回:

拦截_

返回类型:

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

load_model(fname)

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

模型以XGBoost内部格式保存,该格式在各种XGBoost接口中通用。Python Booster对象的辅助属性(如feature_names)仅在使用JSON或UBJSON(默认)格式时保存。更多信息请参见 模型IO

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

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

返回类型:

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 (da.Array | dd.DataFrame) – 用于预测的数据。

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

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

  • base_margin (da.Array | dd.DataFrame | dd.Series | None) – 每个实例的全局偏差。详情请参见 拦截

  • iteration_range (Tuple[int | integer, int | integer] | None) – 指定用于预测的树层。例如,如果一个随机森林经过100轮训练。指定 iteration_range=(10, 20),那么只有在此期间[10, 20)(半开集)轮次内构建的森林用于此次预测。 .. versionadded:: 1.4.0

返回类型:

prediction

predict_proba(X, validate_features=True, base_margin=None, iteration_range=None)[源代码]

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

备注

此函数仅对 gbtreedart 线程安全。

参数:
  • X (da.Array | dd.DataFrame | dd.Series) – 功能矩阵。查看 各种 XGBoost 函数支持的数据结构 以获取支持的类型列表。

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

  • base_margin (da.Array | dd.DataFrame | dd.Series | None) – 每个实例的全局偏差。详情请参见 拦截

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

返回:

一个形状为 (n_samples, n_classes) 的 numpy 数组,表示每个数据样本属于某一类的概率。

返回类型:

prediction

save_model(fname)

将模型保存到文件中。

模型以XGBoost内部格式保存,该格式在各种XGBoost接口中通用。Python Booster对象的辅助属性(如feature_names)仅在使用JSON或UBJSON(默认)格式时保存。更多信息请参见 模型IO

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

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

返回类型:

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) 保留现有的请求。这允许你更改某些参数的请求,而不更改其他参数。

Added in version 1.3.

备注

此方法仅在将此估计器用作元估计器的子估计器时相关,例如在 Pipeline 内部使用。否则它不会有任何效果。

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

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

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

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

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

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

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

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

  • self (DaskXGBClassifier)

返回:

self – 更新后的对象。

返回类型:

object

set_params(**params)

设置此估计器的参数。修改了 sklearn 方法以允许未知的 kwargs。这允许使用在 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) 保留现有的请求。这允许你更改某些参数的请求,而不更改其他参数。

Added in version 1.3.

备注

此方法仅在将此估计器用作元估计器的子估计器时相关,例如在 Pipeline 内部使用。否则它不会有任何效果。

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

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

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

  • self (DaskXGBClassifier)

返回:

self – 更新后的对象。

返回类型:

object

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

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

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

每个参数的选项是:

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

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

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

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

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

Added in version 1.3.

备注

此方法仅在将此估计器用作元估计器的子估计器时相关,例如在 Pipeline 内部使用。否则它不会有任何效果。

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

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

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

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

  • self (DaskXGBClassifier)

返回:

self – 更新后的对象。

返回类型:

object

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

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

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

每个参数的选项是:

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

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

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

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

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

Added in version 1.3.

备注

此方法仅在将此估计器用作元估计器的子估计器时相关,例如在 Pipeline 内部使用。否则它不会有任何效果。

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

  • self (DaskXGBClassifier)

返回:

self – 更新后的对象。

返回类型:

object

class xgboost.dask.DaskXGBRegressor(max_depth=None, max_leaves=None, max_bin=None, grow_policy=None, learning_rate=None, n_estimators=None, verbosity=None, objective=None, booster=None, tree_method=None, n_jobs=None, gamma=None, min_child_weight=None, max_delta_step=None, subsample=None, sampling_method=None, colsample_bytree=None, colsample_bylevel=None, colsample_bynode=None, reg_alpha=None, reg_lambda=None, scale_pos_weight=None, base_score=None, random_state=None, missing=nan, num_parallel_tree=None, monotone_constraints=None, interaction_constraints=None, importance_type=None, device=None, validate_parameters=None, enable_categorical=False, feature_types=None, max_cat_to_onehot=None, max_cat_threshold=None, multi_strategy=None, eval_metric=None, early_stopping_rounds=None, callbacks=None, **kwargs)[源代码]

基类:DaskScikitLearnBase, RegressorMixin

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]) – 指定学习任务以及相应的学习目标或自定义目标函数。对于自定义目标,请参阅 自定义目标和评估指标自定义目标和指标 以获取更多信息,以及函数签名的结尾注释。

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

  • tree_method (Optional[str]) – 指定要使用的树方法。默认为自动。如果此参数设置为默认,XGBoost 将选择最保守的可用选项。建议从参数文档中研究此选项 树方法

  • n_jobs (Optional[int]) – 用于运行 xgboost 的并行线程数。当与其他 Scikit-Learn 算法(如网格搜索)一起使用时,您可以选择并行化哪个算法并平衡线程。创建线程争用将显著减慢两个算法。

  • gamma (Optional[float]) – (min_split_loss) 在树的叶节点上进行进一步分区所需的最小损失减少量。

  • min_child_weight (Optional[float]) – 子节点中所需的实例权重(Hessian)的最小和。

  • max_delta_step (Optional[float]) – 我们允许每棵树的权重估计的最大增量步长。

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

  • random_state (Union[numpy.random.mtrand.RandomState, numpy.random._generator.Generator, int, NoneType]) – 随机数种子。 .. 注意:: 使用 shotgun updater 的 gblinear booster 是非确定性的,因为它使用了 Hogwild 算法。

  • missing (float) – 数据中需要作为缺失值存在的值。默认为 numpy.nan

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

  • monotone_constraints (Union[Dict[str, int], str, NoneType]) – 变量单调性的约束。更多信息请参见 教程

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

  • importance_type (Optional[str]) – 特征重要性类型用于feature_importances_属性: * 对于树模型,可以是”gain”、”weight”、”cover”、”total_gain”或”total_cover”。 * 对于线性模型,仅定义了”weight”,它是无偏差的归一化系数。

  • device (Optional[str]) –

    Added in version 2.0.0.

    设备序号,可用选项为 cpucudagpu

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

  • enable_categorical (bool) – 详情请参见 DMatrix 的相同参数。

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

    Added in version 1.7.0.

    用于指定特征类型而不构建数据框。详情请参见 DMatrix

  • max_cat_to_onehot (Optional[int]) –

    Added in version 1.6.0.

    备注

    此参数为实验性

    决定XGBoost是否应使用独热编码进行分类数据分割的阈值。当类别数量小于阈值时,选择独热编码,否则类别将被分割到子节点中。此外,需要设置 enable_categorical 以支持分类特征。详情请参见 分类数据分类特征的参数

  • max_cat_threshold (Optional[int]) –

    Added in version 1.7.0.

    备注

    此参数为实验性

    每个分割考虑的最大类别数。仅用于基于分区的分割,以防止过拟合。此外,enable_categorical 需要设置为支持分类特征。详情请参见 分类数据分类特征的参数

  • multi_strategy (Optional[str]) –

    Added in version 2.0.0.

    备注

    此参数正在开发中。

    用于训练多目标模型的策略,包括多目标回归和多类分类。更多信息请参见 多重输出

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

    • multi_output_tree: 使用多目标树。

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

    Added in version 1.6.0.

    用于监控训练结果和提前停止的指标。它可以是一个字符串或字符串列表,作为XGBoost中预定义指标的名称(参见doc/parameter.rst),也可以是 sklearn.metrics 中的一个指标,或者是任何其他类似于 sklearn.metrics 的用户定义指标。

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

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

    For advanced usage on Early stopping like directly choosing to maximize instead of minimize, see xgboost.callback.EarlyStopping.

    更多信息请参见 自定义目标和评估指标自定义目标和指标

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

    Added in version 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]]) – 在每次迭代结束时应用的回调函数列表。可以通过使用 回调 API 来使用预定义的回调。 .. 注意:

  • kwargs (Optional[Any]) – XGBoost Booster对象的关键字参数。参数的完整文档可以在 这里 找到。尝试通过构造函数参数和 **kwargs 字典同时设置参数将导致 TypeError。 .. 注意:: **kwargs 不支持 scikit-learn **kwargs 不被 scikit-learn 支持。我们不保证通过此参数传递的参数会与 scikit-learn 正确交互。

apply(X, iteration_range=None)

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

参数:
返回:

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

返回类型:

array_like, shape=[n_samples, n_trees]

property best_iteration: int

通过早期停止获得的最佳迭代。此属性是基于0的,例如,如果最佳迭代是第一轮,那么 best_iteration 为 0。

property best_score: float

通过早期停止获得的最佳分数。

property client: distributed.Client

在此模型中使用的 dask 客户端。Client 对象不能被序列化以进行传输,因此如果任务是从工作进程而不是直接从客户端进程启动的,则需要在该工作进程中设置此属性。

property coef_: ndarray

Coefficients 属性

备注

系数仅针对线性学习器定义

系数仅在选择线性模型作为基础学习器时定义(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 (da.Array | dd.DataFrame) – 功能矩阵。查看 各种 XGBoost 函数支持的数据结构 以获取支持的类型列表。当 tree_method 设置为 hist 时,内部将使用 QuantileDMatrix 而不是 DMatrix 以节省内存。然而,当输入数据的设备与算法不匹配时,这会影响性能。例如,如果输入是CPU上的numpy数组,但训练使用 cuda,则数据首先在CPU上处理,然后传输到GPU。

  • y (da.Array | dd.DataFrame | dd.Series) – 标签

  • sample_weight (da.Array | dd.DataFrame | dd.Series | None) – 实例权重

  • base_margin (da.Array | dd.DataFrame | dd.Series | None) – 每个实例的全局偏差。详情请参见 拦截

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

  • verbose (int | bool) – 如果 verbose 为 True 并且使用了评估集,验证集上的评估指标会在每次提升阶段打印到标准输出。如果 verbose 是一个整数,评估指标会在每 verbose 次提升阶段打印。最后一次提升阶段或通过 early_stopping_rounds 找到的提升阶段也会被打印。

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

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

  • base_margin_eval_set (Sequence[da.Array | dd.DataFrame | dd.Series] | None) – 形式为 [M_1, M_2, …, M_n] 的列表,其中每个 M_i 是一个存储第 i 个验证集的基边界的类似数组的对象。

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

返回类型:

DaskXGBRegressor

get_booster()

获取此模型的底层 xgboost Booster。

当未调用 fit 时,这将引发异常

返回:

booster

返回类型:

a xgboost booster of underlying model

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

返回:

拦截_

返回类型:

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

load_model(fname)

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

模型以XGBoost内部格式保存,该格式在各种XGBoost接口中通用。Python Booster对象的辅助属性(如feature_names)仅在使用JSON或UBJSON(默认)格式时保存。更多信息请参见 模型IO

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

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

返回类型:

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 (da.Array | dd.DataFrame) – 用于预测的数据。

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

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

  • base_margin (da.Array | dd.DataFrame | dd.Series | None) – 每个实例的全局偏差。详情请参见 拦截

  • iteration_range (Tuple[int | integer, int | integer] | None) – 指定用于预测的树层。例如,如果一个随机森林经过100轮训练。指定 iteration_range=(10, 20),那么只有在此期间[10, 20)(半开集)轮次内构建的森林用于此次预测。 .. versionadded:: 1.4.0

返回类型:

prediction

save_model(fname)

将模型保存到文件中。

模型以XGBoost内部格式保存,该格式在各种XGBoost接口中通用。Python Booster对象的辅助属性(如feature_names)仅在使用JSON或UBJSON(默认)格式时保存。更多信息请参见 模型IO

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

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

返回类型:

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 的期望值的常数模型,忽略输入特征,将得到一个 \(R^2\) 分数为 0.0。

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

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

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

返回:

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

返回类型:

float

备注

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

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) 保留现有的请求。这允许你更改某些参数的请求,而不更改其他参数。

Added in version 1.3.

备注

此方法仅在将此估计器用作元估计器的子估计器时相关,例如在 Pipeline 内部使用。否则它不会有任何效果。

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

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

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

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

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

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

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

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

  • self (DaskXGBRegressor)

返回:

self – 更新后的对象。

返回类型:

object

set_params(**params)

设置此估计器的参数。修改了 sklearn 方法以允许未知的 kwargs。这允许使用在 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) 保留现有的请求。这允许你更改某些参数的请求,而不更改其他参数。

Added in version 1.3.

备注

此方法仅在将此估计器用作元估计器的子估计器时相关,例如在 Pipeline 内部使用。否则它不会有任何效果。

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

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

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

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

  • self (DaskXGBRegressor)

返回:

self – 更新后的对象。

返回类型:

object

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

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

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

每个参数的选项是:

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

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

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

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

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

Added in version 1.3.

备注

此方法仅在将此估计器用作元估计器的子估计器时相关,例如在 Pipeline 内部使用。否则它不会有任何效果。

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

  • self (DaskXGBRegressor)

返回:

self – 更新后的对象。

返回类型:

object

class xgboost.dask.DaskXGBRanker(*, objective='rank:pairwise', **kwargs)[源代码]

基类:DaskScikitLearnBase, XGBRankerMixIn

XGBoost 排名的 Scikit-Learn API 实现。

Added in version 1.4.0.

更多信息请参见 使用 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]) – 指定学习任务以及相应的学习目标或自定义目标函数。对于自定义目标,请参阅 自定义目标和评估指标自定义目标和指标 以获取更多信息,以及函数签名的结尾注释。

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

  • tree_method (Optional[str]) – 指定要使用的树方法。默认为自动。如果此参数设置为默认,XGBoost 将选择最保守的可用选项。建议从参数文档中研究此选项 树方法

  • n_jobs (Optional[int]) – 用于运行 xgboost 的并行线程数。当与其他 Scikit-Learn 算法(如网格搜索)一起使用时,您可以选择并行化哪个算法并平衡线程。创建线程争用将显著减慢两个算法。

  • gamma (Optional[float]) – (min_split_loss) 在树的叶节点上进行进一步分区所需的最小损失减少量。

  • min_child_weight (Optional[float]) – 子节点中所需的实例权重(Hessian)的最小和。

  • max_delta_step (Optional[float]) – 我们允许每棵树的权重估计的最大增量步长。

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

  • random_state (Union[numpy.random.mtrand.RandomState, numpy.random._generator.Generator, int, NoneType]) – 随机数种子。 .. 注意:: 使用 shotgun updater 的 gblinear booster 是非确定性的,因为它使用了 Hogwild 算法。

  • missing (float) – 数据中需要作为缺失值存在的值。默认为 numpy.nan

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

  • monotone_constraints (Union[Dict[str, int], str, NoneType]) – 变量单调性的约束。更多信息请参见 教程

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

  • importance_type (Optional[str]) – 特征重要性类型用于feature_importances_属性: * 对于树模型,可以是”gain”、”weight”、”cover”、”total_gain”或”total_cover”。 * 对于线性模型,仅定义了”weight”,它是无偏差的归一化系数。

  • device (Optional[str]) –

    Added in version 2.0.0.

    设备序号,可用选项为 cpucudagpu

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

  • enable_categorical (bool) – 详情请参见 DMatrix 的相同参数。

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

    Added in version 1.7.0.

    用于指定特征类型而不构建数据框。详情请参见 DMatrix

  • max_cat_to_onehot (Optional[int]) –

    Added in version 1.6.0.

    备注

    此参数为实验性

    决定XGBoost是否应使用独热编码进行分类数据分割的阈值。当类别数量小于阈值时,选择独热编码,否则类别将被分割到子节点中。此外,需要设置 enable_categorical 以支持分类特征。详情请参见 分类数据分类特征的参数

  • max_cat_threshold (Optional[int]) –

    Added in version 1.7.0.

    备注

    此参数为实验性

    每个分割考虑的最大类别数。仅用于基于分区的分割,以防止过拟合。此外,enable_categorical 需要设置为支持分类特征。详情请参见 分类数据分类特征的参数

  • multi_strategy (Optional[str]) –

    Added in version 2.0.0.

    备注

    此参数正在开发中。

    用于训练多目标模型的策略,包括多目标回归和多类分类。更多信息请参见 多重输出

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

    • multi_output_tree: 使用多目标树。

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

    Added in version 1.6.0.

    用于监控训练结果和提前停止的指标。它可以是一个字符串或字符串列表,作为XGBoost中预定义指标的名称(参见doc/parameter.rst),也可以是 sklearn.metrics 中的一个指标,或者是任何其他类似于 sklearn.metrics 的用户定义指标。

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

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

    For advanced usage on Early stopping like directly choosing to maximize instead of minimize, see xgboost.callback.EarlyStopping.

    更多信息请参见 自定义目标和评估指标自定义目标和指标

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

    Added in version 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]]) – 在每次迭代结束时应用的回调函数列表。可以通过使用 回调 API 来使用预定义的回调。 .. 注意:

  • kwargs (Optional[Any]) – XGBoost Booster对象的关键字参数。参数的完整文档可以在:doc:`这里 </parameter>`找到。尝试通过构造函数参数和**kwargs字典同时设置参数将导致TypeError。 .. 注意:: **kwargs 不支持 scikit-learn **kwargs 不被 scikit-learn 支持。我们不保证通过此参数传递的参数能与 scikit-learn 正确交互。 .. 注意:: 对于 dask 实现,group 不被支持,请使用 qid 代替。

apply(X, iteration_range=None)

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

参数:
返回:

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

返回类型:

array_like, shape=[n_samples, n_trees]

property best_iteration: int

通过早期停止获得的最佳迭代。此属性是基于0的,例如,如果最佳迭代是第一轮,那么 best_iteration 为 0。

property best_score: float

通过早期停止获得的最佳分数。

property client: distributed.Client

在此模型中使用的 dask 客户端。Client 对象不能被序列化以进行传输,因此如果任务是从工作进程而不是直接从客户端进程启动的,则需要在该工作进程中设置此属性。

property coef_: ndarray

Coefficients 属性

备注

系数仅针对线性学习器定义

系数仅在选择线性模型作为基础学习器时定义(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 (da.Array | dd.DataFrame) – 功能矩阵。有关支持的类型列表,请参阅 各种 XGBoost 函数支持的数据结构 。当这是一个 pandas.DataFramecudf.DataFrame 时,它可能包含一个名为 qid 的特殊列,用于指定查询索引。使用特殊列与使用 qid 参数相同,只是它与 sklearn 实用函数(如 sklearn.model_selection.cross_validation())兼容。同样的约定适用于 XGBRanker.score()XGBRanker.predict() 。 +—–+—————-+—————-+ | qid | feat_0 | feat_1 | +—–+—————-+—————-+ | 0 | \(x_{00}\) | \(x_{01}\) | +—–+—————-+—————-+ | 1 | \(x_{10}\) | \(x_{11}\) | +—–+—————-+—————-+ | 1 | \(x_{20}\) | \(x_{21}\) | +—–+—————-+—————-+ 当 tree_method 设置为 hist 时,内部将使用 QuantileDMatrix 而不是 DMatrix 以节省内存。然而,当输入数据的设备与算法不匹配时,这会影响性能。例如,如果输入是 CPU 上的 numpy 数组,但训练使用 cuda ,则数据首先在 CPU 上处理,然后传输到 GPU。

  • y (da.Array | dd.DataFrame | dd.Series) – 标签

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

  • qid (da.Array | dd.DataFrame | dd.Series | None) – 每个训练样本的查询ID。应具有n_samples的大小。如果设置为None,则用户必须提供组或X中的特殊列。

  • sample_weight (da.Array | dd.DataFrame | dd.Series | None) –

    查询组权重

    备注

    权重是针对排名任务的每个组别

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

  • base_margin (da.Array | dd.DataFrame | dd.Series | None) – 每个实例的全局偏差。详情请参见 拦截

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

  • eval_group (Sequence[da.Array | dd.DataFrame | dd.Series] | None) – 一个列表,其中 eval_group[i] 是包含 eval_set 中第 i 对所有查询组大小的列表。

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

  • verbose (int | bool) – 如果 verbose 为 True 并且使用了评估集,验证集上的评估指标会在每次提升阶段打印到标准输出。如果 verbose 是一个整数,评估指标会在每 verbose 次提升阶段打印。最后一次提升阶段或通过 early_stopping_rounds 找到的提升阶段也会被打印。

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

  • sample_weight_eval_set (Sequence[da.Array | dd.DataFrame | dd.Series] | None) – 形式为 [L_1, L_2, …, L_n] 的列表,其中每个 L_i 是第 i 个验证集上的组权重列表。 .. 注意:: 权重是按组分配的,用于排名任务 在排名任务中,每个查询组分配一个权重(而不是每个数据点)。这是因为我们只关心每个组内数据点的相对顺序,因此为单个数据点分配权重是没有意义的。

  • base_margin_eval_set (Sequence[da.Array | dd.DataFrame | dd.Series] | None) – 形式为 [M_1, M_2, …, M_n] 的列表,其中每个 M_i 是一个存储第 i 个验证集的基边界的类似数组的对象。

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

返回类型:

DaskXGBRanker

get_booster()

获取此模型的底层 xgboost Booster。

当未调用 fit 时,这将引发异常

返回:

booster

返回类型:

a xgboost booster of underlying model

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

返回:

拦截_

返回类型:

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

load_model(fname)

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

模型以XGBoost内部格式保存,该格式在各种XGBoost接口中通用。Python Booster对象的辅助属性(如feature_names)仅在使用JSON或UBJSON(默认)格式时保存。更多信息请参见 模型IO

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

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

返回类型:

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 (da.Array | dd.DataFrame) – 用于预测的数据。

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

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

  • base_margin (da.Array | dd.DataFrame | dd.Series | None) – 每个实例的全局偏差。详情请参见 拦截

  • iteration_range (Tuple[int | integer, int | integer] | None) – 指定用于预测的树层。例如,如果一个随机森林经过100轮训练。指定 iteration_range=(10, 20),那么只有在此期间[10, 20)(半开集)轮次内构建的森林用于此次预测。 .. versionadded:: 1.4.0

返回类型:

prediction

save_model(fname)

将模型保存到文件中。

模型以XGBoost内部格式保存,该格式在各种XGBoost接口中通用。Python Booster对象的辅助属性(如feature_names)仅在使用JSON或UBJSON(默认)格式时保存。更多信息请参见 模型IO

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

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

返回类型:

None

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) 保留现有的请求。这允许你更改某些参数的请求,而不更改其他参数。

Added in version 1.3.

备注

此方法仅在将此估计器用作元估计器的子估计器时相关,例如在 Pipeline 内部使用。否则它不会有任何效果。

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

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

  • eval_group (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – fiteval_group 参数的元数据路由。

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

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

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

  • group (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – fitgroup 参数的元数据路由。

  • qid (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – fitqid 参数的元数据路由。

  • 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 (DaskXGBRanker)

返回:

self – 更新后的对象。

返回类型:

object

set_params(**params)

设置此估计器的参数。修改了 sklearn 方法以允许未知的 kwargs。这允许使用在 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) 保留现有的请求。这允许你更改某些参数的请求,而不更改其他参数。

Added in version 1.3.

备注

此方法仅在将此估计器用作元估计器的子估计器时相关,例如在 Pipeline 内部使用。否则它不会有任何效果。

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

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

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

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

  • self (DaskXGBRanker)

返回:

self – 更新后的对象。

返回类型:

object

class xgboost.dask.DaskXGBRFRegressor(*, learning_rate=1, subsample=0.8, colsample_bynode=0.8, reg_lambda=1e-05, **kwargs)[源代码]

基类:DaskXGBRegressor

为 XGBoost 随机森林回归器实现 Scikit-Learn API。

Added in version 1.4.0.

更多信息请参见 使用 Scikit-Learn 估计器接口

参数:
  • n_estimators (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]) – 指定学习任务以及相应的学习目标或自定义目标函数。对于自定义目标,请参阅 自定义目标和评估指标自定义目标和指标 以获取更多信息,以及函数签名的结尾注释。

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

  • tree_method (Optional[str]) – 指定要使用的树方法。默认为自动。如果此参数设置为默认,XGBoost 将选择最保守的可用选项。建议从参数文档中研究此选项 树方法

  • n_jobs (Optional[int]) – 用于运行 xgboost 的并行线程数。当与其他 Scikit-Learn 算法(如网格搜索)一起使用时,您可以选择并行化哪个算法并平衡线程。创建线程争用将显著减慢两个算法。

  • gamma (Optional[float]) – (min_split_loss) 在树的叶节点上进行进一步分区所需的最小损失减少量。

  • min_child_weight (Optional[float]) – 子节点中所需的实例权重(Hessian)的最小和。

  • max_delta_step (Optional[float]) – 我们允许每棵树的权重估计的最大增量步长。

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

  • random_state (Union[numpy.random.mtrand.RandomState, numpy.random._generator.Generator, int, NoneType]) – 随机数种子。 .. 注意:: 使用 shotgun updater 的 gblinear booster 是非确定性的,因为它使用了 Hogwild 算法。

  • missing (float) – 数据中需要作为缺失值存在的值。默认为 numpy.nan

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

  • monotone_constraints (Union[Dict[str, int], str, NoneType]) – 变量单调性的约束。更多信息请参见 教程

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

  • importance_type (Optional[str]) – 特征重要性类型用于feature_importances_属性: * 对于树模型,可以是”gain”、”weight”、”cover”、”total_gain”或”total_cover”。 * 对于线性模型,仅定义了”weight”,它是无偏差的归一化系数。

  • device (Optional[str]) –

    Added in version 2.0.0.

    设备序号,可用选项为 cpucudagpu

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

  • enable_categorical (bool) – 详情请参见 DMatrix 的相同参数。

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

    Added in version 1.7.0.

    用于指定特征类型而不构建数据框。详情请参见 DMatrix

  • max_cat_to_onehot (Optional[int]) –

    Added in version 1.6.0.

    备注

    此参数为实验性

    决定XGBoost是否应使用独热编码进行分类数据分割的阈值。当类别数量小于阈值时,选择独热编码,否则类别将被分割到子节点中。此外,需要设置 enable_categorical 以支持分类特征。详情请参见 分类数据分类特征的参数

  • max_cat_threshold (Optional[int]) –

    Added in version 1.7.0.

    备注

    此参数为实验性

    每个分割考虑的最大类别数。仅用于基于分区的分割,以防止过拟合。此外,enable_categorical 需要设置为支持分类特征。详情请参见 分类数据分类特征的参数

  • multi_strategy (Optional[str]) –

    Added in version 2.0.0.

    备注

    此参数正在开发中。

    用于训练多目标模型的策略,包括多目标回归和多类分类。更多信息请参见 多重输出

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

    • multi_output_tree: 使用多目标树。

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

    Added in version 1.6.0.

    用于监控训练结果和提前停止的指标。它可以是一个字符串或字符串列表,作为XGBoost中预定义指标的名称(参见doc/parameter.rst),也可以是 sklearn.metrics 中的一个指标,或者是任何其他类似于 sklearn.metrics 的用户定义指标。

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

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

    For advanced usage on Early stopping like directly choosing to maximize instead of minimize, see xgboost.callback.EarlyStopping.

    更多信息请参见 自定义目标和评估指标自定义目标和指标

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

    Added in version 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]]) – 在每次迭代结束时应用的回调函数列表。可以通过使用 回调 API 来使用预定义的回调。 .. 注意:

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

apply(X, iteration_range=None)

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

参数:
返回:

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

返回类型:

array_like, shape=[n_samples, n_trees]

property best_iteration: int

通过早期停止获得的最佳迭代。此属性是基于0的,例如,如果最佳迭代是第一轮,那么 best_iteration 为 0。

property best_score: float

通过早期停止获得的最佳分数。

property client: distributed.Client

在此模型中使用的 dask 客户端。Client 对象不能被序列化以进行传输,因此如果任务是从工作进程而不是直接从客户端进程启动的,则需要在该工作进程中设置此属性。

property coef_: ndarray

Coefficients 属性

备注

系数仅针对线性学习器定义

系数仅在选择线性模型作为基础学习器时定义(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 (da.Array | dd.DataFrame) – 功能矩阵。查看 各种 XGBoost 函数支持的数据结构 以获取支持的类型列表。当 tree_method 设置为 hist 时,内部将使用 QuantileDMatrix 而不是 DMatrix 以节省内存。然而,当输入数据的设备与算法不匹配时,这会影响性能。例如,如果输入是CPU上的numpy数组,但训练使用 cuda,则数据首先在CPU上处理,然后传输到GPU。

  • y (da.Array | dd.DataFrame | dd.Series) – 标签

  • sample_weight (da.Array | dd.DataFrame | dd.Series | None) – 实例权重

  • base_margin (da.Array | dd.DataFrame | dd.Series | None) – 每个实例的全局偏差。详情请参见 拦截

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

  • verbose (int | bool) – 如果 verbose 为 True 并且使用了评估集,验证集上的评估指标会在每次提升阶段打印到标准输出。如果 verbose 是一个整数,评估指标会在每 verbose 次提升阶段打印。最后一次提升阶段或通过 early_stopping_rounds 找到的提升阶段也会被打印。

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

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

  • base_margin_eval_set (Sequence[da.Array | dd.DataFrame | dd.Series] | None) – 形式为 [M_1, M_2, …, M_n] 的列表,其中每个 M_i 是一个存储第 i 个验证集的基边界的类似数组的对象。

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

返回类型:

DaskXGBRFRegressor

get_booster()

获取此模型的底层 xgboost Booster。

当未调用 fit 时,这将引发异常

返回:

booster

返回类型:

a xgboost booster of underlying model

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

返回:

拦截_

返回类型:

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

load_model(fname)

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

模型以XGBoost内部格式保存,该格式在各种XGBoost接口中通用。Python Booster对象的辅助属性(如feature_names)仅在使用JSON或UBJSON(默认)格式时保存。更多信息请参见 模型IO

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

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

返回类型:

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 (da.Array | dd.DataFrame) – 用于预测的数据。

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

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

  • base_margin (da.Array | dd.DataFrame | dd.Series | None) – 每个实例的全局偏差。详情请参见 拦截

  • iteration_range (Tuple[int | integer, int | integer] | None) – 指定用于预测的树层。例如,如果一个随机森林经过100轮训练。指定 iteration_range=(10, 20),那么只有在此期间[10, 20)(半开集)轮次内构建的森林用于此次预测。 .. versionadded:: 1.4.0

返回类型:

prediction

save_model(fname)

将模型保存到文件中。

模型以XGBoost内部格式保存,该格式在各种XGBoost接口中通用。Python Booster对象的辅助属性(如feature_names)仅在使用JSON或UBJSON(默认)格式时保存。更多信息请参见 模型IO

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

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

返回类型:

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 的期望值的常数模型,忽略输入特征,将得到一个 \(R^2\) 分数为 0.0。

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

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

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

返回:

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

返回类型:

float

备注

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

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) 保留现有的请求。这允许你更改某些参数的请求,而不更改其他参数。

Added in version 1.3.

备注

此方法仅在将此估计器用作元估计器的子估计器时相关,例如在 Pipeline 内部使用。否则它不会有任何效果。

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

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

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

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

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

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

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

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

  • self (DaskXGBRFRegressor)

返回:

self – 更新后的对象。

返回类型:

object

set_params(**params)

设置此估计器的参数。修改了 sklearn 方法以允许未知的 kwargs。这允许使用在 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) 保留现有的请求。这允许你更改某些参数的请求,而不更改其他参数。

Added in version 1.3.

备注

此方法仅在将此估计器用作元估计器的子估计器时相关,例如在 Pipeline 内部使用。否则它不会有任何效果。

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

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

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

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

  • self (DaskXGBRFRegressor)

返回:

self – 更新后的对象。

返回类型:

object

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

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

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

每个参数的选项是:

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

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

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

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

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

Added in version 1.3.

备注

此方法仅在将此估计器用作元估计器的子估计器时相关,例如在 Pipeline 内部使用。否则它不会有任何效果。

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

  • self (DaskXGBRFRegressor)

返回:

self – 更新后的对象。

返回类型:

object

class xgboost.dask.DaskXGBRFClassifier(*, learning_rate=1, subsample=0.8, colsample_bynode=0.8, reg_lambda=1e-05, **kwargs)[源代码]

基类:DaskXGBClassifier

XGBoost 随机森林分类器的 Scikit-Learn API 实现。

Added in version 1.4.0.

更多信息请参见 使用 Scikit-Learn 估计器接口

参数:
  • n_estimators (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]) – 指定学习任务以及相应的学习目标或自定义目标函数。对于自定义目标,请参阅 自定义目标和评估指标自定义目标和指标 以获取更多信息,以及函数签名的结尾注释。

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

  • tree_method (Optional[str]) – 指定要使用的树方法。默认为自动。如果此参数设置为默认,XGBoost 将选择最保守的可用选项。建议从参数文档中研究此选项 树方法

  • n_jobs (Optional[int]) – 用于运行 xgboost 的并行线程数。当与其他 Scikit-Learn 算法(如网格搜索)一起使用时,您可以选择并行化哪个算法并平衡线程。创建线程争用将显著减慢两个算法。

  • gamma (Optional[float]) – (min_split_loss) 在树的叶节点上进行进一步分区所需的最小损失减少量。

  • min_child_weight (Optional[float]) – 子节点中所需的实例权重(Hessian)的最小和。

  • max_delta_step (Optional[float]) – 我们允许每棵树的权重估计的最大增量步长。

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

  • random_state (Union[numpy.random.mtrand.RandomState, numpy.random._generator.Generator, int, NoneType]) – 随机数种子。 .. 注意:: 使用 shotgun updater 的 gblinear booster 是非确定性的,因为它使用了 Hogwild 算法。

  • missing (float) – 数据中需要作为缺失值存在的值。默认为 numpy.nan

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

  • monotone_constraints (Union[Dict[str, int], str, NoneType]) – 变量单调性的约束。更多信息请参见 教程

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

  • importance_type (Optional[str]) – 特征重要性类型用于feature_importances_属性: * 对于树模型,可以是”gain”、”weight”、”cover”、”total_gain”或”total_cover”。 * 对于线性模型,仅定义了”weight”,它是无偏差的归一化系数。

  • device (Optional[str]) –

    Added in version 2.0.0.

    设备序号,可用选项为 cpucudagpu

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

  • enable_categorical (bool) – 详情请参见 DMatrix 的相同参数。

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

    Added in version 1.7.0.

    用于指定特征类型而不构建数据框。详情请参见 DMatrix

  • max_cat_to_onehot (Optional[int]) –

    Added in version 1.6.0.

    备注

    此参数为实验性

    决定XGBoost是否应使用独热编码进行分类数据分割的阈值。当类别数量小于阈值时,选择独热编码,否则类别将被分割到子节点中。此外,需要设置 enable_categorical 以支持分类特征。详情请参见 分类数据分类特征的参数

  • max_cat_threshold (Optional[int]) –

    Added in version 1.7.0.

    备注

    此参数为实验性

    每个分割考虑的最大类别数。仅用于基于分区的分割,以防止过拟合。此外,enable_categorical 需要设置为支持分类特征。详情请参见 分类数据分类特征的参数

  • multi_strategy (Optional[str]) –

    Added in version 2.0.0.

    备注

    此参数正在开发中。

    用于训练多目标模型的策略,包括多目标回归和多类分类。更多信息请参见 多重输出

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

    • multi_output_tree: 使用多目标树。

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

    Added in version 1.6.0.

    用于监控训练结果和提前停止的指标。它可以是一个字符串或字符串列表,作为XGBoost中预定义指标的名称(参见doc/parameter.rst),也可以是 sklearn.metrics 中的一个指标,或者是任何其他类似于 sklearn.metrics 的用户定义指标。

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

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

    For advanced usage on Early stopping like directly choosing to maximize instead of minimize, see xgboost.callback.EarlyStopping.

    更多信息请参见 自定义目标和评估指标自定义目标和指标

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

    Added in version 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]]) – 在每次迭代结束时应用的回调函数列表。可以通过使用 回调 API 来使用预定义的回调。 .. 注意:

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

apply(X, iteration_range=None)

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

参数:
返回:

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

返回类型:

array_like, shape=[n_samples, n_trees]

property best_iteration: int

通过早期停止获得的最佳迭代。此属性是基于0的,例如,如果最佳迭代是第一轮,那么 best_iteration 为 0。

property best_score: float

通过早期停止获得的最佳分数。

property client: distributed.Client

在此模型中使用的 dask 客户端。Client 对象不能被序列化以进行传输,因此如果任务是从工作进程而不是直接从客户端进程启动的,则需要在该工作进程中设置此属性。

property coef_: ndarray

Coefficients 属性

备注

系数仅针对线性学习器定义

系数仅在选择线性模型作为基础学习器时定义(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 (da.Array | dd.DataFrame) – 功能矩阵。查看 各种 XGBoost 函数支持的数据结构 以获取支持的类型列表。当 tree_method 设置为 hist 时,内部将使用 QuantileDMatrix 而不是 DMatrix 以节省内存。然而,当输入数据的设备与算法不匹配时,这会影响性能。例如,如果输入是CPU上的numpy数组,但训练使用 cuda,则数据首先在CPU上处理,然后传输到GPU。

  • y (da.Array | dd.DataFrame | dd.Series) – 标签

  • sample_weight (da.Array | dd.DataFrame | dd.Series | None) – 实例权重

  • base_margin (da.Array | dd.DataFrame | dd.Series | None) – 每个实例的全局偏差。详情请参见 拦截

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

  • verbose (int | bool) – 如果 verbose 为 True 并且使用了评估集,验证集上的评估指标会在每次提升阶段打印到标准输出。如果 verbose 是一个整数,评估指标会在每 verbose 次提升阶段打印。最后一次提升阶段或通过 early_stopping_rounds 找到的提升阶段也会被打印。

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

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

  • base_margin_eval_set (Sequence[da.Array | dd.DataFrame | dd.Series] | None) – 形式为 [M_1, M_2, …, M_n] 的列表,其中每个 M_i 是一个存储第 i 个验证集的基边界的类似数组的对象。

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

返回类型:

DaskXGBRFClassifier

get_booster()

获取此模型的底层 xgboost Booster。

当未调用 fit 时,这将引发异常

返回:

booster

返回类型:

a xgboost booster of underlying model

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

返回:

拦截_

返回类型:

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

load_model(fname)

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

模型以XGBoost内部格式保存,该格式在各种XGBoost接口中通用。Python Booster对象的辅助属性(如feature_names)仅在使用JSON或UBJSON(默认)格式时保存。更多信息请参见 模型IO

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

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

返回类型:

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 (da.Array | dd.DataFrame) – 用于预测的数据。

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

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

  • base_margin (da.Array | dd.DataFrame | dd.Series | None) – 每个实例的全局偏差。详情请参见 拦截

  • iteration_range (Tuple[int | integer, int | integer] | None) – 指定用于预测的树层。例如,如果一个随机森林经过100轮训练。指定 iteration_range=(10, 20),那么只有在此期间[10, 20)(半开集)轮次内构建的森林用于此次预测。 .. versionadded:: 1.4.0

返回类型:

prediction

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

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

备注

此函数仅对 gbtreedart 线程安全。

参数:
  • X (da.Array | dd.DataFrame | dd.Series) – 功能矩阵。查看 各种 XGBoost 函数支持的数据结构 以获取支持的类型列表。

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

  • base_margin (da.Array | dd.DataFrame | dd.Series | None) – 每个实例的全局偏差。详情请参见 拦截

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

返回:

一个形状为 (n_samples, n_classes) 的 numpy 数组,表示每个数据样本属于某一类的概率。

返回类型:

prediction

save_model(fname)

将模型保存到文件中。

模型以XGBoost内部格式保存,该格式在各种XGBoost接口中通用。Python Booster对象的辅助属性(如feature_names)仅在使用JSON或UBJSON(默认)格式时保存。更多信息请参见 模型IO

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

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

返回类型:

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) 保留现有的请求。这允许你更改某些参数的请求,而不更改其他参数。

Added in version 1.3.

备注

此方法仅在将此估计器用作元估计器的子估计器时相关,例如在 Pipeline 内部使用。否则它不会有任何效果。

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

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

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

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

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

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

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

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

  • self (DaskXGBRFClassifier)

返回:

self – 更新后的对象。

返回类型:

object

set_params(**params)

设置此估计器的参数。修改了 sklearn 方法以允许未知的 kwargs。这允许使用在 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) 保留现有的请求。这允许你更改某些参数的请求,而不更改其他参数。

Added in version 1.3.

备注

此方法仅在将此估计器用作元估计器的子估计器时相关,例如在 Pipeline 内部使用。否则它不会有任何效果。

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

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

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

  • self (DaskXGBRFClassifier)

返回:

self – 更新后的对象。

返回类型:

object

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

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

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

每个参数的选项是:

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

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

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

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

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

Added in version 1.3.

备注

此方法仅在将此估计器用作元估计器的子估计器时相关,例如在 Pipeline 内部使用。否则它不会有任何效果。

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

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

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

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

  • self (DaskXGBRFClassifier)

返回:

self – 更新后的对象。

返回类型:

object

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

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

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

每个参数的选项是:

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

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

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

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

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

Added in version 1.3.

备注

此方法仅在将此估计器用作元估计器的子估计器时相关,例如在 Pipeline 内部使用。否则它不会有任何效果。

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

  • self (DaskXGBRFClassifier)

返回:

self – 更新后的对象。

返回类型:

object

PySpark API

PySpark XGBoost 集成接口

class xgboost.spark.SparkXGBClassifier(*, features_col='features', label_col='label', prediction_col='prediction', probability_col='probability', raw_prediction_col='rawPrediction', pred_contrib_col=None, validation_indicator_col=None, weight_col=None, base_margin_col=None, num_workers=1, use_gpu=None, device=None, force_repartition=False, repartition_random_shuffle=False, enable_sparse_data_optim=False, **kwargs)[源代码]

基类:_SparkXGBEstimator, HasProbabilityCol, HasRawPredictionCol

SparkXGBClassifier 是一个 PySpark ML 估计器。它基于 XGBoost python 库实现了 XGBoost 分类算法,并且可以在 PySpark Pipeline 和 PySpark ML 元算法中使用,例如 - CrossValidator/ - TrainValidationSplit/ - OneVsRest

SparkXGBClassifier 自动支持 xgboost.XGBClassifier 构造函数中的大多数参数,以及 xgboost.XGBClassifier.fit()xgboost.XGBClassifier.predict() 方法中使用的大多数参数。

要启用GPU支持,请将 device 设置为 cudagpu

SparkXGBClassifier 也不支持显式设置 base_margin,但支持另一个名为 base_margin_col 的参数。更多详情请参见以下文档。

SparkXGBClassifier 不支持设置 output_margin,但我们可以从原始预测列中获取输出边际。有关更多详细信息,请参阅下面的 raw_prediction_col 参数文档。

SparkXGBClassifier 不支持 validate_featuresoutput_margin 参数。

SparkXGBClassifier 不支持设置 nthread xgboost 参数,相反,每个 xgboost 工作者的 nthread 参数将被设置为 spark.task.cpus 配置值。

参数:
  • features_col (str | List[str]) – 当值为字符串时,它要求特征列名称为向量类型。当值为字符串列表时,它要求所有特征列均为数值类型。

  • label_col (str) – 标签列名称。默认为“label”。

  • prediction_col (str) – 预测列名称。默认为“prediction”

  • probability_col (str) – 预测类条件概率的列名。默认为 probabilityCol。

  • raw_prediction_col (str) – output_margin=TruerawPredictionCol 输出列隐式支持,该列总是返回带有预测边际值的结果。

  • pred_contrib_col (pyspark.ml.param.Param[str]) – 贡献预测列名。

  • validation_indicator_col (str | None) – 对于与 xgboost.XGBClassifier 训练相关的参数,在有评估数据集监督的情况下,应设置 xgboost.spark.SparkXGBClassifier.validation_indicator_col 参数,而不是在 xgboost.XGBClassifier 的 fit 方法中设置 eval_set 参数。

  • weight_col (str | None) – 要指定训练和验证数据集的权重,请设置 xgboost.spark.SparkXGBClassifier.weight_col 参数,而不是在 xgboost.XGBClassifier 的 fit 方法中设置 sample_weightsample_weight_eval_set 参数。

  • base_margin_col (str | None) – 要指定训练和验证数据集的基本边距,请设置 xgboost.spark.SparkXGBClassifier.base_margin_col 参数,而不是在 xgboost.XGBClassifier 的 fit 方法中设置 base_marginbase_margin_eval_set

  • num_workers (int) – 用于训练的 XGBoost 工作者的数量。每个 XGBoost 工作者对应一个 Spark 任务。

  • use_gpu (bool | None) –

    自 2.0.0 版本弃用.

    使用 device 代替。

  • device (str | None) –

    Added in version 2.0.0.

    用于XGBoost工作者的设备,可用选项有 cpucudagpu

  • force_repartition (bool) – 布尔值,用于指定是否在XGBoost训练之前强制重新分区输入数据集。

  • repartition_random_shuffle (bool) – 布尔值,用于指定在需要重新分区时是否随机打乱数据集。

  • enable_sparse_data_optim (bool) – 布尔值,用于指定是否启用稀疏数据优化,如果为 True,Xgboost DMatrix 对象将从稀疏矩阵而不是密集矩阵构建。

  • kwargs (Any) – 一个xgboost参数的字典,请参考 https://xgboost.readthedocs.io/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)

返回类型:

str

explainParams()

返回所有参数的文档,包括它们可选的默认值和用户提供的值。

返回类型:

str

extractParamMap(extra=None)

提取嵌入的默认参数值和用户提供的值,然后将它们与输入中的额外值合并到一个扁平的参数映射中,如果存在冲突,则使用后者的值,即顺序为:默认参数值 < 用户提供的值 < 额外值。

参数:

extra (dict, optional) – 额外参数值

返回:

合并参数映射

返回类型:

dict

fit(dataset, params=None)

使用可选参数将模型拟合到输入数据集。

Added in version 1.3.0.

参数:
  • dataset (pyspark.sql.DataFrame) – 输入数据集。

  • params (dict or list or tuple, optional) – 一个可选的参数映射,用于覆盖嵌入的参数。如果给定的是参数映射的列表/元组,则会对每个参数映射调用fit,并返回一个模型列表。

返回:

拟合模型

返回类型:

TransformerTransformer 的列表

fitMultiple(dataset, paramMaps)

将模型拟合到输入数据集,针对 paramMaps 中的每个参数映射。

Added in version 2.3.0.

参数:
返回:

一个线程安全的可迭代对象,其中包含每个参数映射的一个模型。每次调用 next(modelIterator) 将返回 (index, model),其中模型是使用 paramMaps[index] 拟合的。index 值可能不是连续的。

返回类型:

_FitMultipleIterator

getFeaturesCol()

获取 featuresCol 的值或其默认值。

返回类型:

str

getLabelCol()

获取 labelCol 的值或其默认值。

返回类型:

str

getOrDefault(param)

获取用户提供的参数映射中的参数值或其默认值。如果两者均未设置,则引发错误。

参数:

param (str | Param[T])

返回类型:

Any | T

getParam(paramName)

通过名称获取参数。

参数:

paramName (str)

返回类型:

Param

getPredictionCol()

获取 predictionCol 的值或其默认值。

返回类型:

str

getProbabilityCol()

获取 probabilityCol 的值或其默认值。

返回类型:

str

getRawPredictionCol()

获取 rawPredictionCol 的值或其默认值。

返回类型:

str

getValidationIndicatorCol()

获取 validationIndicatorCol 的值或其默认值。

返回类型:

str

getWeightCol()

获取 weightCol 的值或其默认值。

返回类型:

str

hasDefault(param)

检查一个参数是否有默认值。

参数:

param (str | Param[Any])

返回类型:

bool

hasParam(paramName)

测试此实例是否包含具有给定(字符串)名称的参数。

参数:

paramName (str)

返回类型:

bool

isDefined(param)

检查一个参数是否由用户显式设置或具有默认值。

参数:

param (str | Param[Any])

返回类型:

bool

isSet(param)

检查参数是否被用户显式设置。

参数:

param (str | Param[Any])

返回类型:

bool

classmethod load(path)

从输入路径读取一个ML实例,这是 read().load(path) 的快捷方式。

参数:

path (str)

返回类型:

RL

property params: List[Param]

返回按名称排序的所有参数。默认实现使用 dir() 获取所有类型为 Param 的属性。

classmethod read()

返回用于加载估计器的读取器。

返回类型:

SparkXGBReader

save(path)

将此 ML 实例保存到给定路径,这是 ‘write().save(path)’ 的快捷方式。

参数:

path (str)

返回类型:

None

set(param, value)

在嵌入的参数映射中设置一个参数。

参数:
返回类型:

None

setParams(**kwargs)

设置估计器的参数。

参数:

kwargs (Any)

返回类型:

None

set_device(value)

设置设备,可选值:cpu, cuda, gpu

参数:

value (str)

返回类型:

_SparkXGBParams

uid

对象的唯一ID。

write()

返回用于保存估计器的写入器。

返回类型:

SparkXGBWriter

class xgboost.spark.SparkXGBClassifierModel(xgb_sklearn_model=None)[源代码]

基类:_ClassificationModel

xgboost.spark.SparkXGBClassifier.fit() 返回的模型

备注

此API是实验性的。

参数:

xgb_sklearn_model (XGBModel | None)

clear(param)

如果参数已被显式设置,则从参数映射中清除该参数。

参数:

param (Param)

返回类型:

None

copy(extra=None)

创建此实例的一个副本,具有相同的uid和一些额外的参数。默认实现使用 copy.copy() 创建一个浅拷贝,然后将嵌入和额外的参数复制并返回副本。如果默认方法不足,子类应重写此方法。

参数:
  • extra (dict, optional) – 复制到新实例的额外参数

  • self (P)

返回:

此实例的副本

返回类型:

Params

explainParam(param)

解释一个单一参数并返回其名称、文档,以及可选的默认值和用户提供的值,结果以字符串形式返回。

参数:

param (str | Param)

返回类型:

str

explainParams()

返回所有参数的文档,包括它们可选的默认值和用户提供的值。

返回类型:

str

extractParamMap(extra=None)

提取嵌入的默认参数值和用户提供的值,然后将它们与输入中的额外值合并到一个扁平的参数映射中,如果存在冲突,则使用后者的值,即顺序为:默认参数值 < 用户提供的值 < 额外值。

参数:

extra (dict, optional) – 额外参数值

返回:

合并参数映射

返回类型:

dict

getFeaturesCol()

获取 featuresCol 的值或其默认值。

返回类型:

str

getLabelCol()

获取 labelCol 的值或其默认值。

返回类型:

str

getOrDefault(param)

获取用户提供的参数映射中的参数值或其默认值。如果两者均未设置,则引发错误。

参数:

param (str | Param[T])

返回类型:

Any | T

getParam(paramName)

通过名称获取参数。

参数:

paramName (str)

返回类型:

Param

getPredictionCol()

获取 predictionCol 的值或其默认值。

返回类型:

str

getProbabilityCol()

获取 probabilityCol 的值或其默认值。

返回类型:

str

getRawPredictionCol()

获取 rawPredictionCol 的值或其默认值。

返回类型:

str

getValidationIndicatorCol()

获取 validationIndicatorCol 的值或其默认值。

返回类型:

str

getWeightCol()

获取 weightCol 的值或其默认值。

返回类型:

str

get_booster()

返回 xgboost.core.Booster 实例。

返回类型:

Booster

get_feature_importances(importance_type='weight')

获取每个特征的重要性。重要性类型可以定义为:

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

  • gain: 该特征在所有分割中使用的平均增益。

  • ‘cover’: 该特征在所有分割中使用的平均覆盖率。

  • total_gain:该特征在所有分割中使用的总增益。

  • ‘total_cover’: 该特征在所有分割中使用的总覆盖率。

参数:

importance_type (str, default 'weight') – 上述定义的重要类型之一。

返回类型:

Dict[str, float | List[float]]

hasDefault(param)

检查一个参数是否有默认值。

参数:

param (str | Param[Any])

返回类型:

bool

hasParam(paramName)

测试此实例是否包含具有给定(字符串)名称的参数。

参数:

paramName (str)

返回类型:

bool

isDefined(param)

检查一个参数是否由用户显式设置或具有默认值。

参数:

param (str | Param[Any])

返回类型:

bool

isSet(param)

检查参数是否被用户显式设置。

参数:

param (str | Param[Any])

返回类型:

bool

classmethod load(path)

从输入路径读取一个ML实例,这是 read().load(path) 的快捷方式。

参数:

path (str)

返回类型:

RL

property params: List[Param]

返回按名称排序的所有参数。默认实现使用 dir() 获取所有类型为 Param 的属性。

classmethod read()

返回用于加载模型的阅读器。

返回类型:

SparkXGBModelReader

save(path)

将此 ML 实例保存到给定路径,这是 ‘write().save(path)’ 的快捷方式。

参数:

path (str)

返回类型:

None

set(param, value)

在嵌入的参数映射中设置一个参数。

参数:
返回类型:

None

set_device(value)

设置设备,可选值:cpu, cuda, gpu

参数:

value (str)

返回类型:

_SparkXGBParams

transform(dataset, params=None)

使用可选参数转换输入数据集。

Added in version 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, use_gpu=None, device=None, force_repartition=False, repartition_random_shuffle=False, enable_sparse_data_optim=False, **kwargs)[源代码]

基类:_SparkXGBEstimator

SparkXGBRegressor 是一个 PySpark ML 估计器。它基于 XGBoost python 库实现了 XGBoost 回归算法,并且可以在 PySpark 管道和 PySpark ML 元算法中使用,例如 - CrossValidator/ - TrainValidationSplit/ - OneVsRest

SparkXGBRegressor 自动支持 xgboost.XGBRegressor 构造函数中的大多数参数,以及 xgboost.XGBRegressor.fit()xgboost.XGBRegressor.predict() 方法中使用的大多数参数。

要启用GPU支持,请将 device 设置为 cudagpu

SparkXGBRegressor 也不支持显式设置 base_margin,但支持另一个名为 base_margin_col 的参数。更多详情请参阅以下文档。

SparkXGBRegressor 不支持 validate_featuresoutput_margin 参数。

SparkXGBRegressor 不支持设置 nthread xgboost 参数,相反,每个 xgboost 工作者的 nthread 参数将被设置为 spark.task.cpus 配置值。

参数:
  • features_col (str | List[str]) – 当值为字符串时,它要求特征列名称为向量类型。当值为字符串列表时,它要求所有特征列均为数值类型。

  • label_col (str) – 标签列名称。默认为“label”。

  • prediction_col (str) – 预测列名称。默认为“prediction”

  • pred_contrib_col (pyspark.ml.param.Param[str]) – 贡献预测列名。

  • validation_indicator_col (str | None) – 对于与 xgboost.XGBRegressor 在评估数据集监督下训练相关的参数,请设置 xgboost.spark.SparkXGBRegressor.validation_indicator_col 参数,而不是在 xgboost.XGBRegressor 的 fit 方法中设置 eval_set 参数。

  • weight_col (str | None) – 要指定训练和验证数据集的权重,请设置 xgboost.spark.SparkXGBRegressor.weight_col 参数,而不是在 xgboost.XGBRegressor 的 fit 方法中设置 sample_weightsample_weight_eval_set 参数。

  • base_margin_col (str | None) – 要指定训练和验证数据集的基本边距,请设置 xgboost.spark.SparkXGBRegressor.base_margin_col 参数,而不是在 xgboost.XGBRegressor 的 fit 方法中设置 base_marginbase_margin_eval_set

  • num_workers (int) – 用于训练的 XGBoost 工作者的数量。每个 XGBoost 工作者对应一个 Spark 任务。

  • use_gpu (bool | None) –

    自 2.0.0 版本弃用.

    使用 device 代替。

  • device (str | None) –

    Added in version 2.0.0.

    用于XGBoost工作者的设备,可用选项有 cpucudagpu

  • force_repartition (bool) – 布尔值,用于指定是否在XGBoost训练之前强制重新分区输入数据集。

  • repartition_random_shuffle (bool) – 布尔值,用于指定在需要重新分区时是否随机打乱数据集。

  • enable_sparse_data_optim (bool) – 布尔值,用于指定是否启用稀疏数据优化,如果为 True,Xgboost DMatrix 对象将从稀疏矩阵而不是密集矩阵构建。

  • kwargs (Any) – 一个xgboost参数的字典,请参考 https://xgboost.readthedocs.io/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)

返回类型:

str

explainParams()

返回所有参数的文档,包括它们可选的默认值和用户提供的值。

返回类型:

str

extractParamMap(extra=None)

提取嵌入的默认参数值和用户提供的值,然后将它们与输入中的额外值合并到一个扁平的参数映射中,如果存在冲突,则使用后者的值,即顺序为:默认参数值 < 用户提供的值 < 额外值。

参数:

extra (dict, optional) – 额外参数值

返回:

合并参数映射

返回类型:

dict

fit(dataset, params=None)

使用可选参数将模型拟合到输入数据集。

Added in version 1.3.0.

参数:
  • dataset (pyspark.sql.DataFrame) – 输入数据集。

  • params (dict or list or tuple, optional) – 一个可选的参数映射,用于覆盖嵌入的参数。如果给定的是参数映射的列表/元组,则会对每个参数映射调用fit,并返回一个模型列表。

返回:

拟合模型

返回类型:

TransformerTransformer 的列表

fitMultiple(dataset, paramMaps)

将模型拟合到输入数据集,针对 paramMaps 中的每个参数映射。

Added in version 2.3.0.

参数:
返回:

一个线程安全的可迭代对象,其中包含每个参数映射的一个模型。每次调用 next(modelIterator) 将返回 (index, model),其中模型是使用 paramMaps[index] 拟合的。index 值可能不是连续的。

返回类型:

_FitMultipleIterator

getFeaturesCol()

获取 featuresCol 的值或其默认值。

返回类型:

str

getLabelCol()

获取 labelCol 的值或其默认值。

返回类型:

str

getOrDefault(param)

获取用户提供的参数映射中的参数值或其默认值。如果两者均未设置,则引发错误。

参数:

param (str | Param[T])

返回类型:

Any | T

getParam(paramName)

通过名称获取参数。

参数:

paramName (str)

返回类型:

Param

getPredictionCol()

获取 predictionCol 的值或其默认值。

返回类型:

str

getValidationIndicatorCol()

获取 validationIndicatorCol 的值或其默认值。

返回类型:

str

getWeightCol()

获取 weightCol 的值或其默认值。

返回类型:

str

hasDefault(param)

检查一个参数是否有默认值。

参数:

param (str | Param[Any])

返回类型:

bool

hasParam(paramName)

测试此实例是否包含具有给定(字符串)名称的参数。

参数:

paramName (str)

返回类型:

bool

isDefined(param)

检查一个参数是否由用户显式设置或具有默认值。

参数:

param (str | Param[Any])

返回类型:

bool

isSet(param)

检查参数是否被用户显式设置。

参数:

param (str | Param[Any])

返回类型:

bool

classmethod load(path)

从输入路径读取一个ML实例,这是 read().load(path) 的快捷方式。

参数:

path (str)

返回类型:

RL

property params: List[Param]

返回按名称排序的所有参数。默认实现使用 dir() 获取所有类型为 Param 的属性。

classmethod read()

返回用于加载估计器的读取器。

返回类型:

SparkXGBReader

save(path)

将此 ML 实例保存到给定路径,这是 ‘write().save(path)’ 的快捷方式。

参数:

path (str)

返回类型:

None

set(param, value)

在嵌入的参数映射中设置一个参数。

参数:
返回类型:

None

setParams(**kwargs)

设置估计器的参数。

参数:

kwargs (Any)

返回类型:

None

set_device(value)

设置设备,可选值:cpu, cuda, gpu

参数:

value (str)

返回类型:

_SparkXGBParams

uid

对象的唯一ID。

write()

返回用于保存估计器的写入器。

返回类型:

SparkXGBWriter

class xgboost.spark.SparkXGBRegressorModel(xgb_sklearn_model=None)[源代码]

基类:_SparkXGBModel

xgboost.spark.SparkXGBRegressor.fit() 返回的模型

备注

此API是实验性的。

参数:

xgb_sklearn_model (XGBModel | None)

clear(param)

如果参数已被显式设置,则从参数映射中清除该参数。

参数:

param (Param)

返回类型:

None

copy(extra=None)

创建此实例的一个副本,具有相同的uid和一些额外的参数。默认实现使用 copy.copy() 创建一个浅拷贝,然后将嵌入和额外的参数复制并返回副本。如果默认方法不足,子类应重写此方法。

参数:
  • extra (dict, optional) – 复制到新实例的额外参数

  • self (P)

返回:

此实例的副本

返回类型:

Params

explainParam(param)

解释一个单一参数并返回其名称、文档,以及可选的默认值和用户提供的值,结果以字符串形式返回。

参数:

param (str | Param)

返回类型:

str

explainParams()

返回所有参数的文档,包括它们可选的默认值和用户提供的值。

返回类型:

str

extractParamMap(extra=None)

提取嵌入的默认参数值和用户提供的值,然后将它们与输入中的额外值合并到一个扁平的参数映射中,如果存在冲突,则使用后者的值,即顺序为:默认参数值 < 用户提供的值 < 额外值。

参数:

extra (dict, optional) – 额外参数值

返回:

合并参数映射

返回类型:

dict

getFeaturesCol()

获取 featuresCol 的值或其默认值。

返回类型:

str

getLabelCol()

获取 labelCol 的值或其默认值。

返回类型:

str

getOrDefault(param)

获取用户提供的参数映射中的参数值或其默认值。如果两者均未设置,则引发错误。

参数:

param (str | Param[T])

返回类型:

Any | T

getParam(paramName)

通过名称获取参数。

参数:

paramName (str)

返回类型:

Param

getPredictionCol()

获取 predictionCol 的值或其默认值。

返回类型:

str

getValidationIndicatorCol()

获取 validationIndicatorCol 的值或其默认值。

返回类型:

str

getWeightCol()

获取 weightCol 的值或其默认值。

返回类型:

str

get_booster()

返回 xgboost.core.Booster 实例。

返回类型:

Booster

get_feature_importances(importance_type='weight')

获取每个特征的重要性。重要性类型可以定义为:

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

  • gain: 该特征在所有分割中使用的平均增益。

  • ‘cover’: 该特征在所有分割中使用的平均覆盖率。

  • total_gain:该特征在所有分割中使用的总增益。

  • ‘total_cover’: 该特征在所有分割中使用的总覆盖率。

参数:

importance_type (str, default 'weight') – 上述定义的重要类型之一。

返回类型:

Dict[str, float | List[float]]

hasDefault(param)

检查一个参数是否有默认值。

参数:

param (str | Param[Any])

返回类型:

bool

hasParam(paramName)

测试此实例是否包含具有给定(字符串)名称的参数。

参数:

paramName (str)

返回类型:

bool

isDefined(param)

检查一个参数是否由用户显式设置或具有默认值。

参数:

param (str | Param[Any])

返回类型:

bool

isSet(param)

检查参数是否被用户显式设置。

参数:

param (str | Param[Any])

返回类型:

bool

classmethod load(path)

从输入路径读取一个ML实例,这是 read().load(path) 的快捷方式。

参数:

path (str)

返回类型:

RL

property params: List[Param]

返回按名称排序的所有参数。默认实现使用 dir() 获取所有类型为 Param 的属性。

classmethod read()

返回用于加载模型的阅读器。

返回类型:

SparkXGBModelReader

save(path)

将此 ML 实例保存到给定路径,这是 ‘write().save(path)’ 的快捷方式。

参数:

path (str)

返回类型:

None

set(param, value)

在嵌入的参数映射中设置一个参数。

参数:
返回类型:

None

set_device(value)

设置设备,可选值:cpu, cuda, gpu

参数:

value (str)

返回类型:

_SparkXGBParams

transform(dataset, params=None)

使用可选参数转换输入数据集。

Added in version 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, use_gpu=None, device=None, force_repartition=False, repartition_random_shuffle=False, enable_sparse_data_optim=False, **kwargs)[源代码]

基类:_SparkXGBEstimator

SparkXGBRanker 是一个 PySpark ML 估计器。它基于 XGBoost python 库实现了 XGBoost 排序算法,并且可以在 PySpark Pipeline 和 PySpark ML 元算法中使用,如 CrossValidator/ TrainValidationSplit/ OneVsRest

SparkXGBRanker 自动支持 xgboost.XGBRanker 构造函数中的大多数参数,以及 xgboost.XGBRanker.fit()xgboost.XGBRanker.predict() 方法中使用的大多数参数。

要启用GPU支持,请将 device 设置为 cudagpu

SparkXGBRanker 也不支持显式设置 base_margin,但支持另一个名为 base_margin_col 的参数。更多详情请参见以下文档。

SparkXGBRanker 不支持设置 output_margin,但我们可以从原始预测列中获取输出边际。有关更多详细信息,请参见下面的 raw_prediction_col 参数文档。

SparkXGBRanker 不支持 validate_featuresoutput_margin 参数。

SparkXGBRanker 不支持设置 nthread xgboost 参数,相反,每个 xgboost 工作者的 nthread 参数将被设置为 spark.task.cpus 配置值。

参数:
  • features_col (str | List[str]) – 当值为字符串时,它要求特征列名称为向量类型。当值为字符串列表时,它要求所有特征列均为数值类型。

  • label_col (str) – 标签列名称。默认为“label”。

  • prediction_col (str) – 预测列名称。默认为“prediction”

  • pred_contrib_col (pyspark.ml.param.Param[str]) – 贡献预测列名。

  • validation_indicator_col (str | None) – 对于与 xgboost.XGBRanker 训练相关的参数,在有评估数据集监督的情况下,设置 xgboost.spark.SparkXGBRanker.validation_indicator_col 参数,而不是在 xgboost.XGBRanker 的 fit 方法中设置 eval_set 参数。

  • weight_col (str | None) – 要指定训练和验证数据集的权重,请设置 xgboost.spark.SparkXGBRanker.weight_col 参数,而不是在 xgboost.XGBRanker 的 fit 方法中设置 sample_weightsample_weight_eval_set 参数。

  • base_margin_col (str | None) – 要指定训练和验证数据集的基本边距,请设置 xgboost.spark.SparkXGBRanker.base_margin_col 参数,而不是在 xgboost.XGBRanker 的 fit 方法中设置 base_marginbase_margin_eval_set

  • qid_col (str | None) – 查询ID列名称。

  • num_workers (int) – 用于训练的 XGBoost 工作者的数量。每个 XGBoost 工作者对应一个 Spark 任务。

  • use_gpu (bool | None) –

    自 2.0.0 版本弃用.

    使用 device 代替。

  • device (str | None) –

    Added in version 2.0.0.

    用于XGBoost工作者的设备,可用选项有 cpucudagpu

  • force_repartition (bool) – 布尔值,用于指定是否在XGBoost训练之前强制重新分区输入数据集。

  • repartition_random_shuffle (bool) – 布尔值,用于指定在需要重新分区时是否随机打乱数据集。

  • enable_sparse_data_optim (bool) – 布尔值,用于指定是否启用稀疏数据优化,如果为 True,Xgboost DMatrix 对象将从稀疏矩阵而不是密集矩阵构建。

  • kwargs (Any) – 一个xgboost参数的字典,请参考 https://xgboost.readthedocs.io/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)

返回类型:

str

explainParams()

返回所有参数的文档,包括它们可选的默认值和用户提供的值。

返回类型:

str

extractParamMap(extra=None)

提取嵌入的默认参数值和用户提供的值,然后将它们与输入中的额外值合并到一个扁平的参数映射中,如果存在冲突,则使用后者的值,即顺序为:默认参数值 < 用户提供的值 < 额外值。

参数:

extra (dict, optional) – 额外参数值

返回:

合并参数映射

返回类型:

dict

fit(dataset, params=None)

使用可选参数将模型拟合到输入数据集。

Added in version 1.3.0.

参数:
  • dataset (pyspark.sql.DataFrame) – 输入数据集。

  • params (dict or list or tuple, optional) – 一个可选的参数映射,用于覆盖嵌入的参数。如果给定的是参数映射的列表/元组,则会对每个参数映射调用fit,并返回一个模型列表。

返回:

拟合模型

返回类型:

TransformerTransformer 的列表

fitMultiple(dataset, paramMaps)

将模型拟合到输入数据集,针对 paramMaps 中的每个参数映射。

Added in version 2.3.0.

参数:
返回:

一个线程安全的可迭代对象,其中包含每个参数映射的一个模型。每次调用 next(modelIterator) 将返回 (index, model),其中模型是使用 paramMaps[index] 拟合的。index 值可能不是连续的。

返回类型:

_FitMultipleIterator

getFeaturesCol()

获取 featuresCol 的值或其默认值。

返回类型:

str

getLabelCol()

获取 labelCol 的值或其默认值。

返回类型:

str

getOrDefault(param)

获取用户提供的参数映射中的参数值或其默认值。如果两者均未设置,则引发错误。

参数:

param (str | Param[T])

返回类型:

Any | T

getParam(paramName)

通过名称获取参数。

参数:

paramName (str)

返回类型:

Param

getPredictionCol()

获取 predictionCol 的值或其默认值。

返回类型:

str

getValidationIndicatorCol()

获取 validationIndicatorCol 的值或其默认值。

返回类型:

str

getWeightCol()

获取 weightCol 的值或其默认值。

返回类型:

str

hasDefault(param)

检查一个参数是否有默认值。

参数:

param (str | Param[Any])

返回类型:

bool

hasParam(paramName)

测试此实例是否包含具有给定(字符串)名称的参数。

参数:

paramName (str)

返回类型:

bool

isDefined(param)

检查一个参数是否由用户显式设置或具有默认值。

参数:

param (str | Param[Any])

返回类型:

bool

isSet(param)

检查参数是否被用户显式设置。

参数:

param (str | Param[Any])

返回类型:

bool

classmethod load(path)

从输入路径读取一个ML实例,这是 read().load(path) 的快捷方式。

参数:

path (str)

返回类型:

RL

property params: List[Param]

返回按名称排序的所有参数。默认实现使用 dir() 获取所有类型为 Param 的属性。

classmethod read()

返回用于加载估计器的读取器。

返回类型:

SparkXGBReader

save(path)

将此 ML 实例保存到给定路径,这是 ‘write().save(path)’ 的快捷方式。

参数:

path (str)

返回类型:

None

set(param, value)

在嵌入的参数映射中设置一个参数。

参数:
返回类型:

None

setParams(**kwargs)

设置估计器的参数。

参数:

kwargs (Any)

返回类型:

None

set_device(value)

设置设备,可选值:cpu, cuda, gpu

参数:

value (str)

返回类型:

_SparkXGBParams

uid

对象的唯一ID。

write()

返回用于保存估计器的写入器。

返回类型:

SparkXGBWriter

class xgboost.spark.SparkXGBRankerModel(xgb_sklearn_model=None)[源代码]

基类:_SparkXGBModel

xgboost.spark.SparkXGBRanker.fit() 返回的模型

备注

此API是实验性的。

参数:

xgb_sklearn_model (XGBModel | None)

clear(param)

如果参数已被显式设置,则从参数映射中清除该参数。

参数:

param (Param)

返回类型:

None

copy(extra=None)

创建此实例的一个副本,具有相同的uid和一些额外的参数。默认实现使用 copy.copy() 创建一个浅拷贝,然后将嵌入和额外的参数复制并返回副本。如果默认方法不足,子类应重写此方法。

参数:
  • extra (dict, optional) – 复制到新实例的额外参数

  • self (P)

返回:

此实例的副本

返回类型:

Params

explainParam(param)

解释一个单一参数并返回其名称、文档,以及可选的默认值和用户提供的值,结果以字符串形式返回。

参数:

param (str | Param)

返回类型:

str

explainParams()

返回所有参数的文档,包括它们可选的默认值和用户提供的值。

返回类型:

str

extractParamMap(extra=None)

提取嵌入的默认参数值和用户提供的值,然后将它们与输入中的额外值合并到一个扁平的参数映射中,如果存在冲突,则使用后者的值,即顺序为:默认参数值 < 用户提供的值 < 额外值。

参数:

extra (dict, optional) – 额外参数值

返回:

合并参数映射

返回类型:

dict

getFeaturesCol()

获取 featuresCol 的值或其默认值。

返回类型:

str

getLabelCol()

获取 labelCol 的值或其默认值。

返回类型:

str

getOrDefault(param)

获取用户提供的参数映射中的参数值或其默认值。如果两者均未设置,则引发错误。

参数:

param (str | Param[T])

返回类型:

Any | T

getParam(paramName)

通过名称获取参数。

参数:

paramName (str)

返回类型:

Param

getPredictionCol()

获取 predictionCol 的值或其默认值。

返回类型:

str

getValidationIndicatorCol()

获取 validationIndicatorCol 的值或其默认值。

返回类型:

str

getWeightCol()

获取 weightCol 的值或其默认值。

返回类型:

str

get_booster()

返回 xgboost.core.Booster 实例。

返回类型:

Booster

get_feature_importances(importance_type='weight')

获取每个特征的重要性。重要性类型可以定义为:

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

  • gain: 该特征在所有分割中使用的平均增益。

  • ‘cover’: 该特征在所有分割中使用的平均覆盖率。

  • total_gain:该特征在所有分割中使用的总增益。

  • ‘total_cover’: 该特征在所有分割中使用的总覆盖率。

参数:

importance_type (str, default 'weight') – 上述定义的重要类型之一。

返回类型:

Dict[str, float | List[float]]

hasDefault(param)

检查一个参数是否有默认值。

参数:

param (str | Param[Any])

返回类型:

bool

hasParam(paramName)

测试此实例是否包含具有给定(字符串)名称的参数。

参数:

paramName (str)

返回类型:

bool

isDefined(param)

检查一个参数是否由用户显式设置或具有默认值。

参数:

param (str | Param[Any])

返回类型:

bool

isSet(param)

检查参数是否被用户显式设置。

参数:

param (str | Param[Any])

返回类型:

bool

classmethod load(path)

从输入路径读取一个ML实例,这是 read().load(path) 的快捷方式。

参数:

path (str)

返回类型:

RL

property params: List[Param]

返回按名称排序的所有参数。默认实现使用 dir() 获取所有类型为 Param 的属性。

classmethod read()

返回用于加载模型的阅读器。

返回类型:

SparkXGBModelReader

save(path)

将此 ML 实例保存到给定路径,这是 ‘write().save(path)’ 的快捷方式。

参数:

path (str)

返回类型:

None

set(param, value)

在嵌入的参数映射中设置一个参数。

参数:
返回类型:

None

set_device(value)

设置设备,可选值:cpu, cuda, gpu

参数:

value (str)

返回类型:

_SparkXGBParams

transform(dataset, params=None)

使用可选参数转换输入数据集。

Added in version 1.3.0.

参数:
  • dataset (pyspark.sql.DataFrame) – 输入数据集

  • params (dict, optional) – 一个可选的参数映射,用于覆盖嵌入的参数。

返回:

转换后的数据集

返回类型:

pyspark.sql.DataFrame

uid

对象的唯一ID。

write()

返回用于保存模型的写入器。

返回类型:

SparkXGBModelWriter