mac OS 中 anaconda 环境中 juypter 笔记本中的 pycaret 库的导入问题

import issue with pycaret library in juypter notebook in anaconda environment in mac OS

提问人:Suresh Gautam 提问时间:11/18/2023 更新时间:11/18/2023 访问量:13

问:

在 Mac OS 10.13.6 python 3.8 环境中的 Anaconda Navigator 2.5.1 中,在本地安装的 jupyter notebook 中导入 pycaret 库时,遇到了以下部分中显示的问题。导入时收到错误堆栈,其他类也会遇到相同的错误(即 和 ) 尽管 pycaret 的安装是成功的。from pycaret.classification import *from pycaret.classification import *from pycaret.regression import validate_params

怀疑 pycaret 库问题,尝试 ,但没有锁定解决问题。此外,尝试降级到 pycaret 2.3.3,就像在 pycaret 版本 2.3.3 中一样,prefer_skip_nested_validation 参数是可选的。不幸的是,由于许多依赖失败,降级无法成功,这可能是因为 27 个月前发布的版本,并且在依赖包中进行了许多更新。任何解决进口问题的建议将不胜感激。!pip install pycaret --upgrade!pip uninstall pycaret!pip install pycaret

> --------------------------------------------------------------------------- TypeError                                 Traceback (most recent call
> last) Cell In[47], line 1
> ----> 1 from pycaret.classification import *
> 
> File
> //anaconda3/lib/python3.8/site-packages/pycaret/classification/__init__.py:1
> ----> 1 from pycaret.classification.functional import (
>       2     add_metric,
>       3     automl,
>       4     blend_models,
>       5     calibrate_model,
>       6     check_drift,
>       7     check_fairness,
>       8     compare_models,
>       9     convert_model,
>      10     create_api,
>      11     create_app,
>      12     create_docker,
>      13     create_model,
>      14     dashboard,
>      15     deploy_model,
>      16     ensemble_model,
>      17     evaluate_model,
>      18     finalize_model,
>      19     get_allowed_engines,
>      20     get_config,
>      21     get_current_experiment,
>      22     get_engine,
>      23     get_leaderboard,
>      24     get_logs,
>      25     get_metrics,
>      26     interpret_model,
>      27     load_experiment,
>      28     load_model,
>      29     models,
>      30     optimize_threshold,
>      31     plot_model,
>      32     predict_model,
>      33     pull,
>      34     remove_metric,
>      35     save_experiment,
>      36     save_model,
>      37     set_config,
>      38     set_current_experiment,
>      39     setup,
>      40     stack_models,
>      41     tune_model,
>      42 )
>      43 from pycaret.classification.oop import ClassificationExperiment
>      45 __all__ = [
>      46     "ClassificationExperiment",
>      47     "setup",    (...)
>      86     "check_drift",
>      87 ]
> 
> File
> //anaconda3/lib/python3.8/site-packages/pycaret/classification/functional.py:8
>       5 import pandas as pd
>       6 from joblib.memory import Memory
> ----> 8 from pycaret.classification.oop import ClassificationExperiment
>       9 from pycaret.internal.parallel.parallel_backend import ParallelBackend
>      10 from pycaret.loggers.base_logger import BaseLogger
> 
> File
> //anaconda3/lib/python3.8/site-packages/pycaret/classification/oop.py:16
>      13 from joblib.memory import Memory
>      14 from scipy.optimize import shgo
> ---> 16 from pycaret.containers.metrics.classification import get_all_metric_containers
>      17 from pycaret.containers.models.classification import (
>      18     ALL_ALLOWED_ENGINES,
>      19     get_all_model_containers,
>      20     get_container_default_engines,
>      21 )
>      22 from pycaret.internal.display import CommonDisplay
> 
> File
> //anaconda3/lib/python3.8/site-packages/pycaret/containers/metrics/classification.py:13
>       1 # Module: containers.metrics.classification
>       2 # Author: Antoni Baum (Yard1) <[email protected]>
>       3 # License: MIT    (...)
>       8 # `ClassificationMetricContainer` as a base, set all of the required parameters in the `__init__` and then call `super().__init__`
>       9 # to complete the process. Refer to the existing classes for examples.
>      11 from typing import Any, Dict, Optional, Union
> ---> 13 from sklearn import metrics
>      14 from sklearn.metrics._scorer import _BaseScorer
>      16 import pycaret.containers.base_container
> 
> File
> //anaconda3/lib/python3.8/site-packages/sklearn/metrics/__init__.py:20
>      17 from ._ranking import roc_curve
>      18 from ._ranking import top_k_accuracy_score
> ---> 20 from ._classification import accuracy_score
>      21 from ._classification import balanced_accuracy_score
>      22 from ._classification import class_likelihood_ratios
> 
> File
> //anaconda3/lib/python3.8/site-packages/sklearn/metrics/_classification.py:146
>     142     else:
>     143         return sample_score.sum()
> --> 146 @validate_params(
>     147     {
>     148         "y_true": ["array-like", "sparse matrix"],
>     149         "y_pred": ["array-like", "sparse matrix"],
>     150         "normalize": ["boolean"],
>     151         "sample_weight": ["array-like", None],
>     152     }
>     153 )
>     154 def accuracy_score(y_true, y_pred, *, normalize=True, sample_weight=None):
>     155     """Accuracy classification score.
>     156 
>     157     In multilabel classification, this function computes subset accuracy:    (...)
>     217     0.5
>     218     """
>     220     # Compute accuracy for each possible representation
> 
> TypeError: validate_params() missing 1 required keyword-only argument:
> 'prefer_skip_nested_validation'
python-3.x anaconda3 automl pycaret

