サイトアイコン アマチュア無線局JS2IIU

【Streamlit】PyCaretで始める自動機械学習アプリケーション開発

こんにちは、JS2IIUです。
機械学習のモデル構築は専門知識が必要でハードルが高いイメージがありますが、近年は自動機械学習(AutoML)ツールや簡単にインタラクティブなアプリケーションを作成できるフレームワークが普及し、誰でも気軽に機械学習を活用できる環境が整いつつあります。本記事では、Pythonの軽量Webアプリケーションフレームワーク「Streamlit」と、AutoMLライブラリ「PyCaret」を組み合わせて、自動機械学習アプリケーションをゼロから作成し、Web公開まで行う方法を解説します。

1. はじめに

自動機械学習アプリケーション開発の重要性

機械学習の実用化にはデータの前処理、特徴量選択、モデル選択、ハイパーパラメータ調整など多くの工程が必要です。AutoMLはこれらを自動化し、初心者でも効率的にモデル開発ができる点で注目されています。

また、せっかく作ったモデルを手軽にチームやクライアントに共有したい場面も多いでしょう。そうした用途で人気なのが、手軽にインタラクティブなWebアプリケーションを作成できる「Streamlit」です。StreamlitとPyCaretを組み合わせることで、機械学習モデルの作成と利用体験を一気に高めることが可能になります。

本記事の目的

本記事では次の3点を達成します。

2. Streamlitについて

Streamlitの概要

StreamlitはPython製のオープンソースWebアプリケーションフレームワークです。シンプルなPythonスクリプトを書くだけでWeb UIを作成しデータ可視化や機械学習モデルのデプロイまでを簡単に実現できます。

Streamlitの特徴と利点

Streamlitのインストールと基本設定

まずはPython環境にStreamlitをインストールします。

Bash
pip install streamlit

インストール後、簡単な動作確認のため「hello world」を表示するコードを書いてみましょう。

Python
# sample_app.py
import streamlit as st

st.title("Hello Streamlit!")
st.write("これはStreamlitのテストアプリです。")

以下のコマンドで起動します。

Bash
streamlit run sample_app.py

ブラウザが自動で立ち上がり、タイトルと文章が表示されれば成功です。

3. PyCaretについて

PyCaretの概要

PyCaretはPythonのオープンソースAutoMLライブラリで、分類・回帰・クラスタリングなど多様な機械学習タスクを簡単なコードで実現できます。複雑な前処理やモデル比較、チューニングを自動で行い、最終的にモデルを保存・利用するまで支援します。

PyCaretの特徴と利点

📦 PyCaretのモジュール一覧と主な機能

