简体   繁体   中英

ImportError: cannot import name 'MultiOutputMixin' from 'sklearn.base'

I just want to do a linear regression with scikit-learn. When I try to import the linear model package the error message from the title appears.

I tried to follow the solution from a similar problem ( link ). The suggestion is basically to just get rid of the part of the code where it requests for the "MultipleOutputMixin" thingy.

When I do this, of course the MultiOuputMixin is no longer the problem, but it derives in an error at the line marked as 22 in the error message shown below.

Any ideas on what can I do to avoid the problem?

Thanks in advance for your help: :)

Python version = 3.70 scikit-learn verion = 0.21.2

This is what I'm doing:

from sklearn import linear_model

This is the error that I get:

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)

I have encountered a similar problem. I could solve by opening a new IPython console.

I don't think so it's a good idea to modify library related files without understanding it fully. I got this issue when I had updated scikit learn package. It worked after I launched a new shell.

!pip install scikit-learn==0.18.2 is the wrong advice.

You'll need scikit-learn version 0.22 or higher.

This was solved after shutting down the existing notebook and reopening it from home page. It may need a restart is what I got to know.

uninstall and install the imblearn again : pip install imblearn

with the updated sklearn packages this worked for me.

From installation anacoda prompt:

Installing collected packages: imblearn, scikit-learn Attempting uninstall: scikit-learn Found existing installation: scikit-learn 0.20.3 Uninstalling scikit-learn-0.20.3: Successfully uninstalled scikit-learn-0.20.3 Successfully installed imblearn-0.0 scikit-learn-0.23.1

Problem reasons


This issue occurs when you tried to install a new version of scikit-learn, I encountered the same issue while trying to install sklearn (1.0) while an old scikit-learn version (0.22.2) was installed.

I encountered this problem, because I had to update the version of sciki-learn on Colab and retrain my model to avoid some warnings with the production environment. The problem was as shown below:

 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:

So, when I did this:

!pip install scikit-learn==1.0

I got the error below while importing the following libraries:

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

This is the rrror:

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

How to fix it


This problem can be fixed by simply trying to restart the runtime environment , or open a new notebook (runtime env restart by default as mentioned by AnandOCF )

This worked for me.

  1. Activate your conda env

    conda activate 'your_env_name'

  2. Install imblearn library using pip if you haven't

    pip install imblearn

  3. Again install imbalanced-learn library using conda

    conda install -c conda-forge imbalanced-learn

Then, you should be able to import without any errors.

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

!pip install scikit-learn==0.18.2 

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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