如何正确使用PyPI的dtosmote 1.0.3处理自有数据集?
调用dtosmote包触发
NameError: name 'delaunaySMOTE' is not defined解决方法 问题场景
- 机器学习类别不平衡(Class-imbalance)处理场景下,SMOTE是业内通用的经典过采样算法,使用
imblearn.over_sampling中的SMOTE类对不平衡二分类数据集做过采样时,代码可正常运行,能正确输出采样前后的数据集类别分布。 - 查阅DTO-SMOTE相关学术论文后,安装PyPI发布的
dtosmote 1.0.3包(该包官方文档完善度较低),安装命令为:pip install dtosmote - 尝试直接将原代码中的SMOTE替换为
delaunaySMOTE(random_state=42)实例时,触发报错:
无法正常调用DTO-SMOTE算法完成过采样。NameError: name 'delaunaySMOTE' is not defined
报错原因
该包未在顶层模块暴露名为delaunaySMOTE的类,直接调用不存在的类名会触发名称错误;同时该包的实例化参数和imblearn的SMOTE类逻辑不一致,不能直接套用SMOTE的实例化写法。
正确调用步骤
- 从对应子模块导入正确的算法类:
from dtosmote.dto_smote import DTO - 传入规定参数完成采样器实例化:
sm = DTO('teste1','solid_angle',7.5) - 调用和imblearn接口兼容的
fit_resample()方法完成过采样,即可得到类别均衡的数据集:X_resampled, y_resampled = sm.fit_resample(X_original, y_original)
内容的提问来源于stack exchange,提问作者XYZ
相关产品推荐
相关产品推荐

