検索
連載

最小限のPythonコードでAutoMLを実現するローコード機械学習ライブラリ「PyCaret」AutoML OSS入門(6)(1/4 ページ)

AutoML OSSを紹介する本連載第6回は、ローコード機械学習ライブラリ「PyCaret」を解説します。さまざまな機械学習ライブラリのラッパーであるPyCaretは、データ分析のあらゆる工程でコードの行数を削減します。

Share
Tweet
LINE
Hatena

本記事で紹介したノートブックはGitHubにて公開しています。すぐに実行できますので、ぜひご利用ください。


 本連載第5回では、Javaアプリと簡単に連携できるOSS(オープンソースソフトウェア)の「H2O」を紹介しました。今回はローコード機械学習ライブラリ「PyCaret」を紹介します。

PyCaretとは

 PyCaretは、scikit-learn、XGBoost、LightGBM、CatBoost、spaCy、Optuna、Hyperopt、Rayなどのさまざまな機械学習ライブラリやフレームワークのPythonラッパーです。既存のライブラリを有効活用し、データ分析に必要なコードを関数化することで、ソースコードの行数を大幅に削減します。

開発元 個人(Moez Ali氏)
GitHub公開日 2020年4月
リポジトリ https://github.com/pycaret/pycaret
実装言語 Python
ライセンス MIT License
公式サイト https://pycaret.org/
表1 PyCaretの基本情報

 PyCaretは2020年4月にGitHubで公開されました。GitHubのStar数は1年たたないうちに3000を超えており、最も勢いのあるAutoMLのOSSの一つといえるでしょう。以下のグラフは、PyCaret、auto-sklearn、TPOTのGitHubに対するStar数の推移をグラフで比較したものです。緑の線がPyCaretですが、他の2つよりかなり後発でありながら、2021年内にはそれらに並ぶ勢いでStar数を増やしています。

図1 PyCaretのStar数推移
図1 PyCaretのStar数推移

主な特徴

 PyCaretには、AutoMLができる他のOSSと比較して次のような特徴があります。

  • データ分析の全工程でコードの行数を削減
  • 学習コストが低く、扱いやすい

 これらの特徴をもう少し詳しく解説します。

データ分析の全工程でコードの行数を削減

 PyCaretは、データ分析のどの工程でも典型的な処理なら、1行で実行できます。例えば、ライブラリをインポートするコードを見てみましょう。PyCaretを使わずに分類問題に取り組む場合、以下のように多数のライブラリをインポートする必要があります。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.ensemble import RandomForestClassifier
from sklearn.linear_model import LogisticRegression
  …(省略)…

 一方で、PyCaretなら次の1行で基本的な分類問題に必要なライブラリを一度にインポートできます。

from pycaret.classification import *

 データの前処理やモデルの構築と比較も1行のコードで済みます。これにより、コード量を大幅に削減できます。

# データの前処理
setup(data=train_df, target='Survived')
# モデルの構築と比較
compare_models()

学習コストが低く、扱いやすい

 PyCaretは、機械学習で一般的に使用される既存のライブラリを有効に活用しています。従って、既存のライブラリを使ったことがある人にとっては、パラメーターの意味などが理解しやすく扱いやすいでしょう。

 モデルの構築と可視化をPyCaretで実行する例を見てみましょう。以下のコードはSupport Vector Machine(以下、SVM)でモデルを構築し、特徴量の重要度(Feature Importance)を可視化します。

model = create_model('svm')
plot_model(model, plot='feature')
図2 特徴量の重要度の可視化
図2 特徴量の重要度の可視化

 上記コードの「svm」を「xgboost」に変更すればXGBoostでモデルを構築するようになり、「feature」を「boundary」に変更すれば、決定境界(Decision Boundary)を可視化するようになります。

       | 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る