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-
相关产品推荐
相关产品推荐

