You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

EasyEnsembleClassifier无fit_resample属性问题求助

解决EasyEnsembleClassifier的AttributeError问题

问题根源

你混淆了imbalanced-learn两类工具的定位:

  • EasyEnsembleClassifier是集成分类器,它内部已经封装了多数类采样逻辑,本身用于分类预测,没有fit_resample或fit_sample这类重采样方法。
  • 若只是想生成平衡数据集(而非直接训练分类器),应使用专门的重采样器EasyEnsembleSampler。

两种场景的正确实现

场景1:直接用EasyEnsemble做分类(推荐,符合工具设计初衷)

无需单独重采样,初始化分类器后直接调用fit训练:

from imblearn.ensemble import EasyEnsembleClassifier
from sklearn.model_selection import train_test_split
import pandas as pd

# 假设X为特征数据,y为标签(1=滑坡点,0=非滑坡点)
X = pd.read_csv("features.csv")
y = pd.read_csv("labels.csv").values.ravel()

# 拆分训练测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 初始化EasyEnsemble分类器,可自定义参数
eec = EasyEnsembleClassifier(
    n_estimators=100,  # 基分类器数量
    sampling_strategy='auto',  # 自动平衡两类数据
    random_state=42
)

# 直接训练,内部已完成重采样逻辑
eec.fit(X_train, y_train)

# 执行预测
y_pred = eec.predict(X_test)

场景2:单独生成平衡数据集(仅获取重采样后的数据)

使用EasyEnsembleSampler(重采样器)生成多个平衡训练子集:

from imblearn.ensemble import EasyEnsembleSampler

# 初始化重采样器,设置生成的平衡子集数量
ees = EasyEnsembleSampler(n_subsets=5, random_state=42)

# 生成平衡数据集列表(每个元素为(X_resampled, y_resampled))
X_resampled_list, y_resampled_list = ees.fit_resample(X, y)

# 提取第一个平衡子集
X_balanced, y_balanced = X_resampled_list[0], y_resampled_list[0]

额外注意事项

  • 版本检查:EasyEnsembleSampler在imbalanced-learn 0.9.0及以上版本才支持,若版本过低,执行升级命令:pip install --upgrade imbalanced-learn
  • 工具区分:imbalanced-learn中*Classifier结尾的都是集成分类器,*Sampler/*OverSampler/*UnderSampler才是专门的重采样工具。

内容的提问来源于stack exchange,提问作者MM-

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 16:12:16