python imblearn库BorderlineSMOTE模块不生成任何合成数据

uinbv5nw  于 2023-05-16  发布在  Python
关注(0)|答案(1)|浏览(131)

我尝试在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

rur96b6h

rur96b6h1#

根据最初的实现,BorderlineSMOTE只对满足标准的“特定类型”的数据点进行过采样。它对靠近决策边界的少数点进行过采样,因此它需要一些关于示例所属的类目标(https://miriamspsantos.github.io/pdf-files/IEEE-CIM-Version.pdf)的信息。你是否给出了正确的输入?
此外,由于使用类似SMOTE的方法生成的示例的可变性较低,我还将探索合成数据生成的其他解决方案(例如,ydata-synthetic是一个很好的起点)。

相关问题