RUSBoost分类器#

class imblearn.ensemble.RUSBoostClassifier(estimator=None, *, n_estimators=50, learning_rate=1.0, algorithm='deprecated', sampling_strategy='auto', replacement=False, random_state=None)[source]#

在学习AdaBoost时集成的随机欠采样。

在学习过程中,通过在每个提升算法的迭代中对样本进行随机欠采样,缓解了类别平衡问题。

更多内容请参阅用户指南

在版本0.4中添加。

Parameters:
estimatorestimator object, default=None

构建增强集成的基础估计器。 需要支持样本加权,以及正确的 classes_n_classes_ 属性。如果 None,则 基础估计器是 DecisionTreeClassifier(max_depth=1)

在版本0.12中添加。

n_estimatorsint, default=50

提升终止时的最大估计器数量。 在完美拟合的情况下,学习过程会提前停止。

learning_ratefloat, default=1.0

学习率通过learning_rate缩小每个分类器的贡献。在learning_raten_estimators之间存在权衡。

algorithm{‘SAMME’, ‘SAMME.R’}, default=’SAMME.R’

如果使用‘SAMME.R’,则使用SAMME.R真实提升算法。 base_estimator必须支持类别概率的计算。 如果使用‘SAMME’,则使用SAMME离散提升算法。 SAMME.R算法通常比SAMME收敛得更快, 通过更少的提升迭代次数实现更低的测试误差。

自版本0.12起已弃用:"SAMME.R" 已被弃用,并将在版本0.14中移除。 ‘“SAMME”’ 将成为默认选项。

sampling_strategyfloat, str, dict, callable, default=’auto’

采样信息以对数据集进行采样。

  • float 时,它对应于重采样后少数类样本数量与多数类样本数量的期望比率。因此,该比率表示为 \(\alpha_{us} = N_{m} / N_{rM}\),其中 \(N_{m}\) 是少数类样本的数量,\(N_{rM}\) 是重采样后多数类样本的数量。

    警告

    float 仅适用于二分类。对于多类分类会引发错误。

  • str 时,指定重采样所针对的类别。不同类别中的样本数量将被均衡化。可能的选择有:

    'majority': 仅对多数类进行重采样;

    'not minority': 对除少数类之外的所有类进行重采样;

    'not majority': 重新采样除多数类之外的所有类;

    'all': 对所有类别进行重采样;

    'auto': 等同于 'not minority'.

  • dict时,键对应于目标类别。值对应于每个目标类别所需的样本数量。

  • 当可调用时,函数接受 y 并返回一个 dict。键对应于目标类别。值对应于每个类别所需的样本数量。

replacementbool, default=False

是否进行随机有放回抽样。

random_stateint, RandomState instance, default=None

控制算法的随机化。

  • 如果是整数,random_state 是随机数生成器使用的种子;

  • 如果 RandomState 实例,random_state 是随机数生成器;

  • 如果 None,随机数生成器是 np.random 使用的 RandomState 实例。

Attributes:
estimator_estimator

集成模型的基础估计器。

在版本0.10中添加。

estimators_list of classifiers

拟合的子估计器的集合。

base_sampler_RandomUnderSampler

用于生成后续采样器的基本采样器。

samplers_list of RandomUnderSampler

已拟合采样器的集合。

pipelines_list of Pipeline

拟合的管道集合(采样器 + 树)。

classes_ndarray of shape (n_classes,)

类别标签。

n_classes_int

类的数量。

estimator_weights_ndarray of shape (n_estimator,)

增强集成中每个估计器的权重。

estimator_errors_ndarray of shape (n_estimator,)

增强集成中每个估计器的分类错误。

feature_importances_ndarray of shape (n_features,)

基于杂质特征的重要性。

n_features_in_int

输入数据集中的特征数量。

在版本0.9中添加。

feature_names_in_ndarray of shape (n_features_in_,)

fit期间看到的特征名称。仅在X具有全部为字符串的特征名称时定义。

在版本0.9中添加。

另请参阅

BalancedBaggingClassifier

Bagging分类器,其中每个基础估计器都在平衡的bootstrap上进行训练。

BalancedRandomForestClassifier

随机森林应用随机欠采样来平衡不同的自举样本。

EasyEnsembleClassifier

在平衡自助法上训练的AdaBoost分类器集成。

参考文献

[1]

