AttributeError: 'SMOTE' 对象没有属性 '_validate_data'

HP_*_*_17 13 python scikit-learn imblearn imbalanced-data

我正在使用 SMOTE 重新采样我的数据(多类)。

sm = SMOTE(random_state=1)
X_res, Y_res = sm.fit_resample(X_train, Y_train)
Run Code Online (Sandbox Code Playgroud)

但是,我收到此属性错误。任何人都可以帮忙吗?

VHS*_*VHS 17

简答

您需要升级scikit-learn到 0.23.1 版。

长答案

最新版本 0.7.0imbalanced-learn似乎对scikit-learnv0.23.1有未公开的依赖性。AttributeError: 'SMOTE' object has no attribute '_validate_data'如果您的scikit-learn值为 0.22 或更低,它会给您。

如果您使用的是Anaconda,安装scikit-learn0.23.1 版本可能会很棘手。conda update scikit-learn可能不会更新scikit-learn0.23 或更高版本,因为此时scikit-learnConda的最新版本是 0.22.1。如果您尝试使用conda install scikit-learn=0.23.1或安装它pip install scikit-learn==0.23.1,您将获得大量的兼容性检查并且安装可能不会很快。因此,scikit-learn在 Anaconda 中安装0.23.1 版本的最简单方法是使用最少的软件包创建一个新的虚拟环境,以便减少或没有冲突问题。然后,在新的虚拟环境中安装scikit-learn0.23.1 版和 0.7.0 版的imbalanced-learn.

conda create -n test python=3.7.6
conda activate test
pip install scikit-learn==0.23.1
pip install imbalanced-learn==0.7.0
Run Code Online (Sandbox Code Playgroud)

最后,您需要在新的虚拟环境中重新安装 IDE 才能使用这些包。

但是,一旦scikit-learn0.23.1 版本在 Conda 中可用并且没有兼容性问题,您就可以直接将其安装在基础环境中。


小智 6

第 1 步- 打开你的 jupyter 笔记本

步骤 2 - 输入 pip install --upgrade scikit-learn

第 3 步- 重新启动内核

按照原样执行所有步骤即可完成!(升级)