繁体   English   中英

ImportError:无法从“sklearn.base”导入名称“MultiOutputMixin”

[英]ImportError: cannot import name 'MultiOutputMixin' from 'sklearn.base'

我只想对 scikit-learn 进行线性回归。当我尝试导入线性 model package 时,出现标题中的错误消息。

我试图遵循类似问题的解决方案( 链接)。 该建议基本上是摆脱代码中请求“MultipleOutputMixin”的部分。

当我这样做时,当然 MultiOuputMixin 不再是问题,但它在下面显示的错误消息中标记为 22 的行处出现错误。

关于如何避免该问题的任何想法?

在此先感谢您的帮助: :)

Python 版本 = 3.70 scikit-learn 版本 = 0.21.2

这就是我正在做的:

from sklearn import linear_model

这是我得到的错误:

ImportError                               Traceback (most recent call last)
<ipython-input-46-1c4d4ebecc3f> in <module>()
      1 # Select a linear
----> 2 from sklearn import linear_model

C:\Users\Usuario\Anaconda3\lib\site-packages\sklearn\linear_model\__init__.py in <module>()
     13 
     14 from .bayes import BayesianRidge, ARDRegression
---> 15 from .least_angle import (Lars, LassoLars, lars_path, lars_path_gram, LarsCV,
     16                           LassoLarsCV, LassoLarsIC)
     17 from .coordinate_descent import (Lasso, ElasticNet, LassoCV, ElasticNetCV,

C:\Users\Usuario\Anaconda3\lib\site-packages\sklearn\linear_model\least_angle.py in <module>()
     18 
     19 from .base import LinearModel
---> 20 from ..base import RegressorMixin, MultiOutputMixin
     21 from ..utils import arrayfuncs, as_float_array, check_X_y
     22 from ..model_selection import check_cv

ImportError: cannot import name 'MultiOutputMixin' from 'sklearn.base' (C:\Users\Usuario\Anaconda3\lib\site-packages\sklearn\base.py)

我遇到了类似的问题。 我可以通过打开一个新的 IPython 控制台来解决。

我不认为在不完全理解的情况下修改库相关文件是一个好主意。 我在更新 scikit learn 包时遇到了这个问题。 在我启动了一个新的 shell 之后它就起作用了。

!pip install scikit-learn==0.18.2是错误的建议。

您需要 scikit-learn 0.22 或更高版本。

关闭现有笔记本并从主页重新打开后,此问题已解决。 我知道它可能需要重新启动。

再次卸载并安装 imblearn:pip install imblearn

使用更新的 sklearn 软件包,这对我有用。

从安装 anacoda 提示:

安装收集的软件包:imblearn、scikit-learn 尝试卸载:scikit-learn 找到现有安装:scikit-learn 0.20.3 卸载 scikit-learn-0.20.3:成功卸载 scikit-learn-0.20.3 成功安装 imblearn-0.0 scikit-学习-0.23.1

问题原因


当您尝试安装新版本的 scikit-learn 时会出现此问题,我在安装旧 scikit-learn 版本(0.22.2) 时尝试安装 sklearn (1.0) 时遇到了同样的问题。

我遇到了这个问题,因为我不得不在 Colab 上更新 sciki-learn 的版本并重新训练我的模型以避免生产环境出现一些警告。 问题如下图所示:

 UserWarning: Trying to unpickle estimator TfidfVectorizer from version 0.22.2.post1 when using version 1.0. This might lead to breaking code or invalid results. Use at your own risk. For more info please refer to:

所以,当我这样做时:

!pip install scikit-learn==1.0

导入以下库时出现以下错误:

from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.model_selection import train_test_split 
from sklearn.linear_model import LogisticRegression
from sklearn import metrics

这是错误:

ImportError: cannot import name '_OneToOneFeatureMixin' from 'sklearn.base' (/usr/local/lib/python3.7/dist-packages/sklearn/base.py)

如何修复它


这个问题可以通过简单地尝试重新启动运行时环境来解决,或者打开一个新的笔记本(运行时环境默认重启,如AnandOCF 所述

这对我有用。

  1. 激活你的 conda 环境

    conda activate 'your_env_name'

  2. 如果还没有,请使用 pip 安装 imblearn 库

    pip install imblearn

  3. 再次使用 conda 安装不平衡学习库

    conda install -c conda-forge imbalanced-learn

然后,您应该能够导入而不会出现任何错误。

您可以在笔记本上运行以下命令来解决此问题:

!pip install scikit-learn==0.18.2 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM