pycaretについて
AutoMLライブラリだそうです。AutoMLというと、datarobotなどの高価なツールを思い浮かべましたが、これはpythonで使えるオープンソースライブラリで無料です。
なんといっても、短いコードでできる!のが利点です。scikit-learnも非常にシンプルでわかりやすいのですが、複数のアルゴリズムを試したいときはそれなりにコードが長くなります。
これが、pycaretならscikit-learnはもちろん、XGboostやlightBGMなど人気のアルゴリズムをサクッと実行できて比較検討できます。
実行環境
python 3.10.14
vscode
macbook M1
python 3.11以降は対応していませんでした(2024年10月現在)。pyenvで3.10.14をインストールして実行しました。
実際のコード
pycaretの公式チュートリアルを参考に実行しました。
データのインポート
まず、テスト用のデータをインポートします。
### load sample dataset from pycaret dataset module
from pycaret.datasets import get_data
data = get_data('insurance')
中身はこんな感じ。
age sex bmi children smoker region charges
0 19 female 27.900 0 yes southwest 16884.92400
1 18 male 33.770 1 no southeast 1725.55230
2 28 male 33.000 3 no southeast 4449.46200
3 33 male 22.705 0 no northwest 21984.47061
4 32 male 28.880 0 no northwest 3866.85520
最初にセットアップが必要です。読み込んだデータと目的変数としてchargesカラムを指定します。
# import pycaret regression and init setup
from pycaret.regression import *
s = setup(data, target = 'charges', session_id = 123)
セットアップすると、以下のように設定情報が表示されます。欠損値の処理もデフォルトでやってくれます。引数を指定すれば細かく調整もできるようですが、今回は割愛。
複数のモデルで学習、比較して、最もスコアの良いモデルをbestに格納します。ここでも引数を指定すれば、比較したいモデルを指定したりできますが、一旦デフォルトのままです。
# compare baseline models
best = compare_models()
比較結果が表示されます。各モデルによるスコアを複数の指標で一気に計算してくれます。これ、たった一行でこれだけの数のモデルと指標を一気に計算できるのは本当にありがたいです。

Gradient Boosting Regressorが最もスコアが良かったので、best変数に自動で格納されますが、手動でモデルを指定したい場合は以下のコードを実行すればOKです。
best = create_model('gbr')
グラフの描画も一発です。
# plot residuals
plot_model(best, plot = 'residuals')
# plot error
plot_model(best, plot = 'error')
# plot feature importance
plot_model(best, plot = 'feature')
これで良さそうなら下記のコードで予測します。
# predict on test set
holdout_pred = predict_model(best)
# show predictions df
holdout_pred.head()
age sex bmi children smoker region charges prediction_label
650 49 female 42.680000 2 no southeast 9800.888672 10681.513104
319 32 male 37.334999 1 no northeast 4667.607422 8043.453463
314 27 female 31.400000 0 yes southwest 34838.871094 36153.097686
150 35 male 24.129999 1 no northwest 5125.215820 7435.516853
336 60 male 25.740000 0 no southeast 12142.578125 14676.544334
まとめ
pycaretを使用して回帰予測をしてみました。前処理、複数のモデルでの学習、評価指標の算出、交差検証、可視化など一連のタスクを超短いコードで実装できて感動しました。
本業でも使用してみましたが、コードの可読性も高く、それなりに精度も出るので、軽めのタスクには十分すぎるほどでした。
kaggleなどのコンペで初手でとりあえず使ってみても良さそうですね。
今後も活用していきたいと思います。