BaggingClassifier#

class sklearn.ensemble.BaggingClassifier(estimator=None, n_estimators=10, *, max_samples=1.0, max_features=1.0, bootstrap=True, bootstrap_features=False, oob_score=False, warm_start=False, n_jobs=None, random_state=None, verbose=0)[来源]#

一个 Bagging 分类器。

Bagging 分类器是一个集成元估计器,它在原始数据集的随机子集上拟合每个基础分类器,然后聚合它们的个体预测(通过投票或平均)以形成最终预测。这种元估计器通常可用于通过在其构建过程中引入随机性并从中构建集成来减少黑盒估计器(例如决策树)的方差。

此算法涵盖了文献中的多项工作。当数据集的随机子集作为样本的随机子集抽取时,此算法称为 Pasting [1]。如果样本是有放回抽取的,则该方法称为 Bagging [2]。当数据集的随机子集作为特征的随机子集抽取时,该方法称为 Random Subspaces [3]。最后,当基础估计器基于样本和特征的子集构建时,该方法称为 Random Patches [4]

用户指南中阅读更多内容。

0.15 版本新增。

参数:
estimator对象, 默认为 None

用于在数据集的随机子集上拟合的基础估计器。如果为 None,则基础估计器为 DecisionTreeClassifier

1.2 版本新增:base_estimator 已更名为 estimator

n_estimators整型, 默认为 10

集成中基础估计器的数量。

max_samples整型或浮点型, 默认为 1.0

从 X 中抽取用于训练每个基础估计器的样本数量(默认有放回抽取,更多详情请参见 bootstrap)。

  • 如果为整型,则抽取 max_samples 个样本。

  • 如果为浮点型,则抽取 max_samples * X.shape[0] 个样本。

max_features整型或浮点型, 默认为 1.0

从 X 中抽取用于训练每个基础估计器的特征数量(默认无放回抽取,更多详情请参见 bootstrap_features)。

  • 如果为整型,则抽取 max_features 个特征。

  • 如果为浮点型,则抽取 max(1, int(max_features * n_features_in_)) 个特征。

bootstrap布尔型, 默认为 True

样本是否以有放回方式抽取。如果为 False,则执行无放回抽样。

bootstrap_features布尔型, 默认为 False

特征是否以有放回方式抽取。

oob_score布尔型, 默认为 False

是否使用袋外样本(out-of-bag samples)估计泛化误差。仅在 bootstrap=True 时可用。

warm_start布尔型, 默认为 False

设置为 True 时,重用上次调用 fit 的解决方案并向集成中添加更多估计器,否则,拟合一个全新的集成。请参阅术语表

0.17 版本新增:warm_start 构造函数参数。

n_jobs整型, 默认为 None

用于 fitpredict 并行运行的作业数量。 None 表示 1,除非在 joblib.parallel_backend 上下文中。 -1 表示使用所有处理器。更多详情请参阅术语表

random_state整型, RandomState 实例或 None, 默认为 None

控制原始数据集的随机重采样(按样本和按特征)。如果基础估计器接受 random_state 属性,则为集成中的每个实例生成不同的种子。传入一个整型值可确保在多次函数调用中输出可复现。请参阅术语表

verbose整型, 默认为 0

控制拟合和预测时的详细程度。

属性:
estimator_估计器

集成所基于的基础估计器。

1.2 版本新增:base_estimator_ 已更名为 estimator_

n_features_in_整型

拟合 期间看到的特征数量。

0.24 版本新增。

feature_names_in_形状为 (n_features_in_,) 的 ndarray

拟合 期间看到的特征名称。仅当 X 的所有特征名称均为字符串时定义。

1.0 版本新增。

estimators_估计器列表

已拟合的基础估计器集合。

estimators_samples_数组列表

每个基础估计器抽取的样本子集。

estimators_features_数组列表

每个基础估计器抽取的特征子集。

