AttributeError:“SMOTE”对象没有属性“fit_sample”

问题描述 投票:0回答:2

为什么我会收到错误消息

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)
python python-3.x machine-learning attributeerror imblearn
2个回答
46
投票

如果你这样导入

from imblearn.over_sampling import SMOTE

你需要做

fit_resample()

oversample = SMOTE()
X, y = oversample.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()
)。

© www.soinside.com 2019 - 2024. All rights reserved.