[英]ImportError: cannot import name 'available_if' from 'sklearn.utils.metaestimators'
I am using the below code:我正在使用以下代码:
import sklearn
from imblearn.pipeline import make_pipeline
but it is showing the below error for me:但它为我显示以下错误:
ImportError: cannot import name 'available_if' from 'sklearn.utils.metaestimators' (/databricks/python/lib/python3.8/site-packages/sklearn/utils/metaestimators.py)
Here is the complete error:这是完整的错误:
> ImportError Traceback (most recent call
> last) <command-3963464708539101> in <module>
> 1 import sklearn
> ----> 2 from imblearn.pipeline import make_pipeline
> 3 from imblearn.over_sampling import SMOTE
> 4 from imblearn.under_sampling import NearMiss
> 5
>
> /databricks/python_shell/dbruntime/PythonPackageImportsInstrumentation/__init__.py
> in import_patch(name, globals, locals, fromlist, level)
> 160 # Import the desired module. If you’re seeing this while debugging a failed import,
> 161 # look at preceding stack frames for relevant error information.
> --> 162 original_result = python_builtin_import(name, globals, locals, fromlist, level)
> 163
> 164 is_root_import = thread_local._nest_level == 1
>
> /databricks/python/lib/python3.8/site-packages/imblearn/__init__.py in
> <module>
> 51 else:
> 52 from . import combine
> ---> 53 from . import ensemble
> 54 from . import exceptions
> 55 from . import metrics
>
> /databricks/python_shell/dbruntime/PythonPackageImportsInstrumentation/__init__.py
> in import_patch(name, globals, locals, fromlist, level)
> 160 # Import the desired module. If you’re seeing this while debugging a failed import,
> 161 # look at preceding stack frames for relevant error information.
> --> 162 original_result = python_builtin_import(name, globals, locals, fromlist, level)
> 163
> 164 is_root_import = thread_local._nest_level == 1
>
> /databricks/python/lib/python3.8/site-packages/imblearn/ensemble/__init__.py
> in <module>
> 4 """
> 5
> ----> 6 from ._easy_ensemble import EasyEnsembleClassifier
> 7 from ._bagging import BalancedBaggingClassifier
> 8 from ._forest import BalancedRandomForestClassifier
>
> /databricks/python_shell/dbruntime/PythonPackageImportsInstrumentation/__init__.py
> in import_patch(name, globals, locals, fromlist, level)
> 160 # Import the desired module. If you’re seeing this while debugging a failed import,
> 161 # look at preceding stack frames for relevant error information.
> --> 162 original_result = python_builtin_import(name, globals, locals, fromlist, level)
> 163
> 164 is_root_import = thread_local._nest_level == 1
>
> /databricks/python/lib/python3.8/site-packages/imblearn/ensemble/_easy_ensemble.py
> in <module>
> 19 from ..utils._docstring import _random_state_docstring
> 20 from ..utils._validation import _deprecate_positional_args
> ---> 21 from ..pipeline import Pipeline
> 22
> 23 MAX_INT = np.iinfo(np.int32).max
>
> /databricks/python_shell/dbruntime/PythonPackageImportsInstrumentation/__init__.py
> in import_patch(name, globals, locals, fromlist, level)
> 160 # Import the desired module. If you’re seeing this while debugging a failed import,
> 161 # look at preceding stack frames for relevant error information.
> --> 162 original_result = python_builtin_import(name, globals, locals, fromlist, level)
> 163
> 164 is_root_import = thread_local._nest_level == 1
>
> /databricks/python/lib/python3.8/site-packages/imblearn/pipeline.py in
> <module>
> 16 from sklearn.base import clone
> 17 from sklearn.utils import _print_elapsed_time
> ---> 18 from sklearn.utils.metaestimators import available_if
> 19 from sklearn.utils.validation import check_memory
> 20
>
> ImportError: cannot import name 'available_if' from
> 'sklearn.utils.metaestimators'
> (/databricks/python/lib/python3.8/site-packages/sklearn/utils/metaestimators.py)
output of sklearn. sklearn 的 output。 version : '0.24.1'
版本:'0.24.1'
I have tried with a lot of things but it is not working.我已经尝试了很多东西,但它不起作用。 Please let me know if you have a solution for this.
如果您对此有解决方案,请告诉我。 The can be incompatibility of versions but don't know which version works well.
可能是版本不兼容,但不知道哪个版本运行良好。
Edit: Also, I am getting the below data:编辑:另外,我得到以下数据:
!pip install scikit-learn==1.1.1
print(sklearn.__version__)
sklearn.__path__
Output: Output:
Requirement already satisfied: scikit-learn==1.1.1 in /databricks/python3/lib/python3.8/site-packages (1.1.1)
Requirement already satisfied: scipy>=1.3.2 in /databricks/python3/lib/python3.8/site-packages (from scikit-learn==1.1.1) (1.6.2)
Requirement already satisfied: numpy>=1.17.3 in /databricks/python3/lib/python3.8/site-packages (from scikit-learn==1.1.1) (1.19.2)
Requirement already satisfied: joblib>=1.0.0 in /databricks/python3/lib/python3.8/site-packages (from scikit-learn==1.1.1) (1.0.1)
Requirement already satisfied: threadpoolctl>=2.0.0 in /databricks/python3/lib/python3.8/site-packages (from scikit-learn==1.1.1) (2.1.0)
Out[45]: '0.24.1'
Out[46]: ['/databricks/python/lib/python3.8/site-packages/sklearn']
Here, it is getting version from /python/ and installing in /python3/ It might be the issue.在这里,它从 /python/ 获取版本并安装在 /python3/ 这可能是问题所在。 Don't know the solution.
不知道解决办法。
Did you try using a virtual environment.您是否尝试过使用虚拟环境。 To create a venv(virtual environment):
python -m venv venv_name
To activate the venv: source venv_name/bin/activate
创建 venv(虚拟环境):
python -m venv venv_name
激活 venv: source venv_name/bin/activate
I had to specific versions of numpy, pandas, dask-ml and scikit-learn to resolve this.我必须使用 numpy、pandas、dask-ml 和 scikit-learn 的特定版本来解决这个问题。
numpy 1.22.4 pandas 1.2.4 dask-ml 2022.5.27 scikit-learn 1.1.1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.