開発ステップ 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 日に公開
ブラウズ:463

導入

機械学習モデルは本質的に、予測を行ったり、データ内のパターンを見つけたりするために使用される一連のルールまたはメカニズムです。非常に簡単に言うと (単純化しすぎることを恐れずに)、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を削除してください
最新のチュートリアル もっと>
  • Tailwind CSS: 構成のカスタマイズ
    Tailwind CSS: 構成のカスタマイズ
    導入 Tailwind CSS は、近年 Web 開発者の間で非常に人気のあるオープンソース CSS フレームワークです。美しくモダンなユーザー インターフェイスを作成するための、カスタマイズ可能な独自のアプローチを提供します。 Tailwind CSS を他の CSS フレームワ...
    プログラミング 2024 年 11 月 3 日に公開
  • jQueryの使用
    jQueryの使用
    jQuery とは? jQuery は、HTML ドキュメントの走査、操作、イベント処理、アニメーションなどのタスクを簡素化するために設計された機能を備えた高速 Javascript ライブラリです。 「書く量を減らして、もっと増やす」 MDN の状態: jQuery を使用すると、複数行のコードと...
    プログラミング 2024 年 11 月 3 日に公開
  • CONCAT() は、完全な名前一致のために MySQL の検索機能をどのように強化できますか?
    CONCAT() は、完全な名前一致のために MySQL の検索機能をどのように強化できますか?
    WHERE 句の MySQL CONCAT() 関数を使用した効率的な検索一般的なデータベース操作の 1 つは、複数の列にわたるデータの検索です。ただし、姓名フィールドを別々に使用して名前を検索する場合、不完全な一致をキャプチャするなどの制限が発生する可能性があります。これを克服するには、MySQL...
    プログラミング 2024 年 11 月 3 日に公開
  • [デイリーパッケージ]ms
    [デイリーパッケージ]ms
    MS ms は、さまざまな時間形式をミリ秒に、またはその逆に変換します。 /* time format to milliseconds */ ms('2 days') // 172800000 ms('1d') // 86400000 ms('10h') // ...
    プログラミング 2024 年 11 月 3 日に公開
  • WordPress データベースをローカルから運用環境に移行することを検討する必要があります
    WordPress データベースをローカルから運用環境に移行することを検討する必要があります
    データベースをローカル環境から運用サーバーに移行するのは大変なことのように感じるかもしれませんが、適切なアプローチをとれば、そうする必要はありません。このガイドでは、スムーズな移行プロセスを確保するために考慮する必要がある重要なポイントについて説明します。 データベース移行に関する重...
    プログラミング 2024 年 11 月 3 日に公開
  • JavaScript のネストされたオブジェクトを理解する
    JavaScript のネストされたオブジェクトを理解する
    オブジェクトは、JavaScript 開発者として扱うものであり、言うまでもなく、これは TypeScript にも当てはまります。 TypeScript では、オブジェクト プロパティの型定義を定義する複数の方法が提供されます。この記事では、簡単な例から始めて高度な型定義に進みながら、それらのいく...
    プログラミング 2024 年 11 月 3 日に公開
  • コンストラクターのオーバーロード
    コンストラクターのオーバーロード
    メソッドと同様に、コンストラクターもオーバーロードできます。 コンストラクターのオーバーロードを使用すると、さまざまな方法でオブジェクトを作成できます。 MyClass クラスには 4 つのオーバーロードされたコンストラクターがあり、それぞれがオブジェクトを異なる方法で初期化します。 新しいステー...
    プログラミング 2024 年 11 月 2 日に公開
  • Node.js で JavaScript の力を解き放ちましょう!
    Node.js で JavaScript の力を解き放ちましょう!
    JavaScript はもはやブラウザーだけのものではありません。Node.js のおかげで、サーバー側も引き継ぎます。 ?経験豊富な開発者であっても、初心者であっても、Node.js をマスターすることはゲームチェンジャーです。 Node.js を始めるべき理由は次のとおりです: どこでも Jav...
    プログラミング 2024 年 11 月 2 日に公開
  • INMET-BDMEP 気候データの収集と処理
    INMET-BDMEP 気候データの収集と処理
    Os dados climáticos desempenham um papel crucial em diversos setores, auxiliando em estudos e previsões que impactam áreas como agricultura, planejame...
    プログラミング 2024 年 11 月 2 日に公開
  • LLP 登録: 主な利点と法的要件
    LLP 登録: 主な利点と法的要件
    ビジネスを有限責任パートナーシップ (LLP) として登録することは、柔軟性、法的保護、簡素化されたコンプライアンスの独自の組み合わせにより、起業家や専門家の間でますます人気のある選択肢となっています。 LLP 登録には明確な利点があり、合理化された効率的なビジネス構造を保証する特定の法的要件が伴...
    プログラミング 2024 年 11 月 2 日に公開
  • HLHealth レベル 7)
    HLHealth レベル 7)
    HL7 はヘルス レベル 7 とも呼ばれ、さまざまな医療システムにおける電子情報の統合、交換、管理、検索に使用されるメッセージングおよび臨床標準規格です。これは、患者の入院などのイベントによってトリガーされるトランザクションに基づくプロトコルです。 HL7 は、公衆衛生の分野での情報交換を促進します...
    プログラミング 2024 年 11 月 2 日に公開
  • Qt MainWindow を別のスレッドから安全に更新するにはどうすればよいですか?
    Qt MainWindow を別のスレッドから安全に更新するにはどうすればよいですか?
    Qt - 2 番目のスレッドによるメイン ウィンドウの更新マルチスレッド Qt アプリケーションで、別のスレッドからメイン UI (mainwindow.ui) を更新する課題を提起することができます。この記事では、カスタム スレッド内から UI 要素 (指定されたコードの ana->ui->hor...
    プログラミング 2024 年 11 月 2 日に公開
  • NgRx を使用して Angular 状態管理をマスターする
    NgRx を使用して Angular 状態管理をマスターする
    State management in Angular ensures that data is consistently and efficiently shared across all parts of an application. Instead of each component man...
    プログラミング 2024 年 11 月 2 日に公開
  • Hexabot のセットアップとビジュアル エディターのチュートリアル: 初めての AI チャットボットを構築する
    Hexabot のセットアップとビジュアル エディターのチュートリアル: 初めての AI チャットボットを構築する
    チャットボット愛好家の皆さん、こんにちは。このチュートリアルでは、オープンソースの AI チャットボット ビルダーである Hexabot をセットアップして使用するプロセスを説明します。まず、GitHub リポジトリのクローンを作成し、依存関係をインストールし、Hexabot の環境変数を構成します...
    プログラミング 2024 年 11 月 2 日に公開
  • mysql_fetch_row()、mysql_fetch_assoc()、および mysql_fetch_array(): どれを選択する必要がありますか?
    mysql_fetch_row()、mysql_fetch_assoc()、および mysql_fetch_array(): どれを選択する必要がありますか?
    mysql_fetch_row()、mysql_fetch_assoc()、および mysql_fetch_array() の説明背景:非推奨のものを使用している場合MySQL 拡張機能を使用すると、結果セットからデータを取得するために mysql_fetch_row()、mysql_fetch_a...
    プログラミング 2024 年 11 月 2 日に公開

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

Copyright© 2022 湘ICP备2022001581号-3