實現機器學習工作在.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