属性错误:'SMOTE'对象没有'fit_sample'属性。

33

为什么我会收到错误提示?

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)

6
它被称为 fit_resample - a_guest
3个回答

49

如果你像这样导入

from imblearn.over_sampling import SMOTE

你需要使用fit_resample()函数

oversample = SMOTE()
X, y = oversample.fit_resample(X, y)

1
你好,感谢您的回复。但是我想问一下,fit_sample()和fit_resample()是不是一样的?因为我在按照教程操作时遇到了这个错误,而他们写的是fit_sample()。非常感谢。 - user12088653
1
可能是因为他们的代码出现了错误,所以你才会来到这里,这个教程:https://towardsdatascience.com/building-a-logistic-regression-in-python-step-by-step-becd4d56c9c8。 - Béatrice Moissinac
准确地说,哈哈,这正是我来到这里的原因。 - Tadashi Mori

1
另一种方式
from imblearn.combine import SMOTEENN

Sm=SMOTEENN()
X, y=Sm.fit_resample(X, y)

0

以前使用的是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())。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接