【发布时间】:2018-05-19 05:50:54
【问题描述】:
我想将 SMOTE 应用于包含二进制、分类和连续数据的不平衡数据集。有没有办法将 SMOTE 应用于二进制和分类数据?
【问题讨论】:
标签: python-3.x imputation
我想将 SMOTE 应用于包含二进制、分类和连续数据的不平衡数据集。有没有办法将 SMOTE 应用于二进制和分类数据?
【问题讨论】:
标签: python-3.x imputation
根据文档,现在可以使用 SMOTENC 来实现。 SMOTE-NC 能够处理分类和连续特征的混合。
这是来自documentation的代码:
from imblearn.over_sampling import SMOTENC
smote_nc = SMOTENC(categorical_features=[0, 2], random_state=0)
X_resampled, y_resampled = smote_nc.fit_resample(X, y)
【讨论】:
截至 2018 年 1 月,此问题尚未在 Python 中实现。以下是来自团队的reference。事实上,如果有人想实施,他们愿意接受提案。
Chawla & Bowyer 的 paper (web archive) 对于那些对这个持续性问题有学术兴趣的人,在第 6.1 节中解决了这个 SMOTE-Non Continuous 抽样问题。
更新:此功能已于 2018 年 10 月 21 日实施。服务请求现已关闭。
【讨论】:
因此,根据文档,SMOTE 尚不支持 Python 中的分类数据,并提供连续输出。
您可以采用一种解决方法,将分类变量转换为整数并使用 SMOTE。
然后使用np.round(X_train[categorical_variables]) 将它们转换回各自的分类值。
【讨论】: