.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樣本