无法从“sklearn.utils.metaestimators”导入名称“available_if”
Posted
技术标签:
【中文标题】无法从“sklearn.utils.metaestimators”导入名称“available_if”【英文标题】:Cannot import name 'available_if' from 'sklearn.utils.metaestimators' 【发布时间】:2021-12-04 16:21:39 【问题描述】:导入“from imblearn.over_sampling import SMOTE”时,出现导入错误。请检查并帮助。 我尝试升级 sklearn,但升级因“OSError”而取消。 首先通过 pip 安装不平衡学习。
!pip install -U imbalanced-learn
使用 jupyter 笔记本
Windows 10
sklearn 版本 - 0.24.1
numpy 版本 - 1.19.5
--------------------------------------------------------------------------
ImportError Traceback (most recent call last)
在 ----> 1 from imblearn.over_sampling import SMOTE
~\anaconda3\lib\site-packages\imblearn_init_.py 在 35种进口类型 36 ---> 37 来自 .进口联合 38 起。进口合奏 39 来自 .导入异常
~\anaconda3\lib\site-packages\imblearn\combine_init_.py in 3""" 4 ----> 5 从 ._smote_enn 导入 SMOTEENN 6 从 ._smote_tomek 导入 SMOTETomek 7
~\anaconda3\lib\site-packages\imblearn\combine_smote_enn.py 在 8 从 sklearn.utils 导入 check_X_y 9 ---> 10 从 ..base 导入 BaseSampler 11 从 ..over_sampling 导入 SMOTE 12 从 ..over_sampling.base 导入 BaseOverSampler
~\anaconda3\lib\site-packages\imblearn\base.py 在 13 从 sklearn.utils.multiclass 导入 check_classification_targets 14 ---> 15 from .utils import check_sampling_strategy, check_target_type 16 从 .utils._validation 导入 ArraysTransformer 17 from .utils._validation import _deprecate_positional_args
~\anaconda3\lib\site-packages\imblearn\utils_init_.py in 5 from ._docstring 导入替换 6 ----> 7 from ._validation import check_neighbors_object 8 来自 ._validation 导入 check_target_type 9 from ._validation import check_sampling_strategy
~\anaconda3\lib\site-packages\imblearn\utils_validation.py 在 14 从 sklearn.base 导入克隆 15 从 sklearn.neighbors._base 导入 KNeighborsMixin ---> 16 从 sklearn.neighbors 导入 NearestNeighbors 17 从 sklearn.utils 导入 column_or_1d 18 从 sklearn.utils.multiclass 导入 type_of_target
~\anaconda3\lib\site-packages\sklearn\neighbors_init_.py in 14 从 ._nearest_centroid 导入 NearestCentroid 15 从 ._kde 导入内核密度 ---> 16 从 ._lof 导入 LocalOutlierFactor 17 从 ._nca 导入 NeighborhoodComponentsAnalysis 18 从 ._base 导入 VALID_METRICS, VALID_METRICS_SPARSE
~\anaconda3\lib\site-packages\sklearn\neighbors_lof.py 在 10 从 ..base 导入 OutlierMixin 11 ---> 12 来自 ..utils.metaestimators 导入 available_if 13 从 ..utils.validation 导入 check_is_fitted 14 from ..utils import check_array
ImportError: (C:\Users\dks_m\anaconda3\lib\site-packages\sklearn\utils\metaestimators.py)
【问题讨论】:
【参考方案1】:尝试使用 anaconda 提示符进行安装。 它对我有用。
【讨论】:
您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。【参考方案2】:我认为问题在于 scikit-learn 的 python 版本控制。我能够通过重新安装 Python3 版本来解决:
pip uninstall scikit-learn -y
pip3 install scikit-learn
包更新后记得重启终端/笔记本。
这给了我scikit-learn v1.0.2
,它解决了 Python3 中的错误
【讨论】:
以上是关于无法从“sklearn.utils.metaestimators”导入名称“available_if”的主要内容,如果未能解决你的问题,请参考以下文章
DateTimeParseException:无法解析文本:无法从 TemporalAccessor 获取 LocalDateTime