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

7gyucuyw  于 2022-12-01  发布在  Python
关注(0)|答案(8)|浏览(659)

我只是想用scikit-learn做一个线性回归。当我试图导入线性模型包时,标题中的错误信息出现了。
我试图从一个类似的问题(link)中找到解决方案。建议基本上是去掉代码中请求“MultipleOutputMixin”的部分。
当我这样做时,当然MultiOutputMixin不再是问题所在,但它在下面所示的错误消息中标记为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)
z9smfwbn

z9smfwbn1#

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

jei2mxaa

jei2mxaa2#

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

eulz3vhy

eulz3vhy3#

!pip install scikit-learn==0.18.2是错误的建议。
你需要scikit-learn 0.22或更高版本。

332nm8kg

332nm8kg4#

这是解决后,关闭现有的笔记本电脑,并重新打开它从主页。它可能需要重新启动是我所知道的。

lzfw57am

lzfw57am5#

卸载并重新安装imblearn:pip安装imblearn
有了更新的sklearn软件包,这对我很有效。
从安装Anacoda提示符:
正在安装收集的套件:imblearn,scikit-learn正在尝试卸载:scikit-learn找到现有安装:0.20.3卸载程序:已成功卸载scikit-learn-0.20.3已成功安装imblearn-0.0 scikit-learn-0.23.1

9cbw7uwe

9cbw7uwe6#

问题原因

当你试图安装新版本的scikit-learn时会出现这个问题,我在安装旧版本(0.22.2)的scikit-learn时试图安装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所述,默认情况下运行时环境重新启动)

jum4pzuy

jum4pzuy7#

这对我很有效。
1.激活您的conda环境
conda activate 'your_env_name'
1.使用pip安装imblearn库(如果尚未安装)
pip install imblearn
1.再次使用conda安装不平衡学习库
conda install -c conda-forge imbalanced-learn
然后,您应该能够导入而不会出现任何错误。

zbwhf8kr

zbwhf8kr8#

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

!pip install scikit-learn==0.18.2

相关问题