初めての機械学習モデルを展開する
美容とファッションの世界における初めての機械学習モデルの魅力と展開
はじめに
このチュートリアルでは、ガラス分類データセットを使用して、シンプルな多クラス分類モデルを構築する方法について学びます。私たちの目標は、さまざまなタイプのガラス(以下のようなもの)を予測できるウェブアプリケーションを開発して展開することです。
- ビジネスにおけるAIパワードのテキストメッセージングの台頭
- このAI論文は、RetNetとTransformerの融合であるRMTを紹介し、コンピュータビジョンの効率と精度の新しい時代を開拓しています
- 「マイクロソフトのこのAI論文では、生物医学、ファイナンス、法律のパフォーマンス向上のため、人間の読解能力を模倣した言語モデルのトレーニングに新しいアプローチが紹介されています」
- 建築用窓フロートプロセス
- 建築用窓非フロートプロセス
- 車両用窓フロートプロセス
- 車両用窓非フロートプロセス(データセットには存在しない)
- 容器
- 食器
- ヘッドランプ
さらに、以下について学びます:
- 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!
Was this article helpful?
93 out of 132 found this helpful
Related articles
- NVIDIAの創設者兼CEO、ジェンセン・ファンが、NVIDIAがもたらした兆ドル規模のビジョンの創造の舞台となったデニーズに戻ってきました
- 検索の未来:ChatGPT、音声検索、画像検索がデジタルランドスケープを革新している方法
- ラングチェーン101:パート2ab (大規模な言語)モデルについて知っておくべきすべて
- Amazon SageMakerを使用して、ML推論アプリケーションをゼロから構築し、展開する
- 「18/9から24/9までの週のトップ重要コンピュータビジョン論文」
- このAIニュースレターは、あなたが必要とするすべてです #66
- OpenAIのChatGPTが音声と画像の機能を発表:AI対話における革命的な飛躍