1. 程式人生 > >.NET開發人員如何開始使用ML.NET

.NET開發人員如何開始使用ML.NET

隨著谷歌,Facebook釋出他們的工具機器學習工具Tensorflow 2和PyTorch ,微軟的CNTK 2.7之後不再繼續更新(https://docs.microsoft.com/zh-cn/cognitive-toolkit/releasenotes/cntk_2_7_release_notes),Build 2019 微軟也釋出了ML.NET 1.0 ,這是一個面向機器學習開發者的新框架。可以說2019年是機器學習社群普及化的一年,所有的這些釋出清楚地表明瞭IT行業的發展方向。從資料集改進模型到新的模型更新,以及優化硬體。

ML.NET一直在微軟的研究部門的工作。這些創新已經用於他們自己的產品,如Windows Defender,Microsoft Office(Powerpoint設計理念,Excel圖表推薦),Azure機器學習,PowerBI。 ML.NET旨在提供終端工作流程,以便在機器學習(預處理,特徵工程,建模,評估和操作)的各個步驟中將ML用於.NET應用程式。

ML.NET 1.0提供以下關鍵元件:

  • 資料表示
  • 機器學習任務(分類,迴歸,異常檢測等)
  • 資料特徵工程

機器學習模型應該讓分析師的生活更輕鬆,現在甚至可以構建這些模型,因為新框架的設計考慮了AutoML。除了通常的機器學習任務外,ML.NET還支援AutoML。

對於機器學習初學者,Microsoft開發人員建議從Visual Studio中的ML.NET模型構建器和任何平臺上的ML.NET CLI開始。對於可以隨時構建模型的場景,AutoML API也非常方便。

使用ML.NET模型構建器,只需右鍵單擊即可向應用程式新增機器學習。

資料來源:微軟

在命令列使用ML.NET

還引入了另一個工具ML.NET CLI(命令列工具),它允許使用AutoML和ML.NET生成ML.NET模型。ML.NET CLI快速遍歷特定ML任務的資料集(目前支援迴歸和分類)並生成最佳模型。

CLI除了生成最佳模型外,還允許使用者為最佳效能模型生成模型訓練和 消費模型程式碼。

ML.NET CLI是跨平臺的,是.NET CLI 的全域性工具。Visual Studio擴充套件ML.NET Model Builder 還使用ML.NET CLI提供模型構建器功能。

安裝ML.NET CLI:

dotnet tool install -g mlnet

這是使用迴歸預測出租車票價的程式碼

載入資料集

IDataView trainingDataView = mlContext.Data.LoadFromTextFile(TrainDataPath, hasHeader: true);

IDataView testDataView = mlContext.Data.LoadFromTextFile(TestDataPath, hasHeader: true);

執行AutoML二進位制分類

ExperimentResult experimentResult = mlContext.Auto().CreateRegressionExperiment(ExperimentTime).Execute(trainingDataView, LabelColumnName, progressHandler: new RegressionExperimentProgressHandler());

模型評估

ITransformer model = experimentResult.BestRun.Model;

並使用測試資料集評估其質量(taxi-fare-test.csv)。

Regression.Evaluate() 計算已知票價與模型預測值之間的差異,以生成各種指標。

var predictions = trainedModel.Transform(testDataView);

var metrics = mlContext.Regression.Evaluate(predictions,scoreColumnName:“Score”);

建立預測引擎

var predEngine = mlContext.Model.CreatePredictionEngine<TaxiTrip, TaxiTripFarePrediction>(model);

計算分數

var predictedResult = predEngine.Predict(taxiTripSample);

上面是使用Visual Studio內部的模型構建器以及CLI命令測試AutoML,還有一個API可以在.Net應用程式中使用它,使用非常簡單,新增[ Microsoft.ML.AutoML ] nuget包到專案中就可以使用API 進行工作

ML.Net示例倉庫中有一整套示例。可以重用了Common資料夾中的一些類來通過API使用AutoML 。

參考

  • 如何使用ML.NET自動化機器學習API
  • 使用CLI自動生成二進位制分類器
  • 機器學習模型生成器
  • 如何安裝ML.NET命令列介面(CLI)工具
  • 機器學習.Net樣本