小編今天來介紹如何使用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