Seiffert, C., Khoshgoftaar, T. M., Van Hulse, J., & Napolitano, A. “RUSBoost: 一种缓解类别不平衡的混合方法。” IEEE 系统、人与控制论- A部分:系统与人类 40.1 (2010): 185-197.

示例

>>> from imblearn.ensemble import RUSBoostClassifier
>>> from sklearn.datasets import make_classification
>>>
>>> X, y = make_classification(n_samples=1000, n_classes=3,
...                            n_informative=4, weights=[0.2, 0.3, 0.5],
...                            random_state=0)
>>> clf = RUSBoostClassifier(random_state=0)
>>> clf.fit(X, y)
RUSBoostClassifier(...)
>>> clf.predict(X)
array([...])

方法

decision_function(X)

计算X的决策函数。

fit(X, y[, sample_weight])

从训练集 (X, y) 构建一个增强分类器。

get_metadata_routing()

引发 NotImplementedError

get_params([deep])

获取此估计器的参数。

predict(X)

预测X的类别。

predict_log_proba(X)

预测X的类别对数概率。

predict_proba(X)

预测X的类别概率。

score(X, y[, sample_weight])

返回给定测试数据和标签的平均准确率。

set_fit_request(*[, sample_weight])

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

set_params(**params)

设置此估计器的参数。

set_score_request(*[, sample_weight])

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

staged_decision_function(X)

计算X的决策函数,针对每次提升迭代。

staged_predict(X)

返回X的阶段性预测。

staged_predict_proba(X)

预测X的类别概率。

staged_score(X, y[, sample_weight])

返回X, y的分阶段分数。

decision_function(X)[source]#

计算X的决策函数。

Parameters:
X{array-like, sparse matrix} of shape (n_samples, n_features)

训练输入样本。稀疏矩阵可以是CSC、CSR、COO、DOK或LIL。COO、DOK和LIL会被转换为CSR。

Returns:
scorendarray of shape of (n_samples, k)

输入样本的决策函数。输出的顺序与classes_属性的顺序相同。二分类是一个特殊情况,其中k == 1,否则k==n_classes。对于二分类,值越接近-1或1,分别表示越像classes_中的第一个或第二个类别。

property feature_importances_#

基于杂质特征的重要性。

越高,特征越重要。 特征的重要性计算为该特征带来的准则的(归一化)总减少量。它也被称为基尼重要性。

警告:基于不纯度的特征重要性可能会对高基数特征(许多唯一值)产生误导。请参见sklearn.inspection.permutation_importance作为替代方案。

Returns:
feature_importances_ndarray of shape (n_features,)

特征重要性。

fit(X, y, sample_weight=None)[source]#

从训练集 (X, y) 构建一个增强分类器。

Parameters:
X{array-like, sparse matrix} of shape (n_samples, n_features)

训练输入样本。稀疏矩阵可以是CSC、CSR、COO、DOK或LIL。DOK和LIL会被转换为CSR。

yarray-like of shape (n_samples,)

目标值(类别标签)。

sample_weightarray-like of shape (n_samples,), default=None

样本权重。如果为None,样本权重初始化为 1 / n_samples

Returns:
selfobject

返回自身。

get_metadata_routing()[source]#

引发 NotImplementedError

此估计器尚不支持元数据路由。

get_params(deep=True)[source]#

获取此估计器的参数。

Parameters:
deepbool, default=True

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

Returns:
paramsdict

参数名称映射到它们的值。

predict(X)[source]#

预测X的类别。

输入样本的预测类别计算为集成中分类器的加权平均预测。

Parameters:
X{array-like, sparse matrix} of shape (n_samples, n_features)

训练输入样本。稀疏矩阵可以是CSC、CSR、COO、DOK或LIL。COO、DOK和LIL会被转换为CSR。

Returns:
yndarray of shape (n_samples,)

预测的类别。

predict_log_proba(X)[source]#

预测X的类别对数概率。

输入样本的预测类别对数概率计算为集成中分类器的加权平均预测类别对数概率。

Parameters:
X{array-like, sparse matrix} of shape (n_samples, n_features)

训练输入样本。稀疏矩阵可以是CSC、CSR、COO、DOK或LIL。COO、DOK和LIL会被转换为CSR。

Returns:
pndarray of shape (n_samples, n_classes)

输入样本的类别概率。输出的顺序与classes_属性的顺序相同。

predict_proba(X)[source]#

预测X的类别概率。

