EasyEnsemble分类器#
- class imblearn.ensemble.EasyEnsembleClassifier(n_estimators=10, estimator=None, *, warm_start=False, sampling_strategy='auto', replacement=False, n_jobs=None, random_state=None, verbose=0)[source]#
平衡增强学习者的集合,也称为EasyEnsemble。
该算法被称为EasyEnsemble [1]。分类器是由在不同平衡自举样本上训练的AdaBoost学习器组成的集成。平衡是通过随机欠采样实现的。
更多内容请参阅用户指南。
在版本0.4中添加。
- Parameters:
- n_estimatorsint, default=10
集成中AdaBoost学习器的数量。
- estimatorestimator object, default=AdaBoostClassifier()
内部集成中使用的基础AdaBoost分类器。请注意,您可以通过传递自己的实例来设置内部学习器的数量。
在版本0.10中添加。
- warm_startbool, default=False
当设置为True时,重用之前调用的解决方案来拟合并添加更多的估计器到集成中,否则,仅拟合一个全新的集成。
- 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
是否进行随机有放回抽样。
- n_jobsint, default=None
在交叉验证循环中使用的CPU核心数量。
None
表示1,除非在joblib.parallel_backend
上下文中。-1
表示使用所有处理器。更多详情请参见 术语表。- random_stateint, RandomState instance, default=None
控制算法的随机化。
如果是整数,
random_state
是随机数生成器使用的种子;如果
RandomState
实例,random_state 是随机数生成器;如果
None
,随机数生成器是np.random
使用的RandomState
实例。
- verboseint, default=0
控制构建过程的详细程度。
- Attributes:
- estimator_estimator
集成模型的基础估计器。
在版本0.10中添加。
- estimators_list of estimators
拟合的基础估计器的集合。
estimators_samples_
list of arrays每个基础估计器的抽取样本子集。
- estimators_features_list of arrays
每个基础估计器绘制的特征子集。
- classes_array, shape (n_classes,)
类别标签。
- n_classes_int or list
类的数量。
- n_features_in_int
输入数据集中的特征数量。
在版本0.9中添加。
- feature_names_in_ndarray of shape (
n_features_in_
,) 在
fit
期间看到的特征名称。仅在X
具有全部为字符串的特征名称时定义。在版本0.9中添加。
另请参阅
BalancedBaggingClassifier
Bagging分类器,其中每个基础估计器都在平衡的bootstrap上进行训练。
BalancedRandomForestClassifier
随机森林应用随机欠采样来平衡不同的自举样本。
RUSBoostClassifier
AdaBoost分类器在每一轮提升中使用随机欠采样来平衡每个自举样本。
注释
该方法在[1]中描述。
支持通过独立采样每个类别来进行多类重采样。
参考文献
示例
>>> from collections import Counter >>> from sklearn.datasets import make_classification >>> from sklearn.model_selection import train_test_split >>> from sklearn.metrics import confusion_matrix >>> from imblearn.ensemble import EasyEnsembleClassifier >>> X, y = make_classification(n_classes=2, class_sep=2, ... weights=[0.1, 0.9], n_informative=3, n_redundant=1, flip_y=0, ... n_features=20, n_clusters_per_class=1, n_samples=1000, random_state=10) >>> print('Original dataset shape %s' % Counter(y)) Original dataset shape Counter({1: 900, 0: 100}) >>> X_train, X_test, y_train, y_test = train_test_split(X, y, ... random_state=0) >>> eec = EasyEnsembleClassifier(random_state=42) >>> eec.fit(X_train, y_train) EasyEnsembleClassifier(...) >>> y_pred = eec.predict(X_test) >>> print(confusion_matrix(y_test, y_pred)) [[ 23 0] [ 2 225]]
方法
基础分类器的决策函数的平均值。
fit
(X, y)从训练集(X, y)构建一个Bagging估计器集合。
获取此对象的元数据路由。
get_params
([deep])获取此估计器的参数。
predict
(X)预测X的类别。
预测X的类别对数概率。
预测X的类别概率。
score
(X, y[, sample_weight])返回给定测试数据和标签的平均准确率。
set_fit_request
(*[, sample_weight])传递给
fit
方法的请求元数据。set_params
(**params)设置此估计器的参数。
set_score_request
(*[, sample_weight])传递给
score
方法的请求元数据。- property base_estimator_#
用于旧版sklearn版本兼容性的属性。
- decision_function(X)[source]#
基础分类器的决策函数的平均值。
- Parameters:
- X{array-like, sparse matrix} of shape (n_samples, n_features)
训练输入样本。只有当基础估计器支持时,才接受稀疏矩阵。
- Returns:
- scorendarray of shape (n_samples, k)
输入样本的决策函数。列对应于按排序顺序排列的类别,如它们在属性
classes_
中出现的顺序。回归和二元分类是特殊情况,其中k == 1
,否则k==n_classes
。
- property estimators_samples_#
每个基础估计器的抽取样本子集。
返回一个动态生成的索引列表,用于标识用于拟合集成中每个成员的样本,即袋内样本。
注意:每次调用该属性时都会重新创建列表,以便通过不存储采样数据来减少对象的内存占用。因此,获取该属性可能比预期的要慢。
- fit(X, y)[source]#
从训练集(X, y)构建一个Bagging估计器集合。
- Parameters:
- X{array-like, sparse matrix} of shape (n_samples, n_features)
训练输入样本。只有当基础估计器支持时,才接受稀疏矩阵。
- yarray-like of shape (n_samples,)
目标值(分类中的类标签,回归中的实数)。
- Returns:
- selfobject
拟合的估计器。
- get_metadata_routing()[source]#
获取此对象的元数据路由。
请查看用户指南了解路由机制的工作原理。
在版本1.5中添加。
- Returns:
- routingMetadataRouter
一个封装了路由信息的
MetadataRouter
。
- get_params(deep=True)[source]#
获取此估计器的参数。
- Parameters:
- deepbool, default=True
如果为True,将返回此估计器及其包含的子对象的参数。
- Returns:
- paramsdict
参数名称映射到它们的值。
- predict(X)[source]#
预测X的类别。
输入样本的预测类别被计算为具有最高平均预测概率的类别。如果基础估计器没有实现
predict_proba
方法,则采用投票方式。- Parameters:
- X{array-like, sparse matrix} of shape (n_samples, n_features)
训练输入样本。只有当基础估计器支持时,才接受稀疏矩阵。
- Returns:
- yndarray of shape (n_samples,)
预测的类别。
- predict_log_proba(X)[source]#
预测X的类别对数概率。
输入样本的预测类别对数概率计算为集合中基础估计器的平均预测类别概率的对数。
- Parameters:
- X{array-like, sparse matrix} of shape (n_samples, n_features)
训练输入样本。只有当基础估计器支持时,才接受稀疏矩阵。
- Returns:
- pndarray of shape (n_samples, n_classes)
输入样本的类别对数概率。类别的顺序与属性 classes_ 中的顺序相对应。
- predict_proba(X)[source]#
预测X的类别概率。
输入样本的预测类别概率计算为集成中基础估计器的平均预测类别概率。如果基础估计器没有实现
predict_proba
方法,则采用投票方式,输入样本的预测类别概率表示预测每个类别的估计器的比例。- Parameters:
- X{array-like, sparse matrix} of shape (n_samples, n_features)
训练输入样本。只有当基础估计器支持时,才接受稀疏矩阵。
- 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$') EasyEnsembleClassifier [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$') EasyEnsembleClassifier [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
score
中sample_weight
参数的元数据路由。
- Returns:
- selfobject
更新后的对象。