Closed15

「PyCaretで学ぶ機械学習入門」をやる

beckybecky

Setup

インストール

pip install pycaret[full]

beckybecky

ライブラリの競合でエラー発生。

ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
conda-repo-cli 1.0.75 requires requests_mock, which is not installed.
aiobotocore 2.7.0 requires botocore<1.31.65,>=1.31.16, but you have botocore 1.34.84 which is incompatible.
anaconda-cloud-auth 0.1.4 requires pydantic<2.0, but you have pydantic 2.7.0 which is incompatible.
conda-repo-cli 1.0.75 requires clyent==1.2.1, but you have clyent 1.2.2 which is incompatible.
conda-repo-cli 1.0.75 requires PyYAML==6.0.1, but you have pyyaml 5.3.1 which is incompatible.
beckybecky

ChatGPTに確認したところ、Anacondaの別環境を作ると良いらしい。

以下、引用


はい、Anacondaをインストールすると、デフォルトで「base」(または「root」とも呼ばれる)環境が作成されています。この環境にはAnacondaがプリインストールしている多くのライブラリが含まれており、Anacondaを起動すると自動的にこの「base」環境がアクティブになります。

「base」環境の使用

  • デフォルト環境: Anacondaをインストールした後、特に何も設定せずにPythonや他のコマンドを実行すると、これらは全て「base」環境内で実行されます。
  • 環境のアクティベート: Anaconda Navigatorを使用するか、コマンドラインで conda activate を実行することによって、「base」環境を明示的にアクティブにすることができます。

新しい環境の作成

特定のプロジェクト用に新しい環境を作成したい場合は、次のコマンドを使用します。これにより、base 環境とは独立した、新しい仮想環境が作成されます。

conda create -n myenv python=3.8  # ここで 'myenv' は新しい環境の名前、Pythonのバージョンは必要に応じて指定

このコマンドを実行後、新しい環境をアクティブにするためには以下を実行します:

conda activate myenv

既存環境の確認

インストールされている環境のリストを確認するには、以下のコマンドを実行します:

conda env list

これで、すべてのインストール済み環境が表示され、「base」がデフォルト環境として設定されていることがわかります。

注意点

  • デフォルトの「base」環境で作業することも可能ですが、新しいライブラリや特定のプロジェクトに特化した設定を行う場合は、新しい環境を作成することをお勧めします。これにより、異なるプロジェクト間での依存関係の競合を避けることができます。
  • 環境ごとにPythonのバージョンやライブラリのバージョンを管理することで、より柔軟かつ安全にプロジェクトを進行することができます。
beckybecky

試したコマンド

環境作成

conda create -n PyCaretEnv

環境切り替え

conda activate PyCaretEnv

Conda環境にPyCaretをインストール

conda install -c conda-forge pycaret[full]
beckybecky

実行時エラー

以下コマンドでエラー

from pycaret.classification import *

エラー内容

---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
Cell In[1], line 1
----> 1 from pycaret.classification import *
      2 from pycaret.datasets import get_data

File ~\AppData\Roaming\Python\Python311\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 ~\AppData\Roaming\Python\Python311\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 ~\AppData\Roaming\Python\Python311\site-packages\pycaret\classification\oop.py:31
     29 from pycaret.internal.pipeline import Pipeline as InternalPipeline
     30 from pycaret.internal.preprocess.preprocessor import Preprocessor
---> 31 from pycaret.internal.pycaret_experiment.non_ts_supervised_experiment import (
     32     _NonTSSupervisedExperiment,
     33 )
     34 from pycaret.internal.validation import is_sklearn_cv_generator
     35 from pycaret.loggers.base_logger import BaseLogger

File ~\AppData\Roaming\Python\Python311\site-packages\pycaret\internal\pycaret_experiment\non_ts_supervised_experiment.py:3
      1 import pandas as pd
----> 3 from pycaret.internal.pycaret_experiment.supervised_experiment import (
      4     _SupervisedExperiment,
      5 )
      8 class _NonTSSupervisedExperiment(_SupervisedExperiment):
      9     def __init__(self) -> None:

File ~\AppData\Roaming\Python\Python311\site-packages\pycaret\internal\pycaret_experiment\supervised_experiment.py:57
     50 from pycaret.internal.patches.sklearn import fit_and_score as fs
     51 from pycaret.internal.pipeline import (
     52     Pipeline,
     53     estimator_pipeline,
     54     get_pipeline_estimator_label,
     55     get_pipeline_fit_kwargs,
     56 )
---> 57 from pycaret.internal.pycaret_experiment.tabular_experiment import _TabularExperiment
     58 from pycaret.internal.tunable import TunableMixin
     59 from pycaret.internal.validation import is_fitted, is_sklearn_cv_generator

File ~\AppData\Roaming\Python\Python311\site-packages\pycaret\internal\pycaret_experiment\tabular_experiment.py:14
     12 import pandas as pd
     13 import plotly.express as px  # type: ignore
---> 14 import scikitplot as skplt  # type: ignore
     15 from IPython.display import display as ipython_display
     16 from joblib.memory import Memory

File ~\AppData\Roaming\Python\Python311\site-packages\scikitplot\__init__.py:2
      1 from __future__ import absolute_import, division, print_function, unicode_literals
----> 2 from . import metrics, cluster, decomposition, estimators
      3 __version__ = '0.3.7'
      6 from scikitplot.classifiers import classifier_factory

File ~\AppData\Roaming\Python\Python311\site-packages\scikitplot\metrics.py:27
     24 from sklearn.calibration import calibration_curve
     25 from sklearn.utils import deprecated
---> 27 from scipy import interp
     29 from scikitplot.helpers import binary_ks_curve, validate_labels
     30 from scikitplot.helpers import cumulative_gain_curve

ImportError: cannot import name 'interp' from 'scipy' (C:\***\.conda\envs\PyCaretEnv\Lib\site-packages\scipy\__init__.py)
beckybecky

解消

現在のScipyバージョン確認

import scipy
print(scipy.__version__)

出力

1.13.0
beckybecky

再挑戦

import でエラー出てうまくいかないので以下手順で再度試す。

https://mindtech.jp/?p=2217

beckybecky

以下手続きでうまく行った。

conda create -n PyCaretEnv python=3.10.11
conda activate PyCaretEnv
conda install -c conda-forge jupyter
conda install -c conda-forge pycaret
pip install -r https://raw.githubusercontent.com/pycaret/pycaret/master/requirements.txt
pip install joblib==1.3.2
beckybecky

結果、

scipy のバージョンと
joblib のバージョンに問題があったっぽい。

beckybecky

一通り動かして確認できたので、クローズします。

このスクラップは2024/04/18にクローズされました