初めての機械学習モデルを展開する

美容とファッションの世界における初めての機械学習モデルの魅力と展開

 

はじめに

 

このチュートリアルでは、ガラス分類データセットを使用して、シンプルな多クラス分類モデルを構築する方法について学びます。私たちの目標は、さまざまなタイプのガラス(以下のようなもの)を予測できるウェブアプリケーションを開発して展開することです。

  1. 建築用窓フロートプロセス
  2. 建築用窓非フロートプロセス
  3. 車両用窓フロートプロセス
  4. 車両用窓非フロートプロセス(データセットには存在しない)
  5. 容器
  6. 食器
  7. ヘッドランプ

さらに、以下について学びます:

  • Skops:scikit-learnベースのモデルを共有して本番環境に配置する方法。
  • Gradio:機械学習ウェブアプリケーションフレームワーク。
  • HuggingFace Spaces:無料の機械学習モデルおよびアプリケーションホスティングプラットフォーム。

このチュートリアルの最後までに、基本的な機械学習モデルを構築し、トレーニングして展開するための実践的な経験を得ることができます。

 

モデルのトレーニングと保存

 

この部分では、データセットをインポートし、トレーニングセットとテストセットに分割し、機械学習パイプラインを構築し、モデルをトレーニングし、モデルの性能を評価し、モデルを保存します。

 

データセット

 

データセットをロードし、ラベルの均等な分布のためにシャッフルしました。

import pandas as pd
glass_df = pd.read_csv("glass.csv")
glass_df = glass_df.sample(frac = 1)
glass_df.head(3)

 

データセットは以下の通りです:

その後、データセットを使用してモデルの特徴量と目標変数を選択し、トレーニングセットとテストセットに分割しました。

from sklearn.model_selection import train_test_split
X = glass_df.drop("Type",axis=1)
y = glass_df.Type
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=125)

 

機械学習パイプライン

 

モデルのパイプラインはシンプルです。まず、特徴量をインピューターを通して渡し、Standard Scalerを使用して正規化します。最後に、処理済みのデータをランダムフォレスト分類器に渡します。

トレーニングセットにパイプラインをフィットさせた後、テストセット上での精度スコア(`.score()`)を生成します。

スコアは平均値であり、パフォーマンスに満足しています。また、アンサンブルやさまざまな最適化手法を使用してモデルを改善することもできますが、私達の目標は異なっています。

from sklearn.ensemble import RandomForestClassifier
from sklearn.preprocessing import StandardScaler
from sklearn.impute import SimpleImputer
from sklearn.pipeline import Pipeline
pipe = Pipeline(
    steps=[
        ("imputer", SimpleImputer()),
        ("scaler", StandardScaler()),
        ("model", RandomForestClassifier(n_estimators=100, random_state=125)),
    ])
pipe.fit(X_train, y_train)
pipe.score(X_test, y_test)
>>> 0.7538461538461538

 

分類レポートも良好です。

from sklearn.metrics import classification_report
y_pred = pipe.predict(X_test)
print(classification_report(y_test,y_pred))

 

precision    recall  f1-score   support
           1       0.65      0.73      0.69        15
           2       0.82      0.79      0.81        29
           3       0.40      0.50      0.44         4
           5       1.00      0.80      0.89         5
           6       1.00      0.67      0.80         3
           7       0.78      0.78      0.78         9
    accuracy                           0.75        65
   macro avg       0.77      0.71      0.73        65
weighted avg       0.77      0.75      0.76        65

モデルの保存

Skopsはscikit-learnモデルをプロダクトに展開するための素晴らしいライブラリです。モデルを保存して後で本番環境にロードするために使用します。

import skops.io as siosio.dump(pipe, "glass_pipeline.skops")

1行のコードで、パイプライン全体をロードできることがわかります。

sio.load("glass_pipeline.skops", trusted=True)

Webアプリケーションの構築

このパートでは、Gradioを使用して簡単な分類ユーザーインターフェースを構築する方法を学びます。

  • スキョップを使用してモデルをロードする。
  • クラス名の配列を作成し、最初の要素を空または「None」として、数値クラスのスターターとします。
  • ユーザーからの入力を受け取り、パイプラインを使用してクラスを予測する分類のPython関数を作成します。
  • 各フィーチャーの入力をスライダーを使用して作成します。ユーザーはマウスで数値を選択できます。
  • ラベルを使用して出力を作成します。トップで太字のテキストでラベルが表示されます。
  • アプリのタイトルと説明を追加します。
  • 最後に、すべてを`gradio.Interface`で結合します。
