隨着谷歌,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行業的發展方向。從數據集改進模型到新的模型更新,以及優化硬件。git
ML.NET一直在微軟的研究部門的工做。這些創新已經用於他們本身的產品,如Windows Defender,Microsoft Office(Powerpoint設計理念,Excel圖表推薦),Azure機器學習,PowerBI。 ML.NET旨在提供終端工做流程,以便在機器學習(預處理,特徵工程,建模,評估和操做)的各個步驟中將ML用於.NET應用程序。github
ML.NET 1.0提供如下關鍵組件:windows
機器學習模型應該讓分析師的生活更輕鬆,如今甚至能夠構建這些模型,由於新框架的設計考慮了AutoML。除了一般的機器學習任務外,ML.NET還支持AutoML。api
對於機器學習初學者,Microsoft開發人員建議從Visual Studio中的ML.NET模型構建器和任何平臺上的ML.NET CLI開始。對於能夠隨時構建模型的場景,AutoML API也很是方便。app
使用ML.NET模型構建器,只需右鍵單擊便可向應用程序添加機器學習。框架
資料來源:微軟機器學習
還引入了另外一個工具ML.NET CLI(命令行工具),它容許使用AutoML和ML.NET生成ML.NET模型。ML.NET CLI快速遍歷特定ML任務的數據集(目前支持迴歸和分類)並生成最佳模型。ide
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 。
參考