【まるでDataRobot】PyCaretで簡単にAIモデル構築ができる!

2020年5月9日土曜日

AI Python

t f B! P L

突然ですがDataRobotを知ってますか?
DataRobotはデータをつっこむだけでデータ前処理や可視化、そして様々な機械学習モデルの構築・評価・デプロイを行えるサービスです。
データ分析コンペプラットフォームのkaggleのトップランカーが集まったDataRobot社が開発したすごいサービスで、それはもうお値段もすごそうです。(笑)

そんななかつい先日、PythonのライブラリでPyCaretが公開されました。
このPyCaretはDataRobotに比べPythonの知識は必要になりますが、誰でも無料でDataRobotのような自動モデル構築が可能になる面白いライブラリです。
この記事では、実際にPyCaretの使い方を見ていきます。

PyCaretは、機械学習のデータ前処理や可視化、モデル開発を数行のコードで出来てしまうPythonのライブラリです。

PyCaretは主要な機械学習ライブラリ(scikit-learn, XGBoost, LightGBMなど)をPythonでラッパーしたものになっています。分類や回帰、クラスタリング、異常検知、自然言語処理が扱えます。

基本的に、前処理、モデリング、性能評価、チューニング、可視化まで一通り出来ます。
さらに、スタッキング等も出来ます。すごいですよね!

インストールの方法はこれだけです。
pip install pycaret

今回はサンプルとしてirisデータセットを用いて多クラス分類をしてみます。
# 不要な警告文を表示しない
import warnings
warnings.filterwarnings("ignore") 
# PyCaretを読み込む。
from pycaret.classification import *
# Irisデータセットを読み込む。
from sklearn.datasets import load_iris
# Pandasも読み込む。
import pandas as pd

次に、irisデータを準備します。
iris = load_iris()
X = pd.DataFrame(iris.data, columns=iris.feature_names)
y = pd.DataFrame(iris.target, columns=["target"])
df = pd.concat([X,y], axis=1)

データの前処理
setup()を使うと、欠損値処理、データ分割などをいい感じにやってくれます。
targetには、目的変数を渡します。
exp_clf = setup(df, target = 'target')

モデルの比較
モデルの比較はcompare_models()を使うだけです。
compare_models関数を実行すると、準備したデータのうちの70%の訓練データで、k分割交差検証(kのデフォルトは10)を用いて種々のアルゴリズムを自動で比較検証してくれます。
compare_models()

https://pycaret.org/create-model/を参考に、利用するアルゴリズム名を入力します。
今回は決定木(decision tree)を利用します。決定木は'dt'と入力すれば良いです。
tree = create_model('dt')


決定木をチューニングしてみます。
tuned_tree = tune_model('dt')

他にも下記のようなことが可能です。
# パラメータの取得
tuned_tree.get_params
# モデルの可視化
plot_model(tuned_tree)

# アンサンブル学習(ここではlightgbmとxgboostでやってみます)
lgbm = create_model('lightgbm')
xgboost = create_model('xgboost')
ensemble = blend_models([lgbm, xgboost])
そして最後にモデルを使った予測です。
pred = predict_model(tuned_tree)

一から機械学習モデル構築をやったことがある人はこんなに簡単に一通りできてびっくりですよね!

このブログを検索

ブログ アーカイブ

AD

自己紹介

自分の写真
機械学習による売上予測モデル構築や商品ポートフォリオ最適化に取り組むAI屋です。E資格・G検定保有。LINEスタンプ販売やYoutubeもやってます。

QooQ