開発ステップ 2 - Web アプリの構築とモデルの統合

ステップ2.1 ライブラリをインポートする

import streamlit as stimport numpy as npimport pandas as pdimport joblib

stremlit は、機械学習およびデータ サイエンス プロジェクト用のカスタム Web アプリケーションを簡単に作成して共有できるようにする Python ライブラリです。
numpy は、数値計算用の基本的な Python ライブラリです。これは、大規模な多次元配列と行列のサポートと、これらの配列を効率的に操作するための数学関数のコレクションを提供します。

Step2.2 入力データの取得とエンコード

data = {    \\\"island\\\": island,    \\\"bill_length_mm\\\": bill_length_mm,    \\\"bill_depth_mm\\\": bill_depth_mm,    \\\"flipper_length_mm\\\": flipper_length_mm,    \\\"body_mass_g\\\": body_mass_g,    \\\"sex\\\": sex,}input_df = pd.DataFrame(data, index=[0])encode = [\\\"island\\\", \\\"sex\\\"]input_encoded_df = pd.get_dummies(input_df, prefix=encode)

入力値は Stremlit によって作成された入力フォームから取得され、カテゴリ変数はモデルの作成時と同じルールを使用してエンコードされます。各データの順序もモデル作成時と同じである必要があることに注意してください。順序が異なる場合、モデルを使用して予測を実行するとエラーが発生します。

ステップ2.3 モデルをロードする

clf = joblib.load(\\\"penguin_classifier_model.pkl\\\")

「penguin_classifier_model.pkl」は、以前に保存したモデルが保存されているファイルです。このファイルには、トレーニングされた RandomForestClassifier がバイナリ形式で含まれています。このコードを実行すると、モデルが clf にロードされ、新しいデータの予測と評価に使用できるようになります。

Step2.4 予測を実行する

prediction = clf.predict(input_encoded_df)prediction_proba = clf.predict_proba(input_encoded_df)

clf.predict(input_encoded_df): トレーニングされたモデルを使用して、新しいエンコードされた入力データのクラスを予測し、結果を予測に保存します。
clf.predict_proba(input_encoded_df): 各クラスの確率を計算し、結果をprediction_proba.

に保存します。

サンプルコード

ステップ3.展開する

\\\"Machine

Stremlit Community Cloud (https://streamlit.io/cloud) にアクセスし、GitHub リポジトリの URL を指定することで、開発したアプリケーションをインターネット上に公開できます。

データセットについて

\\\"Machine

@allison_horst によるアートワーク (https://github.com/allisonhorst)

モデルは、機械学習手法を実践するためのデータセットとして広く認識されているパーマー ペンギン データセットを使用してトレーニングされます。このデータセットは、南極のパーマー諸島の 3 種のペンギン (アデリー、ヒゲゼンマイ、ジェンツー) に関する情報を提供します。主な機能は次のとおりです:

このデータセットは Kaggle から提供されており、ここからアクセスできます。特徴の多様性により、分類モデルを構築し、種の予測における各特徴の重要性を理解するのに優れた選択肢となります。

","image":"http://www.luping.net/uploads/20241006/17282217676702924713227.png","datePublished":"2024-11-02T21:56:21+08:00","dateModified":"2024-11-02T21:56:21+08:00","author":{"@type":"Person","name":"luping.net","url":"https://www.luping.net/articlelist/0_1.html"}}
「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Streamlit を使用した Web アプリとしての機械学習モデルのデプロイメント

Streamlit を使用した Web アプリとしての機械学習モデルのデプロイメント

2024 年 11 月 2 日に公開
ブラウズ:681

導入

機械学習モデルは本質的に、予測を行ったり、データ内のパターンを見つけたりするために使用される一連のルールまたはメカニズムです。非常に簡単に言うと (単純化しすぎることを恐れずに)、Excel の最小二乗法を使用して計算された傾向線もモデルです。ただし、実際のアプリケーションで使用されるモデルはそれほど単純ではありません。単純な方程式だけでなく、より複雑な方程式やアルゴリズムが含まれることがよくあります。

この投稿では、プロセスの雰囲気をつかむために、非常に単純な機械学習モデルを構築し、それを非常に単純な Web アプリとしてリリースすることから始めます。

ここでは、ML モデル自体ではなく、プロセスのみに焦点を当てます。また、Streamlit と Streamlit Community Cloud を使用して、Python Web アプリケーションを簡単にリリースします。

TL;DR:

機械学習用の人気のある Python ライブラリである scikit-learn を使用すると、データを迅速にトレーニングし、単純なタスク用のわずか数行のコードでモデルを作成できます。その後、モデルは joblib を使用して再利用可能なファイルとして保存できます。この保存されたモデルは、Web アプリケーションの通常の Python ライブラリと同様にインポート/ロードできるため、アプリはトレーニングされたモデルを使用して予測を行うことができます!

アプリURL: https://yh-machine-learning.streamlit.app/
GitHub: https://github.com/yoshan0921/yh-machine-learning.git

テクノロジースタック

  • パイソン
  • Streamlit: Web アプリケーション インターフェイスの作成用。
  • scikit-learn: 事前トレーニングされたランダム フォレスト モデルをロードして使用するため。
  • NumPy と Pandas: データの操作と処理用。
  • Matplotlib & Seaborn: ビジュアライゼーションの生成用。

私が作ったもの

このアプリを使用すると、パーマー ペンギン データセットでトレーニングされたランダム フォレスト モデルによって行われた予測を調べることができます。 (トレーニング データの詳細については、この記事の最後を参照してください。)

具体的には、このモデルは、種、島、くちばしの長さ、足ひれの長さ、体の大きさ、性別などのさまざまな特徴に基づいてペンギンの種を予測します。ユーザーはアプリを操作して、さまざまな機能がモデルの予測にどのような影響を与えるかを確認できます。

  • 予測画面
    Machine Learning Model Deployment as a Web App using Streamlit

  • 学習データ・可視化画面
    Machine Learning Model Deployment as a Web App using Streamlit

開発ステップ 1 - モデルの作成

ステップ1.1 ライブラリをインポートする

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
import joblib

pandas は、データ操作と分析に特化した Python ライブラリです。 DataFrame を使用したデータの読み込み、前処理、構造化をサポートし、機械学習モデル用のデータを準備します。
sklearn は、トレーニングと評価のためのツールを提供する機械学習用の包括的な Python ライブラリです。この記事では、ランダムフォレストと呼ばれる学習手法を使用してモデルを構築します。
joblib は、機械学習モデルなどの Python オブジェクトを非常に効率的な方法で保存およびロードするのに役立つ Python ライブラリです。

Step1.2 データの読み込み

df = pd.read_csv("./dataset/penguins_cleaned.csv")
X_raw = df.drop("species", axis=1)
y_raw = df.species

データセット (トレーニング データ) を読み込み、特徴 (X) とターゲット変数 (y) に分割します。

Step1.3 カテゴリ変数をエンコードする

encode = ["island", "sex"]
X_encoded = pd.get_dummies(X_raw, columns=encode)

target_mapper = {"Adelie": 0, "Chinstrap": 1, "Gentoo": 2}
y_encoded = y_raw.apply(lambda x: target_mapper[x])

カテゴリ変数は、ワンホット エンコーディング (X_encoded) を使用して数値形式に変換されます。たとえば、「island」にカテゴリ「Biscoe」、「Dream」、および「Torgersen」が含まれている場合、それぞれに新しい列が作成されます (island_Biscoe、island_Dream、island_Torgersen)。セックスでも同じことが行われます。元のデータが「Biscoe」の場合、island_Biscoe 列は 1 に設定され、その他の列は 0 に設定されます。
ターゲット変数の種は数値 (y_encoded) にマッピングされます。

Step1.4 データセットを分割する

x_train, x_test, y_train, y_test = train_test_split(
    X_encoded, y_encoded, test_size=0.3, random_state=1
)

モデルを評価するには、トレーニングに使用されていないデータに対するモデルのパフォーマンスを測定する必要があります。 7:3 は、機械学習の一般的な手法として広く使用されています。

Step1.5 ランダムフォレストモデルをトレーニングする

clf = RandomForestClassifier()
clf.fit(x_train, y_train)

fit メソッドはモデルのトレーニングに使用されます。
x_train は説明変数のトレーニング データを表し、y_train はターゲット変数を表します。
このメソッドを呼び出すと、学習データに基づいて学習されたモデルが clf.

に格納されます。

Step1.6 モデルを保存する

joblib.dump(clf, "penguin_classifier_model.pkl")

joblib.dump() は、Python オブジェクトをバイナリ形式で保存する関数です。モデルをこの形式で保存すると、モデルをファイルからロードして、再度トレーニングすることなくそのまま使用できます。

サンプルコード

開発ステップ 2 - Web アプリの構築とモデルの統合

ステップ2.1 ライブラリをインポートする

import streamlit as st
import numpy as np
import pandas as pd
import joblib

stremlit は、機械学習およびデータ サイエンス プロジェクト用のカスタム Web アプリケーションを簡単に作成して共有できるようにする Python ライブラリです。
numpy は、数値計算用の基本的な Python ライブラリです。これは、大規模な多次元配列と行列のサポートと、これらの配列を効率的に操作するための数学関数のコレクションを提供します。

Step2.2 入力データの取得とエンコード

data = {
    "island": island,
    "bill_length_mm": bill_length_mm,
    "bill_depth_mm": bill_depth_mm,
    "flipper_length_mm": flipper_length_mm,
    "body_mass_g": body_mass_g,
    "sex": sex,
}
input_df = pd.DataFrame(data, index=[0])

encode = ["island", "sex"]
input_encoded_df = pd.get_dummies(input_df, prefix=encode)

入力値は Stremlit によって作成された入力フォームから取得され、カテゴリ変数はモデルの作成時と同じルールを使用してエンコードされます。各データの順序もモデル作成時と同じである必要があることに注意してください。順序が異なる場合、モデルを使用して予測を実行するとエラーが発生します。

ステップ2.3 モデルをロードする

clf = joblib.load("penguin_classifier_model.pkl")

「penguin_classifier_model.pkl」は、以前に保存したモデルが保存されているファイルです。このファイルには、トレーニングされた RandomForestClassifier がバイナリ形式で含まれています。このコードを実行すると、モデルが clf にロードされ、新しいデータの予測と評価に使用できるようになります。

Step2.4 予測を実行する

prediction = clf.predict(input_encoded_df)
prediction_proba = clf.predict_proba(input_encoded_df)

clf.predict(input_encoded_df): トレーニングされたモデルを使用して、新しいエンコードされた入力データのクラスを予測し、結果を予測に保存します。
clf.predict_proba(input_encoded_df): 各クラスの確率を計算し、結果をprediction_proba.

に保存します。

サンプルコード

ステップ3.展開する

Machine Learning Model Deployment as a Web App using Streamlit

Stremlit Community Cloud (https://streamlit.io/cloud) にアクセスし、GitHub リポジトリの URL を指定することで、開発したアプリケーションをインターネット上に公開できます。

データセットについて

Machine Learning Model Deployment as a Web App using Streamlit

@allison_horst によるアートワーク (https://github.com/allisonhorst)

モデルは、機械学習手法を実践するためのデータセットとして広く認識されているパーマー ペンギン データセットを使用してトレーニングされます。このデータセットは、南極のパーマー諸島の 3 種のペンギン (アデリー、ヒゲゼンマイ、ジェンツー) に関する情報を提供します。主な機能は次のとおりです:

  • 種: ペンギンの種類 (アデリー、ヒゲペンギン、ジェンツー)。
  • 島: ペンギンが観察された特定の島 (ビスコー、ドリーム、トーガーセン)。
  • くちばしの長さ: ペンギンのくちばしの長さ (mm)。
  • くちばしの深さ: ペンギンのくちばしの深さ (mm)。
  • フリッパーの長さ: ペンギンのフリッパーの長さ (mm)。
  • Body Mass: ペンギンの質量 (g)。
  • 性別: ペンギンの性別 (オスまたはメス)。

このデータセットは Kaggle から提供されており、ここからアクセスできます。特徴の多様性により、分類モデルを構築し、種の予測における各特徴の重要性を理解するのに優れた選択肢となります。

リリースステートメント この記事は次の場所に転載されています: https://dev.to/yoshan0921/machine-learning-model-deployment-as-a-web-app-using-streamlit-2c5p?1 侵害がある場合は、study_golang@163 までご連絡ください。 .comを削除してください
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3