LoginSignup
5
9

More than 3 years have passed since last update.

AutoMLライブラリーPyCaretの環境構築の覚書

Last updated at Posted at 2020-06-25

pandas-profilingでエラーが出ないようにインストールする

  • 【追記①2020/8/11】 8/1にアナウンスがあり、PyCaret2.0が正式リリースされました。このバージョンをインストール(Ubuntu 18.04/20.04, macOS 10.14.6)したところ、このエラーは出ていません。アナウンスの記事を参考にインストールし動作を確認後、念の為、本記事のようにバックアップとしてrequirements.txtを作成しておくのも良いかと思います。
  • 【追記②2020/8/11】 PyCaret2の新機能AutoMLのサンプルコードではエラーが出る箇所がありますが、以下のように修正すると解消します。
bash
# サンプルコード
# blend top 5 base models 
blender = blend_models(estimator_list = top5) 

# catboostがtop5に含まれるがblend_models関数に対応していないために (Type Error)が出る
# 前段のcompare all baseline models and select top 5の
top5 = compare_models(n_select = 5) 
# を以下に変更する。
top5 = compare_models(n_select = 5, blacklist = ['catboost']) 
catboost = create_model('catboost')

コンピュータ環境

OS:Ubuntu 18.04LTS

Anaconda3仮想環境の作成

bash
$ conda create -n pycaret python=3.6.10

conda仮想環境下でpyCaretのインストール

1.マニュアルに従ってpipでインストール

bash
$ conda activate pycaret
(pycaret)$ pip install pycaret
(pycaret)$ python -m ipykernel install --user --name pycaret --display-name "display-name-here"

ところが最近あらたにインストールしたら、jupyter notebookで以下のコマンドを実行るとエラーを吐くようになった。

python
from pycaret.datasets import get_data
dataset = get_data('credit', profile=True)

これは PyCaretのdata respository からget_dataでダウンロードするためのコマンドで、もともとのチュートリアルでは、引数profile=Trueを与えていない。つまりデフォルトの引数profile=Falseで実行している。この場合はデータの最初の5行が表示されるだけである

 一方、引数profile=Trueを与えると、pandas profiling reportの形式で出力してくれる。DataFrame の基本統計量や相関係数などを一度にまとめて確認できるのだが、import pandas_profilingとわざわざする必要がない。

 ところが、pip install pycaretを使ってインストールした時期が異なると、いくつかのパッケージのサブバージョンが違っているからなのか、 profile=Trueでエラーが出るようになったので、requirements.txtを使ってインストールしている。

2.requirements.txtファイルを別途、仮想環境を起動したディレクトリに置いておき、pipでインストール

bash
$ conda activate pycaret
(pycaret)$ pip install -r requirements.txt
(pycaret)$ python -m ipykernel install --user --name pycaret --display-name "display-name-here"

requirements.txtには以下を記述しておく。

astropy==4.0.1.post1
attrs==19.3.0
awscli==1.18.64
backcall==0.1.0
bleach==3.1.5
blis==0.4.1
boto==2.49.0
boto3==1.13.14
botocore==1.16.14
catalogue==1.0.0
catboost==0.20.2
certifi==2020.4.5.1
chardet==3.0.4
chart-studio==1.1.0
click==7.1.2
colorama==0.4.3
colorlover==0.3.0
combo==0.1.0
confuse==1.1.0
cufflinks==0.17.0
cycler==0.10.0
cymem==2.0.3
datefinder==0.7.0
DateTime==4.3
decorator==4.4.2
defusedxml==0.6.0
docutils==0.15.2
entrypoints==0.3
funcy==1.14
future==0.18.2
gensim==3.8.3
graphviz==0.14
htmlmin==0.1.12
idna==2.9
importlib-metadata==1.6.0
ipykernel==5.3.0
ipython==7.14.0
ipython-genutils==0.2.0
ipywidgets==7.5.1
jedi==0.17.0
Jinja2==2.11.2
jmespath==0.10.0
joblib==0.15.1
jsonschema==3.2.0
jupyter-client==6.1.3
jupyter-core==4.6.3
kiwisolver==1.2.0
kmodes==0.10.1
lightgbm==2.3.1
llvmlite==0.32.1
MarkupSafe==1.1.1
matplotlib==3.2.1
missingno==0.4.2
mistune==0.8.4
mlxtend==0.17.2
more-itertools==8.3.0
murmurhash==1.0.2
nbconvert==5.6.1
nbformat==5.0.6
nltk==3.5
notebook==6.0.3
numba==0.49.1
numexpr==2.7.1
numpy==1.18.4
packaging==20.4
pandas==1.0.3
pandas-profiling==2.3.0
pandocfilters==1.4.2
parso==0.7.0
pexpect==4.8.0
phik==0.9.12
pickleshare==0.7.5
Pillow==7.1.2
plac==1.1.3
plotly==4.4.1
pluggy==0.13.1
preshed==3.0.2
prometheus-client==0.7.1
prompt-toolkit==3.0.5
ptyprocess==0.6.0
py==1.8.1
pyasn1==0.4.8
pycaret==1.0.0
Pygments==2.6.1
pyLDAvis==2.1.2
pyod==0.7.9
pyparsing==2.4.7
pyrsistent==0.16.0
pytest==5.4.2
python-dateutil==2.8.1
pytz==2020.1
PyYAML==5.3.1
pyzmq==19.0.1
regex==2020.5.14
requests==2.23.0
retrying==1.3.3
rsa==3.4.2
s3transfer==0.3.3
scikit-learn==0.22
scipy==1.4.1
seaborn==0.10.1
Send2Trash==1.5.0
shap==0.32.1
six==1.14.0
smart-open==2.0.0
spacy==2.2.4
srsly==1.0.2
suod==0.0.4
tbb==2020.0.133
terminado==0.8.3
testpath==0.4.4
textblob==0.15.3
thinc==7.4.0
tornado==6.0.4
tqdm==4.46.0
traitlets==4.3.3
umap-learn==0.4.3
urllib3==1.25.9
wasabi==0.6.0
wcwidth==0.1.9
webencodings==0.5.1
widgetsnbextension==3.5.1
wordcloud==1.7.0
xgboost==0.90
yellowbrick==1.0.1
zipp==3.1.0
zope.interface==5.1.0

3.pandas でデータを読み込んでpandas profiling reportを出力する場合には、以下。

python
import pandas as pd
import numpy as np

df = pd.read_csv('/path/to/data.csv',sep=",", encoding="utf-8")

import pandas_profiling

pandas_profiling.ProfileReport(df)
5
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
9