评论

1赞 Wayne 11/28/2023
注意:最佳做法是在 Jupyter Notebook 文件中运行安装命令时,使用安装命令的神奇变体。is 的神奇变化,它确保在运行内核的环境中进行安装。仅凭感叹号并不能确保这一点,并且可能导致问题,这就是在 2019 年添加魔法版本的原因。在此处查看有关魔术安装命令的更多信息。...pip install%pip install
0赞 Wayne 11/28/2023
<续> 这里的第二段让您了解感叹号的使用如何成为一个问题。pip

答:

1赞 Gautam 11/28/2023 #1

我遇到了同样的问题并参考了一个帖子,我正在 Conda 环境中的 Jupyter Notebook 中尝试这个。 它成功安装了软件包,但是当我导入软件包时,它出现错误:!pip install --pre pycaretenter image description here

ModuleNotFoundError: No module named 'pycaret'

它成功安装并在 Google colab 中正常运行的相同软件包如下。

enter image description here

它清楚地表明我们正在安装和尝试在Pycarate中运行的环境存在一些问题。我找不到任何方法来解决这个问题。

但是我发现了一些解决方法,如下所示。 请执行命令,希望它会有所帮助。

  1. conda info --envs.它将列出 python 中可用的环境。
  2. conda activate <Select_one_Env> Select_one_Env 是将要选择的潜在示例环境名称。您可以为您的用例选择最佳环境。

我相信你已经在做以上两个步骤了。 以下步骤将绕过 Jupyter Notebook 并尝试使用 ipython

ipython 类似于 Jupyter Notebook,但位于 shell 或控制台终端中。

选择目标环境后,使用以下命令。

  • ipython运行此 shell 命令以启动 iPython shell。
  • ipython shell 启动后,您可以运行相同的 pip install 命令,例如它将安装 pycrate 包。 成功安装包后,运行以下命令。!pip install --pre pycaret

enter image description here

  • from pycaret.classification import *您可以导入
  • enter image description here

现在您将能够在 ipython shell 中运行 pycrate 包。

希望,这将有助于解决问题。

评论

1赞 Wayne 11/28/2023
在讨论在现代 Jupyter 中运行安装时,请鼓励使用当前的最佳实践。(虽然令人沮丧,但不是 Google Colab 目前使用的过时的 fork。这意味着使用 magic 命令 install 命令,这些命令是在 2019 年添加的,以确保以这种方式完成的安装发生在运行内核的环境中。请参阅我在 OP 下方的评论,了解其他上下文和链接。也保留 IPython,请参阅此处,尤其是请参阅列出的第一个链接。%pip install%conda install
0赞 Gautam 11/29/2023
@Wayne您的评论说明了此问题的根本原因。感谢您添加这些评论。