过采样:用于Python中二进制和分类数据的SMOTE

时间:2017-12-05 14:20:19

标签: python-3.x imputation

我想将SMOTE应用于包含二进制,分类和连续数据的不平衡数据集。有没有办法将SMOTE应用于二进制和分类数据?

3 个答案:

答案 0 :(得分:2)

截至2018年1月,这个问题尚未在Python中实现。以下是团队中的reference。事实上,如果有人想要实施,他们对提案持开放态度。

对于那些对此问题具有学术兴趣的人,来自Chawla& Sons的paper。 Bowyer在6.1节中解决了这种SMOTE-Non Continuous采样问题。

更新:此功能自2018年10月21日起实施。服务请求现已关闭。

答案 1 :(得分:2)

根据文档,现在可以通过使用SMOTENC来实现。 SMOTE-NC能够处理分类特征和连续特征。

这是文档中的代码

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)

答案 2 :(得分:1)

因此,根据文档,SMOTE尚不支持Python中的分类数据,并提供连续输出。

您可以使用一种解决方法,将分类变量转换为整数并使用SMOTE。

然后使用np.round(X_train[categorical_variables])将它们转换回相应的分类值。