无法从“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”的主要内容,如果未能解决你的问题,请参考以下文章

无法从资源加载位图

为啥我无法从 Alamofire 获取请求结果

DateTimeParseException:无法解析文本:无法从 TemporalAccessor 获取 LocalDateTime

无法从 'char[]' 转换为 'string[]' [关闭]

无法远程调试应用程序 - 端口无法从外部访问

无法从状态 '' 解析 '...'