モジュール名分類主な機能
pycaret.classification分類ロジスティック回帰, ランダムフォレスト, XGBoost などによる分類タスク
pycaret.regression回帰線形回帰, ランダムフォレスト, LightGBMなどによる回帰タスク
pycaret.clusteringクラスタリングKMeans, DBSCAN, Hierarchical clustering 等を用いた非教師あり学習
pycaret.anomaly異常検知Isolation Forest, KNN, PCAなどによる異常値検出
pycaret.nlp自然言語処理トピックモデリング(LDA)や文章前処理、TF-IDF抽出
pycaret.time_series時系列予測ARIMA, Prophet, ETSなどのアルゴリズムを使った時系列モデル構築
pycaret.datasetsデータ学習用のサンプルデータセットを提供(get_data()
pycaret.utilsユーティリティモデルの保存/読み込み、パイプラインのエクスポートなど
pycaret.internal内部処理前処理やパイプライン構築の内部API(通常は直接使用しない)

✅ PyCaretが提供する代表的な関数

関数名説明
setup()データセットと前処理オプションを設定する初期化関数
compare_models()複数のモデルを学習し、評価指標で自動的に比較
create_model()特定のアルゴリズムでモデルを作成
tune_model()モデルのハイパーパラメータを自動的に最適化
plot_model()混同行列や学習曲線など、モデルの可視化
predict_model()学習済みモデルを使って新しいデータを予測
save_model() / load_model()モデルの保存と読み込み
deploy_model()AWS S3などへのデプロイ(オプション機能)

📘 参考リンク

PyCaretのインストールと基本設定

分類タスク用にパッケージをインストールします。

Bash
pip install pycaret

4. StreamlitとPyCaretの統合方法

PyCaretの機能をStreamlitで利用するための設定

Streamlitのスクリプト内でPyCaretのセットアップからモデル学習、予測までを行います。まず、データの読み込みとPyCaretの初期化を行いましょう。

具体的なコード例とその解説

以下は乳がんデータセットを用いたサンプルです。(sklearnbreast_cancerデータセット活用)

Python
import streamlit as st
from pycaret.classification import *
from sklearn.datasets import load_breast_cancer
import pandas as pd

st.title('Streamlit + PyCaret 自動機械学習デモ')

# データ読み込み
data_bunch = load_breast_cancer()
data = pd.DataFrame(data_bunch.data, columns=data_bunch.feature_names)
data['target'] = data_bunch.target

st.write('乳がん診断データセットの先頭5行')
st.dataframe(data.head())

# PyCaretセットアップ
if st.button('モデル作成開始'):
    clf_setup = setup(data=data, target='target', silent=True, session_id=123)
    best_model = compare_models()
    st.write('最適モデル:', best_model)

5. インタラクティブなユーザーインターフェースの作成方法

Streamlitを用いたUIの設計と作成方法

データ読み込みからモデル構築までをボタン操作で制御し、予測のための入力もUIで受け取れるようにしましょう。

ユーザー入力を受け取る方法

スライダーや数値入力ウィジェットを使い、ユーザーがウィジェットで特徴量を入力できるようにします。

PyCaretで処理した結果を表示する方法

ユーザー入力を元にモデルで推論を行い、予測結果を表示します。

具体的なコード例とその解説

Python
import streamlit as st
from pycaret.classification import *
from sklearn.datasets import load_breast_cancer
import pandas as pd
import numpy as np

st.title('自動機械学習モデルで乳がん診断')

# データ準備
data_bunch = load_breast_cancer()
data = pd.DataFrame(data_bunch.data, columns=data_bunch.feature_names)
data['target'] = data_bunch.target

st.sidebar.header('患者情報を入力してください')

# 入力フォーム
def user_input_features():
    features = {}
    for feature in data_bunch.feature_names:
        min_val = float(np.min(data[feature]))
        max_val = float(np.max(data[feature]))
        mean_val = float(np.mean(data[feature]))
        features[feature] = st.sidebar.slider(feature, min_val, max_val, mean_val)
    return pd.DataFrame(features, index=[0])

input_df = user_input_features()

# モデル作成ボタン
if 'model' not in st.session_state:
    if st.button('モデル作成'):
        setup(
            data=data,
            target='target',
            session_id=123,
            verbose=False  # 必要に応じて出力抑制
            # confirm_parameters=False なども検討可能
        )
        model = compare_models()
        st.session_state.model = model
        st.success('モデル作成が完了しました。')

# 予測結果表示
if 'model' in st.session_state:
    pred = predict_model(st.session_state.model, data=input_df)

    st.subheader('予測結果')
    diagnosis = '悪性' if pred['prediction_label'].iloc[0] == 0 else '良性'
    st.write(f"予測分類: **{diagnosis}**")
    st.write('予測確率:')
    st.write(pred[['prediction_score', 'prediction_label']])

6. アプリケーションのデプロイと共有

ローカル環境で動作確認したアプリケーションをWebに公開する方法

Streamlitは公式にStreamlit Cloudという無料ホスティングサービスを提供しています。GitHubにソースコードを上げ、Streamlit Cloudに連携させるだけで簡単に公開可能です。

ポを作成し、アプリケーションコードをプッシュします。

  1. https://streamlit.io/cloud にアクセスし、GitHubアカウントでログイン。
  2. New appから先ほどのリポジトリとブランチ、起動スクリプト(例:app.py)を指定。
  3. 自動でビルドとデプロイが行われ、URLが発行されます。

具体的な手順とその解説

Bash
  git init
  git add .
  git commit -m "add streamlit pycaret app"
  git branch -M main
  git remote add origin https://github.com/username/repo.git
  git push -u origin main

7. まとめ

本記事では、AutoMLライブラリのPyCaretとWebアプリフレームワークStreamlitを組み合わせることで、初心者でも簡単に自動機械学習アプリケーションを作成し、共有まで行う方法を紹介しました。具体的には、

これらを総合的に学ぶことで、実際の現場や個人プロジェクトで即活用できるスキルが身につきます。

今後はさらにGUIの改善や多様なデータセットに対応した実装、解釈性の高いモデル構築にも挑戦してみてください。自動化ツールを活用しながら、機械学習の民主化を体験しましょう。

8. 参考資料

最後まで読んでいただきありがとうございました。

モバイルバージョンを終了