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

新手上路,请多包涵

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

 sm = SMOTE(random_state=1)
X_res, Y_res = sm.fit_resample(X_train, Y_train)

但是,我收到此属性错误。谁能帮忙?

原文由 HP_17 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 960
2 个回答

简答

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

长答案

imbalanced-learn 的最新版本 0.7.0 似乎对 scikit-learn v0.23.1 具有未记录的依赖性。它会给你 AttributeError: 'SMOTE' object has no attribute '_validate_data' 如果你的 scikit-learn 是0.22或更低。

如果您使用的是 Anaconda ,安装 scikit-learn 版本 0.23.1 可能会很棘手。 conda update scikit-learn 可能不会更新 scikit-learn 版本0.23或更高版本,因为最新的 scikit-learn 版本Conda.22此时为0。如果您尝试使用 conda install scikit-learn=0.23.1pip install scikit-learn==0.23.1 安装它,您将进行大量的兼容性检查并且安装可能不会很快。因此,在 Anaconda 中安装 scikit-learn 版本 0.23.1 的最简单方法是创建一个包含最少包的新虚拟环境,以便减少或不存在冲突问题。然后,在新的虚拟环境中安装 scikit-learn 0.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

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

但是一旦 scikit-learn 版本0.23.1在Conda中可用并且没有兼容性问题,你可以直接在基础环境中安装它。

原文由 VHS 发布,翻译遵循 CC BY-SA 4.0 许可协议

第 1 步- 打开你的 jupyter notebook

第 2 步- 输入 pip install –upgrade scikit-learn

第 3 步- 重新启动内核

按原样按照所有步骤完成!(已升级)

原文由 Darshika Verma 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题