classes_形状为 (n_classes,) 的 ndarray

类别标签。

n_classes_整型或列表

类别数量。

oob_score_浮点型

使用袋外估计获得的训练数据集分数。此属性仅在 oob_score 为 True 时存在。

oob_decision_function_形状为 (n_samples, n_classes) 的 ndarray

在训练集上使用袋外估计计算的决策函数。如果 n_estimators 较小,可能存在某个数据点在自助采样期间从未被排除在外。在这种情况下,oob_decision_function_ 可能包含 NaN。此属性仅在 oob_score 为 True 时存在。

另请参阅

BaggingRegressor

一个 Bagging 回归器。

参考文献

[1]

L. Breiman, “Pasting small votes for classification in large databases and on-line”, Machine Learning, 36(1), 85-103, 1999。

[2]

L. Breiman, “Bagging predictors”, Machine Learning, 24(2), 123-140, 1996。

[3]

T. Ho, “The random subspace method for constructing decision forests”, Pattern Analysis and Machine Intelligence, 20(8), 832-844, 1998。

[4]

G. Louppe and P. Geurts, “Ensembles on Random Patches”, Machine Learning and Knowledge Discovery in Databases, 346-361, 2012。

示例

>>> from sklearn.svm import SVC
>>> from sklearn.ensemble import BaggingClassifier
>>> from sklearn.datasets import make_classification
>>> X, y = make_classification(n_samples=100, n_features=4,
...                            n_informative=2, n_redundant=0,
...                            random_state=0, shuffle=False)
>>> clf = BaggingClassifier(estimator=SVC(),
...                         n_estimators=10, random_state=0).fit(X, y)
>>> clf.predict([[0, 0, 0, 0]])
array([1])
decision_function(X, **params)[来源]#

基础分类器决策函数的平均值。

参数:
X形状为 (n_samples, n_features) 的 {类数组, 稀疏矩阵}

训练输入样本。稀疏矩阵仅在基础估计器支持时才接受。

**params字典

通过元数据路由 API 传递给子估计器 decision_function 方法的参数。

1.7 版本新增:仅在设置 sklearn.set_config(enable_metadata_routing=True) 时可用。更多详情请参阅元数据路由用户指南

返回:
score形状为 (n_samples, k) 的 ndarray

输入样本的决策函数。列对应于按排序顺序排列的类别,如属性 classes_ 中所示。回归和二元分类是特殊情况,其中 k == 1,否则 k==n_classes

fit(X, y, sample_weight=None, **fit_params)[来源]#

从训练集 (X, y) 构建 Bagging 估计器集成。

参数:
X形状为 (n_samples, n_features) 的 {类数组, 稀疏矩阵}

训练输入样本。稀疏矩阵仅在基础估计器支持时才接受。

y形状为 (n_samples,) 的类数组

目标值(分类中的类别标签,回归中的实数)。

sample_weight形状为 (n_samples,) 的类数组, 默认为 None

样本权重。如果为 None,则样本权重相等。请注意,仅当基础估计器支持样本加权时才支持此功能。

**fit_params字典

传递给底层估计器的参数。

1.5 版本新增:仅在 enable_metadata_routing=True 时可用,该值可通过 sklearn.set_config(enable_metadata_routing=True) 设置。更多详情请参阅元数据路由用户指南

返回:
self对象

已拟合的估计器。

get_metadata_routing()[来源]#

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

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

1.5 版本新增。

返回:
routingMetadataRouter

一个封装路由信息的 MetadataRouter

get_params(deep=True)[来源]#

获取此估计器的参数。

参数:
deep布尔型, 默认为 True

如果为 True,将返回此估计器以及所包含的作为估计器的子对象的参数。

返回:
params字典

参数名称及其对应的值。

predict(X, **params)[来源]#

预测 X 的类别。

输入样本的预测类别被计算为具有最高平均预测概率的类别。如果基础估计器未实现 predict_proba 方法,则将采用投票方式。

