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

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

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

我尝试遵循类似问题的解决方案(link)。该建议基本上是删除请求“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)
python scikit-learn
9个回答
17
投票

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


5
投票

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


1
投票

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

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


1
投票

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


0
投票

卸载并再次安装 imblearn : pip 安装 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-learn-0.23.1


0
投票

问题原因


当您尝试安装 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所述)


0
投票

这对我有用。

  1. 激活你的 conda 环境

    conda activate 'your_env_name'

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

    pip install imblearn

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

    conda install -c conda-forge imbalanced-learn

然后,您应该能够顺利导入。


0
投票

从 sklearn.multioutput 导入 MultiOutputClassifier


-2
投票

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

!pip install scikit-learn==0.18.2 
© www.soinside.com 2019 - 2024. All rights reserved.