我尝试在imblearn库中使用边界线SMOTE生成合成数据,但没有生成合成数据。我正在使用一个基于多类的数据集,为了生成数据,我将我的 Dataframe 分成少数类和多数类,如二进制分类。然后我把特征放在X上,把由1和0组成的目标类放在y上。此方法适用于imblearn库中的SVMSMOTE,SMOTENC,但不适用于BorderlineSMOTE。
X=df.drop(['target'], axis=1)
y=df['target']
border_line = BorderlineSMOTE(random_state=42)
X_res, y_res = border_line.fit_resample(X, y)
代码没有提供错误,但X_res
包含与X
相同的记录,没有添加合成数据。
BorderlineSMOTE模块在imblearn库中是否已弃用?
https://imbalanced-learn.org/stable/references/generated/imblearn.over_sampling.BorderlineSMOTE.html
1条答案
按热度按时间rur96b6h1#
根据最初的实现,BorderlineSMOTE只对满足标准的“特定类型”的数据点进行过采样。它对靠近决策边界的少数点进行过采样,因此它需要一些关于示例所属的类目标(https://miriamspsantos.github.io/pdf-files/IEEE-CIM-Version.pdf)的信息。你是否给出了正确的输入?
此外,由于使用类似SMOTE的方法生成的示例的可变性较低,我还将探索合成数据生成的其他解决方案(例如,ydata-synthetic是一个很好的起点)。