PyCaret が可視化を強化！！ 〜Ver.2.3.6以降〜　[Google Colabで実行]

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1275001/98ee22e3-c62c-ec61-6d33-b0e3004fb80e.png)

# 更新
- ×：exp_name = setup(data = Boston,  target = 'medv')　←誤りがありました。
　○：exp_name = setup(data = data,  target = 'medv')　
- AutoViz は、動作が不安定（起動初回は描画、2回目は描画しない時がある等）な場合は、セッション再起動するといけます。


# はじめに
PythonのAutoML（自動機械学習）といえば [**PyCaret**](https://pycaret.gitbook.io/docs/)。

[**PyCaret**](https://pycaret.gitbook.io/docs/)は、機械学習の一連の処理、可視化がほぼ自動で実行できるPythonのライブラリ。

この[**PyCaret**](https://pycaret.gitbook.io/docs/)が、
- AutoEDAの「[**AutoViz**](https://pypi.org/project/autoviz/)」
- 機械学習モデルの各種可視化が可能な「[**ExplainerDashboard**](https://explainerdashboard.readthedocs.io/en/latest/)」

を統合したようです。

統合で実現された内容は、[**PyCaret**](https://pycaret.gitbook.io/docs/) のyoutubeチャンネルにアップされた動画をみるとよくわかります。

https://youtu.be/Qr6Hu2t2gwY

ということで、早速やってみることにしました。
 

## 実行条件など
>- **Google colab**で実行
>- **ボストン住宅価格のデータセット**で実行
※ 以前に[**AutoViz**](https://pypi.org/project/autoviz/)を適用した以下の記事でも「ボストン住宅価格のデータセット」を使っていますので比較できると思います。

https://qiita.com/hima2b4/items/da29530c1f58c7211d44
 

# 強化された**PyCaret**の可視化を試してみよう
 
まずはAutoEDAの「[**AutoViz**](https://pypi.org/project/autoviz/)」から実行します。


## AutoViz

「[**AutoViz**](https://pypi.org/project/autoviz/)」は、わずかなコード記述でAutoEDA（自動データ探索）できるライブラリです。
[**動画**](https://youtu.be/Pm5VOuYqU4Q)を見るまでは、「ふーん、統合したんだ」というだけでスルーしようと思っていたのですが、[**公式動画**](https://youtu.be/Pm5VOuYqU4Q)を見ると[**AutoViz**](https://pypi.org/project/autoviz/)が私が以前使った時よりも単独でインタラクティブなものになっています。（※AutoVizのVer.up）

https://youtu.be/Pm5VOuYqU4Q

https://github.com/AutoViML/AutoViz/blob/master/README.md

## ライブラリインストール&インポート
```Python:
!pip install pycaret
```
```Python:
pip install autoviz
```
私の環境では、PyCaretインストール後にランタイムの再起動が求められました。

```Python:
#実行
from pycaret.datasets import get_data
data = get_data('boston')
from pycaret.regression import *
exp_name = setup(data = data,  target = 'medv')
eda(display_format = 'bokeh')
```
このコードは、ほぼ[**PyCaret**](https://pycaret.gitbook.io/docs/) ページのExample の通りです。
実行すると、読み込んだデータのデータ型を表示してくれます。
データ型を変更する必要がなければ⏎をクリックします。

https://pycaret.readthedocs.io/en/latest/api/regression.html
 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1275001/f36d3298-1067-4548-624d-27cad44e415d.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1275001/b041a431-7b3b-193c-8c0c-5cdd6c919de4.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1275001/38168936-d456-510f-0881-15da8b071b67.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1275001/e6679d35-8f98-7f05-826c-99bc8bf06316.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1275001/ff0a3716-0a8a-d911-0dc3-f83d491bc519.png)
とてもインタラクティブです。これはなかなかいいですね。
 
また、以下のように display_format = 'html' とすると、各グラフがhtml形式で出力されます。
```Python:
eda(display_format = 'html')
```
↓ このように出力されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1275001/670e52a9-776a-e138-d5d4-6dfbc213ec1c.png)


次に「[**ExplainerDashboard**](https://explainerdashboard.readthedocs.io/en/latest/)」を実行してみます。

## ExplainerDashboard
[**ExplainerDashboard**](https://explainerdashboard.readthedocs.io/en/latest/) は、xgboost, catboost, lightgbm などの機械学習モデルを分析するための対話型ダッシュボードを高速に構築するライブラリです。

https://www.youtube.com/watch?v=FZ5-GtdYez0


## ライブラリインストール&インポート
```Python:
!pip install explainerdashboard
```

このダッシュボードは、機械学習モデルを分析するための対話型ダッシュボードなので、まず[**PyCaret**](https://pycaret.gitbook.io/docs/)でモデルを比較し、比較結果がもっともよかったモデルを構築したいと思います。

```Python:
#モデル比較
best = compare_models()
```

```Python:
#モデル構築
model = create_model(best) 
#Dashboard生成
dashboard(model, display_format='inline')
```
たったこれだけのコードで、[**ExplainerDashboard**](https://explainerdashboard.readthedocs.io/en/latest/)が起動しました。
以下は、Feature Importancesの表示のキャプチャです。
[Importances Type:][Depth:]のドロップダウンを切替えると表示が変わります。
Importances Typeは、**Permutation Importances が選択できます。これはいい！**
また、右上の[Download]ボタンを押すと、タブ単位でhtml形式で保存することができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1275001/bcf9e319-55aa-92aa-b5ab-a3eb492eba5b.png)

さらに、Decision Treeは **[dtreeviz](https://pypi.org/project/dtreeviz/) で描かれます！**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1275001/f2988471-cae7-f03e-e35e-f494b152a5eb.png)


以下のように display_format ='external' とすると 実行後にセルに示されるURLをクリックするとDashboardはURL表示されます。
```Python:
dashboard(tuned_model, display_format='external')
```


# 最後に
[**PyCaret**](https://pycaret.gitbook.io/docs/)は、まだまだ進歩し続けているんだなということを実感しました。私は[**PyCaret**](https://pycaret.gitbook.io/docs/)がブレンド、スタッキング、時系列データに対応していることも数日前まで知りませんでした。今回 記事に取り上げた可視化の強化を知ったのも偶然・・・たまにはアップデートをチェックしたいと思います。


## 参考サイト

https://towardsdatascience.com/pycaret-2-3-6-is-here-learn-whats-new-1479c8bab8ad

https://explainerdashboard.readthedocs.io/en/latest/#

https://qiita.com/hima2b4/items/6c3e57fa078d6db5dc4f