實現機器學習工作在.net上的實作
小編今天來介紹如何使用visual studio2019工具來實現機器學習工作在.net上的實作。
假設擁有1,048,575筆的歷史計程式的車費資料(下載處),我們利用這些大數據資料內容,來建立預測模型,然後使用它來預測搭乘下次計程車車資費用。
本內容參考來源於此連結 ,而其資料集的結果如下:
圖:資料集的原始內容
表:資料集欄位說明
欄位名稱 | 說明 | 備註 |
vendor_id | 計程車廠商識別碼 | |
rate_code | 行程的費率 | |
passenger_count | 乘客數目 | |
trip_time_in_secs | 行程所花費的時間 | 排除本欄 |
trip_distance | 行程的距離 | |
payment_type | 付款方式 | |
fare_amount | 計程車車資 | 為預測值 |
※由於預測模型建立後,必須輸入相對應的數據以進行預測,而「trip_time_in_secs」(行程所花費的時間),在實務面上無法計算出來,所以訓練模型資料的選擇上就排除此類資料。
再來介紹如何利用Visual Studio 2019的工具,在一個既有的專案或是ConsoleApp的專案,滑鼠右鍵選擇「加入」,然後選擇Machine Learning Model (若無此選項,請參考此處新增)
選擇Machine Leaning Model
選擇第二個「值預測」
選擇本機CPU然後「下一步」
檔案請瀏覽至下載的資料集,而並選擇「進階資料選項」
請將trip_time_in_secs的用途設為「Ignore」,儲存後,並按下一步
訓練時間,工具會依檔案大小給予不同的預設值,可彈性調整或是不變,按下「開始訓練」鈕,
在評估階段會顯示籍由上一步的處理後,所訓練出來的模型,對於訓資料的精確度為Rsquared,其值介於0~1之間,愈大愈好,且最佳的演算法模型為FastTreeTweedieRegression,在畫面上也提供了輸入欄位,供輸入測試結果看其當果是否符合預期。
在套用階段,可以選擇要以Console app 或是 WebApi的方式使用,本案例為選擇Console App(按下Add to Solution則會建立一個console專案,並在原本的專案加入參考此專案)
產生的console專案,會出現MLModel1.zip此為訓練的模型檔兩個 c # 檔案MLModel1.consumption.cs、MLMOdel1.training.cs),未來可複製這些檔案至專案中,依產生的Progrem.cs的範例進行套用
Program.cs範例
一些重點整理:
- 以上所有UI的操作介面方式都是可以用程式執行,資料來源也可以讀資料庫資料。
- 可離線先花大量的時間訓練好產生模型xxxModel.zip,然後正式機上就可快速使用此模式進行預測,可將工作分工處理。
- ML.net提供的功能如下:
資料來源:
模型 | 名稱 | 應用 |
二元分類 | BinaryClassificationCatalog | 判斷文章 評論的情感是「正面」還是「負面」;決定是否要將電子郵件標示為「垃圾郵件」 |
多元分類 | MulticlassClassificationCatalog | 判斷影片評論是「正面」、「中立」還是「負面」;將飯店評論分類成「地點」、「價格」、「整潔度」等 |
異常偵測 | AnomalyDetectionCatalog | 識別潛在的詐騙交易。 學習指出發生網路入侵的模式。 |
叢集 | ClusteringCatalog | 根據選擇飯店時的習慣和特性,理解飯店賓客的區隔。識別客戶區隔和人口統計,以協助建立目標性廣告活動。 |
預測 | ForecastingCatalog | 預測工作會使用過去的時間序列資料來進行未來行為的預測,包括氣象預測、季節性銷售預測,以及預測性維護 |
次序 | RankingCatalog | |
迴歸 | RegressionCatalog | 根據房屋屬性 (例如房間數、地點、大小) 預測房價。 根據廣告預算預測產品銷售額。 |
建議 | RecommendationCatalog | 擁有使用者過往的電影評等資料,而想要建議使用者接下來可能想看的其他電影 |
時間序列 | TimeSeriesCatalog | |
資料來源: https://docs.microsoft.com/zh-tw/dotnet/machine-learning/resources/tasks
近期留言