import gradio as grimport skops.io as siopipe = sio.load("glass_pipeline.skops", trusted=True)classes = [    "None",    "Building Windows Float Processed",    "Building Windows Non Float Processed",    "Vehicle Windows Float Processed",    "Vehicle Windows Non Float Processed",    "Containers",    "Tableware",    "Headlamps",]def classifier(RI, Na, Mg, Al, Si, K, Ca, Ba, Fe):    pred_glass = pipe.predict([[RI, Na, Mg, Al, Si, K, Ca, Ba, Fe]])[0]    label = f"予測されたガラスのラベル: **{classes[pred_glass]}**"    return labelinputs = [    gr.Slider(1.51, 1.54, step=0.01, label="屈折率"),    gr.Slider(10, 17, step=1, label="ナトリウム"),    gr.Slider(0, 4.5, step=0.5, label="マグネシウム"),    gr.Slider(0.3, 3.5, step=0.1, label="アルミニウム"),    gr.Slider(69.8, 75.4, step=0.1, label="ケイ素"),    gr.Slider(0, 6.2, step=0.1, label="カリウム"),    gr.Slider(5.4, 16.19, step=0.1, label="カルシウム"),    gr.Slider(0, 3, step=0.1, label="バリウム"),    gr.Slider(0, 0.5, step=0.1, label="鉄"),]outputs = [gr.Label(num_top_classes=7)]title = "ガラスの分類"description = "正確なガラスの種類を識別するために詳細を入力してください。"gr.Interface(    fn=classifier,    inputs=inputs,    outputs=outputs,    title=title,    description=description,).launch()

機械学習モデルのデプロイ

最後のパートでは、Hugging Faceのスペースを作成し、モデルとアプリファイルを追加します。

スペースを作成するには、https://huggingface.coにサインインする必要があります。その後、右上のプロフィール画像をクリックし、「+ 新しいスペース」を選択します。

アプリケーションの名前を書き、SDKを選択し、スペース作成ボタンをクリックします。

次に、`requirements.txt`ファイルを作成します。 「ファイル」タブに移動し、「+ ファイルの追加」ボタンを選択して、ファイルを追加または作成できます。

`requirements.txt`ファイルには、skopsとscikit-learnを追加する必要があります。

 

その後、モデルとファイルをドラッグアンドドロップしてローカルフォルダからスペースに追加します。その後、コミットします。

 

スペースが必要なパッケージをインストールし、コンテナをビルドするまで、数分かかる場合があります。

スペースからの画像

最後に、家族や同僚と共有できるバグのないアプリケーションで迎えられます。リンクをクリックしてライブデモを確認することもできます:ガラス分類

ガラス分類からの画像

結論

このチュートリアルでは、機械学習モデルをウェブアプリケーションとして構築、トレーニング、展開するエンドツーエンドのプロセスを進めました。ガラス分類のデータセットを使用して、シンプルなマルチクラス分類モデルをトレーニングしました。scikit-learnでモデルをトレーニングした後、skopsとGradioを活用して、モデルをパッケージ化し、HuggingFace Spaces上でウェブアプリとして展開しました。

このスタータープロジェクトをベースにさまざまな可能性があります。モデルにさらなる機能を組み込んだり、異なるアルゴリズムを試したり、ウェブアプリを他のプラットフォームに展開したりすることができます。重要なことは、エンドツーエンドの機械学習ワークフローにおいて実践的な経験を持っていることです。モデルのトレーニング、本番用のパッケージング、モデルの予測との対話のためのウェブインターフェースの構築について触れました。

ご一緒いただきありがとうございました!機械学習の旅を続けながら他の質問があればお知らせください。Abid Ali Awan(@1abidaliawan)は、機械学習モデルの構築が大好きな認定データサイエンティストであり、現在はコンテンツ作成や機械学習、データサイエンス技術に関する技術ブログの執筆に集中しています。Abidはテクノロジーマネジメントの修士号と電気通信工学の学士号を持っています。彼のビジョンは、メンタルヘルスの問題を抱える学生向けにグラフニューラルネットワークを使用したAI製品を開発することです。

We will continue to update VoAGI; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

人工知能

「ゲームからAIへ:NvidiaのAI革命における重要な役割」

Nvidiaは現在、Facebook、Tesla、Netflixよりも価値が高くなっていますロイターによると、株価は過去8ヶ月で3倍に増加しまし...

人工知能

デヴオプスにおけるジェネレーティブAI:ピークなデヴオプスパフォーマンスを実現するスマートな(そして効果的な)方法

ジェネレーティブAIがDevOpsでチームワークを改善し、手続きを迅速化し、よりアジャイルかつ効率的な職場を作り出す方法を調...

AIニュース

「ChatGPTがクラッシュしましたか? OpenAIのAIのダウンタイムと迅速な回復!」

人工知能コミュニティは一時的な挫折に直面しました。OpenAIが開発した人気のあるチャットボット、ChatGPTは「大規模な障害」...

データサイエンス

「ScyllaDB NoSQLを使用したAI/MLフィーチャーストアの構築方法」

この記事では、AI/MLフィーチャーストアの基礎について掘り下げ、ScyllaDB NoSQLを使用して自分自身のフィーチャーストアを始...

データサイエンス

「ClimSimに出会ってください:機械学習と気候研究の物理学を結びつける画期的なマルチスケール気候シミュレーションデータセット」

数値物理シミュレーション予測は、気候変動政策の指針となる情報の主要な源です。最も高性能なスーパーコンピュータの限界に...

AIニュース

「OpenAIのAI検出ツールは、AIによって生成されたコンテンツの74%を検出できない」

OpenAIは、画期的な生成型AIチャットボットChatGPTの製造元であり、最近、AI分類ツールの提供を中止したことで話題となりまし...