こんにちは、JS2IIUです。
機械学習のモデル構築は専門知識が必要でハードルが高いイメージがありますが、近年は自動機械学習(AutoML)ツールや簡単にインタラクティブなアプリケーションを作成できるフレームワークが普及し、誰でも気軽に機械学習を活用できる環境が整いつつあります。本記事では、Pythonの軽量Webアプリケーションフレームワーク「Streamlit」と、AutoMLライブラリ「PyCaret」を組み合わせて、自動機械学習アプリケーションをゼロから作成し、Web公開まで行う方法を解説します。
1. はじめに
自動機械学習アプリケーション開発の重要性
機械学習の実用化にはデータの前処理、特徴量選択、モデル選択、ハイパーパラメータ調整など多くの工程が必要です。AutoMLはこれらを自動化し、初心者でも効率的にモデル開発ができる点で注目されています。
また、せっかく作ったモデルを手軽にチームやクライアントに共有したい場面も多いでしょう。そうした用途で人気なのが、手軽にインタラクティブなWebアプリケーションを作成できる「Streamlit」です。StreamlitとPyCaretを組み合わせることで、機械学習モデルの作成と利用体験を一気に高めることが可能になります。
本記事の目的
本記事では次の3点を達成します。
- Streamlitの基礎を理解しセットアップする方法
- PyCaretでAutoMLを行う環境を整え活用する方法
- 両者を組み合わせてインタラクティブな機械学習アプリを作る方法
2. Streamlitについて
Streamlitの概要
StreamlitはPython製のオープンソースWebアプリケーションフレームワークです。シンプルなPythonスクリプトを書くだけでWeb UIを作成しデータ可視化や機械学習モデルのデプロイまでを簡単に実現できます。
Streamlitの特徴と利点
- 簡単にアプリ開発できる:HTMLやJavaScriptの知識不要、Pythonだけで完結します。
- インタラクティブなUI:ボタン、スライダー、テキスト入力など多彩なウィジェットでユーザー入力が可能。
- リアルタイム更新:コードを保存すると即座にブラウザが更新されます。
- 豊富な可視化対応:Matplotlib、Plotly、Altairなどライブラリのグラフも簡単表示。
Streamlitのインストールと基本設定
まずはPython環境にStreamlitをインストールします。
pip install streamlitインストール後、簡単な動作確認のため「hello world」を表示するコードを書いてみましょう。
# sample_app.py
import streamlit as st
st.title("Hello Streamlit!")
st.write("これはStreamlitのテストアプリです。")以下のコマンドで起動します。
streamlit run sample_app.pyブラウザが自動で立ち上がり、タイトルと文章が表示されれば成功です。
3. PyCaretについて
PyCaretの概要
PyCaretはPythonのオープンソースAutoMLライブラリで、分類・回帰・クラスタリングなど多様な機械学習タスクを簡単なコードで実現できます。複雑な前処理やモデル比較、チューニングを自動で行い、最終的にモデルを保存・利用するまで支援します。
PyCaretの特徴と利点
- 統合されたワークフロー:セットアップからモデル比較、チューニング、解釈まで一貫して提供。
- 低コードで実践可能:数行のコードで複数モデルの自動比較や予測までできる。
- 幅広いタスク対応:分類、回帰、異常検知、NLPなど多様な分野を網羅。
- 結果解釈機能搭載:SHAPやLIMEも統合され、ブラックボックスの理解を助ける。
📦 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などへのデプロイ(オプション機能) |
📘 参考リンク
- 公式サイト: https://pycaret.org
- GitHub: https://github.com/pycaret/pycaret
- ドキュメント: https://pycaret.gitbook.io/docs/
PyCaretのインストールと基本設定
分類タスク用にパッケージをインストールします。
pip install pycaret4. StreamlitとPyCaretの統合方法
PyCaretの機能をStreamlitで利用するための設定
Streamlitのスクリプト内でPyCaretのセットアップからモデル学習、予測までを行います。まず、データの読み込みとPyCaretの初期化を行いましょう。
具体的なコード例とその解説
以下は乳がんデータセットを用いたサンプルです。(sklearnのbreast_cancerデータセット活用)
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)setup()はデータの前処理や設定を自動実行します。compare_models()で複数アルゴリズムを評価し最良モデルを返します。- ボタンを押すことで学習が始まり結果がブラウザに表示されます。
5. インタラクティブなユーザーインターフェースの作成方法
Streamlitを用いたUIの設計と作成方法
データ読み込みからモデル構築までをボタン操作で制御し、予測のための入力もUIで受け取れるようにしましょう。
ユーザー入力を受け取る方法
スライダーや数値入力ウィジェットを使い、ユーザーがウィジェットで特徴量を入力できるようにします。
PyCaretで処理した結果を表示する方法
ユーザー入力を元にモデルで推論を行い、予測結果を表示します。
具体的なコード例とその解説
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']])- サイドバーで特徴量をスライダー入力
- 「モデル作成」ボタンでPyCaretがモデルを計算し内部状態に保存(
st.session_state) - 入力からリアルタイムに予測を取得し表示


6. アプリケーションのデプロイと共有
ローカル環境で動作確認したアプリケーションをWebに公開する方法
Streamlitは公式にStreamlit Cloudという無料ホスティングサービスを提供しています。GitHubにソースコードを上げ、Streamlit Cloudに連携させるだけで簡単に公開可能です。
ポを作成し、アプリケーションコードをプッシュします。
- https://streamlit.io/cloud にアクセスし、GitHubアカウントでログイン。
- New appから先ほどのリポジトリとブランチ、起動スクリプト(例:
app.py)を指定。 - 自動でビルドとデプロイが行われ、URLが発行されます。
具体的な手順とその解説
- GitHubの使い方が不慣れな場合は、コマンド例を参考にしてください。
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 main7. まとめ
本記事では、AutoMLライブラリのPyCaretとWebアプリフレームワークStreamlitを組み合わせることで、初心者でも簡単に自動機械学習アプリケーションを作成し、共有まで行う方法を紹介しました。具体的には、
- Streamlitの使い方基礎
- PyCaretのセットアップとモデル作成の自動化
- ユーザー入力を受け予測結果を表示するUI構築
- GitHub+Streamlit Cloudによる無料Webデプロイ
これらを総合的に学ぶことで、実際の現場や個人プロジェクトで即活用できるスキルが身につきます。
今後はさらにGUIの改善や多様なデータセットに対応した実装、解釈性の高いモデル構築にも挑戦してみてください。自動化ツールを活用しながら、機械学習の民主化を体験しましょう。
8. 参考資料
- Streamlit公式ドキュメント
- PyCaret公式ドキュメント
- Streamlit Cloud (共有用プラットフォーム)
- scikit-learnの乳がんデータセット
- PyCaretのチュートリアル
最後まで読んでいただきありがとうございました。


コメント