使用SMOTE时提示TypeError: __init__()不存在'kind'参数如何解决
问题根因
该报错由imblearn库的版本迭代接口变更导致:
- 0.4及更早版本的
imblearn中,SMOTE类支持kind参数,用于指定不同的过采样变体(如svm、borderline1等) - 0.4版本之后,原
kind参数对应的不同采样逻辑被拆分为独立的采样类,原生SMOTE类已移除kind参数,传入该参数会触发类型错误。
解决方案
你需要的SVM变种SMOTE现在对应独立的SVMSMOTE类,调整代码即可正常运行:
from imblearn.over_sampling import SVMSMOTE # 替换原SMOTE类为SVMSMOTE,移除kind参数 sm = SVMSMOTE(random_state=r_state, sampling_strategy=1, k_neighbors=9) sdf = sm.fit_resample(x_train, y_train)
如果需要用到其他原kind参数对应的采样逻辑,对应映射关系如下:
- 原
kind='regular'→ 直接使用现有SMOTE类 - 原
kind='borderline1'/kind='borderline2'→ 使用BorderlineSMOTE类,通过该类的kind参数指定具体类型 - 原
kind='svm'→ 使用SVMSMOTE类
内容的提问来源于stack exchange,提问作者Mona
相关产品推荐
相关产品推荐

