为什么我会收到错误消息
AttributeError: 'SMOTE' object has no attribute 'fit_sample'
我认为这段代码不会导致任何错误?
from imblearn.over_sampling import SMOTE
smt = SMOTE(random_state=0)
X_train_SMOTE, y_train_SMOTE = smt.fit_sample(X_train, y_train)
如果你这样导入
from imblearn.over_sampling import SMOTE
你需要做
fit_resample()
oversample = SMOTE()
X, y = oversample.fit_resample(X, y)
它曾经是
fit_sample
但在 imblearn 0.4 中被重命名为 fit_resample
并带有向后兼容性的别名(这被记录了)。然后别名在版本 0.8 中被删除(由于某种原因没有记录)。简而言之,SMOTE().fit_sample(X_train, y_train)
曾经工作但现在不工作了。
现在只有
SMOTE().fit_resample(X_train, y_train)
有效。
此外,所有 imblearn 对象都定义了一个
fit()
方法,但它完全没用,因为它所做的一切都已经由 fit_resample()
完成(文档甚至敦促您使用 fit_resample()
而不是 fit()
)。