输入样本的预测类别概率计算为集成中分类器的加权平均预测类别概率。

Parameters:
X{array-like, sparse matrix} of shape (n_samples, n_features)

训练输入样本。稀疏矩阵可以是CSC、CSR、COO、DOK或LIL。COO、DOK和LIL会被转换为CSR。

Returns:
pndarray of shape (n_samples, n_classes)

输入样本的类别概率。输出的顺序与classes_属性的顺序相同。

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

返回给定测试数据和标签的平均准确率。

在多标签分类中,这是子集准确性,这是一个严格的度量标准,因为您要求每个样本的每个标签集都被正确预测。

Parameters:
Xarray-like of shape (n_samples, n_features)

测试样本。

yarray-like of shape (n_samples,) or (n_samples, n_outputs)

X 的真实标签。

sample_weightarray-like of shape (n_samples,), default=None

样本权重。

Returns:
scorefloat

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

set_fit_request(*, sample_weight: bool | None | str = '$UNCHANGED$') RUSBoostClassifier[source]#

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

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

每个参数的选项是:

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

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

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

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

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

在版本1.3中添加。

注意

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

Parameters:
sample_weightstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED

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

Returns:
selfobject

更新后的对象。

set_params(**params)[source]#

设置此估计器的参数。

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

Parameters:
**paramsdict

估计器参数。

Returns:
selfestimator instance

估计器实例。

set_score_request(*, sample_weight: bool | None | str = '$UNCHANGED$') RUSBoostClassifier[source]#

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

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

每个参数的选项是:

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

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

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

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

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

在版本1.3中添加。

注意

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

Parameters:
sample_weightstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED

scoresample_weight 参数的元数据路由。

Returns:
selfobject

更新后的对象。

staged_decision_function(X)[source]#

计算X的决策函数,针对每次提升迭代。

此方法允许在每次提升迭代后监控(即在测试集上确定错误)。

Parameters:
X{array-like, sparse matrix} of shape (n_samples, n_features)

训练输入样本。稀疏矩阵可以是CSC、CSR、COO、DOK或LIL。COO、DOK和LIL会被转换为CSR。

Yields:
scoregenerator of ndarray of shape (n_samples, k)

输入样本的决策函数。输出的顺序与classes_属性的顺序相同。二分类是一个特殊情况,其中k == 1,否则k==n_classes。对于二分类,值越接近-1或1,分别表示越像classes_中的第一个或第二个类别。

staged_predict(X)[source]#

返回X的阶段性预测。

输入样本的预测类别是通过集成中分类器的加权平均预测来计算的。

此生成器方法在每次提升迭代后产生集成预测,因此允许监控,例如在每次提升后确定测试集上的预测。

Parameters:
Xarray-like of shape (n_samples, n_features)

输入样本。稀疏矩阵可以是CSC、CSR、COO、DOK或LIL。COO、DOK和LIL会被转换为CSR。

Yields:
ygenerator of ndarray of shape (n_samples,)

预测的类别。

staged_predict_proba(X)[source]#

预测X的类别概率。

输入样本的预测类别概率计算为集成中分类器的加权平均预测类别概率。

此生成器方法在每次提升迭代后生成集成预测类概率,因此允许监控,例如在每次提升后确定测试集上的预测类概率。

Parameters:
X{array-like, sparse matrix} of shape (n_samples, n_features)

训练输入样本。稀疏矩阵可以是CSC、CSR、COO、DOK或LIL。COO、DOK和LIL会被转换为CSR。

Yields:
pgenerator of ndarray of shape (n_samples,)

输入样本的类别概率。输出的顺序与classes_属性的顺序相同。

staged_score(X, y, sample_weight=None)[source]#

返回X, y的分阶段分数。

此生成器方法在每次提升迭代后产生集成分数,因此允许监控,例如在每次提升后确定测试集上的分数。

Parameters:
X{array-like, sparse matrix} of shape (n_samples, n_features)

训练输入样本。稀疏矩阵可以是CSC、CSR、COO、DOK或LIL。COO、DOK和LIL会被转换为CSR。

yarray-like of shape (n_samples,)

X的标签。

sample_weightarray-like of shape (n_samples,), default=None

样本权重。

Yields:
zfloat

使用 imblearn.ensemble.RUSBoostClassifier 的示例#

使用重采样比较集成分类器

Compare ensemble classifiers using resampling