参数:
X形状为 (n_samples, n_features) 的 {类数组, 稀疏矩阵}

训练输入样本。稀疏矩阵仅在基础估计器支持时才接受。

**params字典

通过元数据路由 API 传递给子估计器 predict_proba(如果可用)或 predict 方法(否则)的参数。

1.7 版本新增:仅在设置 sklearn.set_config(enable_metadata_routing=True) 时可用。更多详情请参阅元数据路由用户指南

返回:
y形状为 (n_samples,) 的 ndarray

预测的类别。

predict_log_proba(X, **params)[来源]#

预测 X 的类别对数概率。

输入样本的预测类别对数概率计算为集成中基础估计器平均预测类别概率的对数。

参数:
X形状为 (n_samples, n_features) 的 {类数组, 稀疏矩阵}

训练输入样本。稀疏矩阵仅在基础估计器支持时才接受。

**params字典

通过元数据路由 API 传递给子估计器 predict_log_probapredict_probaproba 方法的参数。路由按照提到的顺序尝试,具体取决于子估计器上是否存在该方法。

1.7 版本新增:仅在设置 sklearn.set_config(enable_metadata_routing=True) 时可用。更多详情请参阅元数据路由用户指南

返回:
p形状为 (n_samples, n_classes) 的 ndarray

输入样本的类别对数概率。类别的顺序与属性 classes_ 中的顺序一致。

predict_proba(X, **params)[来源]#

预测 X 的类别概率。

输入样本的预测类别概率计算为集成中基础估计器平均预测类别概率。如果基础估计器未实现 predict_proba 方法,则将采用投票方式,输入样本的预测类别概率代表预测每个类别的估计器所占的比例。

参数:
X形状为 (n_samples, n_features) 的 {类数组, 稀疏矩阵}

训练输入样本。稀疏矩阵仅在基础估计器支持时才接受。

**params字典

通过元数据路由 API 传递给子估计器 predict_proba(如果可用)或 predict 方法(否则)的参数。

1.7 版本新增:仅在设置 sklearn.set_config(enable_metadata_routing=True) 时可用。更多详情请参阅元数据路由用户指南

返回:
p形状为 (n_samples, n_classes) 的 ndarray

输入样本的类别概率。类别的顺序与属性 classes_ 中的顺序一致。

score(X, y, sample_weight=None)[来源]#

返回给定数据和标签上的准确率

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

参数:
X形状为 (n_samples, n_features) 的类数组

测试样本。

y形状为 (n_samples,) 或 (n_samples, n_outputs) 的类数组

X 的真实标签。

sample_weight形状为 (n_samples,) 的类数组, 默认为 None

样本权重。

返回:
score浮点型

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

set_fit_request(*, sample_weight: bool | None | str = '$UNCHANGED$') BaggingClassifier[来源]#

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

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

每个参数的选项是

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

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

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

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

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

1.3 版本新增。

注意

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

参数:
sample_weight字符串, True, False 或 None, 默认为 sklearn.utils.metadata_routing.UNCHANGED

fit 方法中 sample_weight 参数的元数据路由。

返回:
self对象

更新后的对象。

set_params(**params)[来源]#

设置此估计器的参数。

此方法适用于简单估计器以及嵌套对象(例如 Pipeline)。后者具有 <component>__<parameter> 形式的参数,以便可以更新嵌套对象的每个组件。

参数:
**params字典

估计器参数。

返回:
self估计器实例

估计器实例。

set_score_request(*, sample_weight: bool | None | str = '$UNCHANGED$') BaggingClassifier[来源]#

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

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

每个参数的选项是

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

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

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

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

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

1.3 版本新增。

注意

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

参数:
sample_weight字符串, True, False 或 None, 默认为 sklearn.utils.metadata_routing.UNCHANGED

score 方法中 sample_weight 参数的元数据路由。

返回:
self对象

更新后的对象。