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

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

 

はじめに

 

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

  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の変革の道:OpenAIのGPT-4を通してのオデッセイ

ソフトウェア開発者は、OpenAIのGPT-4を使用して複数のアプリケーションを生成し、時間の節約、コストの削減、パーソナライズ...

AIニュース

INVE 対話型AIマジックでビデオ編集を革新する

画像編集なしの世界を想像できますか?面白いミーム、息をのむような風景、魅力的なインスタグラムの写真はどこに魅力を失い...

AI研究

スタンフォード研究者がGLOWとIVESを使用して、分子ドッキングとリガンド結合位姿の予測を変革しています

ディープラーニングは、スコアリング関数の改善により、分子ドッキングの向上の可能性を持っています。現在のサンプリングプ...

人工知能

「ジェンAI愛好家が読むべき5冊の本」

イントロダクション 技術がますます進化する中、人工知能(AI)の領域は拡大するだけでなく、ジェネラティブAIという様々なサ...

機械学習

Explainable AI(説明可能なAI)とInterpretable AI(解釈可能なAI)の理解

最近の機械学習(ML)の技術革新の結果、MLモデルは人間の労働を不要にするために、さまざまな分野で使用されています。これ...

人工知能

「仕事を守るために自動化を避ける」

自動化は怖いです私のキャリアの最初のころ、私は何かを自動化しましたが、私が去ればすぐに廃止されました人々は仕事を失う...