瞭解如何使用「模型產生器」建置多類別分類模型,以對健康檢查期間發現的餐廳違規風險等級進行分類。
在本教學課程中,您將瞭解如何:
- 準備並瞭解資料
- 建立模型產生器組態檔
- 選取情節
- 從資料庫載入資料
- 訓練模型
- 評估模型
- 使用模型進行預測
先決條件
如需先決條件和安裝指示的清單,請瀏覽 模型產生器安裝指南。
Model Builder 多類別分類概觀
此範例會建立 C# 主控台應用程式,以使用模型產生器建置的機器學習模型來分類健康情況違規的風險。 您可以在 dotnet/machinelearning-samples GitHub 存放庫中找到本教學課程的原始程式碼。
建立主控台應用程式
建立名為「RestaurantViolations」的 C# 主控台應用程式 。
準備並瞭解資料
用於訓練和評估機器學習模型的資料集最初來自舊金山公共衛生部餐廳安全評分。 為了方便起見,資料集已壓縮為僅包含與訓練模型和進行預測相關的資料行。 請造訪下列網站,以進一步瞭解 資料集。
下載餐廳安全分數資料集 並解壓縮。
資料集中的每一行都包含有關衛生部門檢查期間觀察到的違規行為的資訊,以及對這些違規行為對公共健康和安全構成的威脅的風險評估。
| 檢查類型 | 違規說明 | RiskCategory |
|---|---|---|
| 例程 - 未排程 | 未充分清潔或消毒食品接觸表面 | 中等風險 |
| 新所有權 | 高危害蟲侵擾 | 高風險 |
| 例程 - 未排程 | 擦拭布不乾淨或存放不當或消毒劑不足 | 低風險 |
- InspectionType:檢查的類型。 這可以是新機構的首次檢查、例行檢查、投訴檢查以及許多其他類型。
- ViolationDescription:檢查期間發現的違規描述。
- RiskCategory:違規行為對公共健康和安全構成的風險嚴重性。
label 是您想要預測的欄。 執行分類任務時,目標是分配類別(文本或數字)。 在此分類實務範例中,違規的嚴重性會指派低、中或高風險的值。 因此, RiskCategory 是標籤。
features 是您提供給模型的輸入,以便預測 label。 在此情況下, InspectionType 和 ViolationDescription 會用作功能或輸入來預測 RiskCategory。
建立模型產生器組態檔
第一次將模型產生器新增至解決方案時,它會提示您建立 mbconfig 檔案。 此 mbconfig 檔案會追蹤您在 Model Builder 中執行的所有動作,以允許您重新開啟工作階段。
- 在 [方案總管] 中,以滑鼠右鍵按一下 RestaurantViolations 專案,然後選取 [ 新增>機器學習模型]。
- 將專案命名為
mbconfigRestaurantViolationsPrediction,然後按一下 [新增 ] 按鈕。
選取情節
若要定型您的模型,請從 Model Builder 提供的可用機器學習案例清單中選取。 在此情況下,案例是 資料分類。
- 在此範例中,工作是多類別分類。 在 Model Builder 的 [案例 ] 步驟中,選取 [資料分類 案例]。
載入數據
模型產生器會接受來自 SQL Server 資料庫或本機檔案csv的資料,格式為 、 tsv或 。txt
- 在 Model Builder 工具的資料步驟中,從資料來源類型選取 [ SQL Server ]。
- 選取 [選擇資料來源 ] 按鈕。
- 在 [ 選擇資料來源 ] 對話方塊中,選取 [ Microsoft SQL Server 資料庫檔案]。
- 取消勾選 [一律使用此選取項目] 核取方塊,然後按一下 [繼續]。
- 在 [連線屬性] 對話方塊中,選取 [ 瀏覽 ],然後選取下載的 RestaurantScores.mdf 檔案。
- 請選擇 [確定]。
- 從 [表格] 下拉式清單中選擇 [違規]。
- 在 [要預測的資料行 (標籤)] 下拉式清單中選擇 [RiskCategory]。
- 保留預設選項於進階資料選項。
- 按一下 [下一步] 按鈕,移動到模型生成器中的定型步驟。
訓練模型
本教學課程中用來訓練問題分類模型的機器學習工作是多類別分類。 在模型訓練程序期間,模型產生器會使用不同的多類別分類演算法和設定來訓練個別的模型,以為您的資料集尋找最佳效能的模型。
模型訓練所需的時間與資料量成正比。 Model Builder 會根據資料來源的大小,自動選取 [ 訓練時間 (秒)] 的預設值。
- Model Builder 會將 [訓練時間 (秒)] 的值設定為 60 秒。 訓練較長的時間可讓 Model Builder 探索更多演算法和參數組合,以尋找最佳模型。
- 按一下 開始訓練。
在整個訓練過程中,進度資料會顯示在訓練步驟的 Training results 區段中。
- 狀態 顯示訓練程序的完成狀態。
- 最佳精確度 顯示 Model Builder 目前找到的最佳效能模型的精確度。 較高的精確度表示模型在測試數據上預測得更正確。
- 最佳演算法 顯示模型產生器迄今為止找到的執行最佳效能演算法的名稱。
- 最後一個演算法會顯示模型產生器最近用來定型模型的演算法名稱。
訓練完成後,mbconfig 檔案會包含訓練產生的模型,名稱為 RestaurantViolationsPrediction.zip,以及兩個 C# 檔案:
- RestaurantViolationsPrediction.consumption.cs:此檔案有一個公用方法,可載入模型並使用它建立預測引擎並傳回預測。
- RestaurantViolationsPrediction.training.cs:此檔案包含由模型生成器設計的訓練管線,用於建構最佳模型,包括所使用的任何超參數。
按一下 [下一步] 按鈕以導覽至評估步驟。
評估模型
訓練步驟的結果將是一個具有最佳效能的模型。 在 [模型產生器] 工具的評估步驟中,在 [最佳模型 ] 區段中,將包含 [模型 ] 項目中效能最佳模型所使用的演算法,以及 [精確度] 中該模型的計量。
此外,在 Visual Studio 的 「輸出」 視窗中,將會有一個摘要表,其中包含熱門模型及其計量。
本節還允許您通過執行單個預測來測試您的模型。 它將提供文字方塊來填寫值,您可以按一下 「預測」 按鈕以從最佳模型取得預測。 依預設,此資料會由資料集中的隨機資料列填入。
(選用)使用模型
此步驟將具有可用來取用模型的專案範本。 此步驟是選用的,您可以選擇最適合您需求的方法來提供模型。
- 主控台應用程式
- 網路應用程式介面
主控台應用程式
將主控台應用程式新增至您的解決方案時,系統會提示您命名專案。
將主控台專案命名為 RestaurantViolationsPrediction_Console。
按一下 [新增至解決方案] ,將專案新增至目前的解決方案。
執行應用程式。
程式產生的輸出應類似於以下程式碼片段:
InspectionType: Routine - Unscheduled ViolationDescription: Moderate risk food holding temperature Predicted RiskCategory: Moderate Risk
網路應用程式介面
將 Web API 新增至解決方案時,系統會提示您命名專案。
將 Web API 專案命名為 RestaurantViolationsPrediction_API。
按一下 新增至解決方案*,將專案新增至目前的解決方案。
執行應用程式。
開啟 PowerShell 並輸入下列程式碼,其中 PORT 是應用程式正在接聽的連接埠。
$body = @{ InspectionType="Reinspection/Followup" ViolationDescription="Inadequately cleaned or sanitized food contact surfaces" } Invoke-RestMethod "https://localhost:<PORT>/predict" -Method Post -Body ($body | ConvertTo-Json) -ContentType "application/json"如果成功,輸出應該類似於下面的文字。 輸出的預測 RiskCategory 為 中等風險 ,並具有每個輸入標籤的分數 - 低風險、 高風險和 中等風險。
prediction score ---------- ----- Moderate Risk {0.055566575, 0.058012854, 0.88642055}
祝賀! 您已成功建置機器學習模型,以使用 Model Builder 對健康情況違規的風險進行分類。 您可以在 dotnet/machinelearning-samples GitHub 存放庫中找到本教學課程的原始程式碼。
其他資源
若要深入瞭解本教學課程中提及的主題,請流覽下列資源: