原文地址:https://devblogs.microsoft.com/dotnet/announcing-ml-net-1-0/
我們很高興地宣布今天發布ML.NET 1.0 。 ML.NET是一個免費的,跨平台的開源機器學習框架,旨在將機器學習(ML)的強大功能引入.NET應用程序。
https://github.com/dotnet/machinelearning
ML.NET允許您使用C#或F#訓練,構建和發布自定義機器學習模型,用於情景分析,問題分類,預測,推薦等場景。您可以在我們的ML.NET示例倉庫中查看這些常見的場景和任務 。
ML.NET最初是在微軟研究院開發的,並且演變成許多Microsoft產品使用的重要框架,例如Windows Defender,Microsoft Office(Powerpoint設計靈感,Excel圖表推薦),Azure機器學習,PowerBI關鍵影響者等等!
自從推出以來,許多組織都在使用ML.NET,如SigParser(垃圾郵件檢測), William Mullens(法律問題分類)和Evolution軟件(榛子水分檢測)。您可以在我們的ML.NET客戶展示中使用ML.NET跟蹤這些和許多其他組織的旅程。這些用戶告訴我們,ML.NET的易用性,重用.NET技能的能力以及將其技術堆棧完全保留在.NET中是他們使用ML.NET的主要驅動因素。
除了ML.NET 1.0版本,我們還添加了新的預覽功能,如自動機器學習(AutoML)的強大功能和ML.NET CLI和ML.NET Model Builder等新工具,這意味着現在可以只需點擊右鍵就可以為您的應用程序添加機器學習模型!
ML.NET核心組件
ML.NET旨在提供終端工作流程,以便在機器學習(預處理,特征工程,建模,評估和操作)的各個步驟中將ML用於.NET應用程序。ML.NET 1.0提供以下關鍵組件:
- 數據表示
- 基本ML數據管道數據類型,如IDataView - 基本數據管道類型
- 支持從分隔文本文件或IEnumerable對象中讀取數據
- 支持機器學習任務:
- 二進制分類
- 多級分類
- 回歸
- 排行
- 異常檢測
- 聚類
- 推薦(預覽)
- 數據轉換和特色化
- 文本
- 分類
- 特征選擇
- 規范化和缺失值處理
- 圖像特征化
- 時間序列(預覽)
- 支持ONNX和TensorFlow模型集成(預覽)
- 其他
- 模型理解和解釋
- 用戶定義的自定義轉換
- 架構操作
- 支持數據集操作和交叉驗證
自動機器學習預覽
如今,機器學習入門涉及陡峭的學習曲線。在構建自定義機器學習模型時,您必須確定為您的場景選擇哪個機器學習任務(即分類或回歸?),將您的數據轉換為ML算法可以理解的格式(例如文本數據 - >數字向量),並微調這些ML算法以提供最佳性能。如果您是ML的新手,這些步驟中的每一步都會非常艱巨!
自動機器學習通過自動確定如何轉換輸入數據並選擇性能最佳的機器學習算法,使您能夠輕松構建一流的自定義機器學習模型,使您的機器學習之旅更加簡單。
ML.NET中的AutoML支持處於預覽階段,我們目前支持回歸(用於價格預測等場景)和分類(用於情感分析,文檔分類,垃圾郵件檢測等場景)機器學習任務。
您可以使用ML.NET Model Builder,ML.NET CLI或直接使用AutoML API (可在此處找到例子),以三種形式在ML.NET中試用AutoML體驗。
對於不熟悉機器學習的用戶,我們建議從Visual Studio中的ML.NET模型構建器和任何平台上的ML.NET CLI開始。AutoML API對於您想要動態構建模型的場景也非常方便。
模型生成器預覽
為了簡化.NET開發人員構建ML模型的過程,我們今天也很高興地宣布ML.NET模型構建器。使用ML.NET模型構建器,只需右鍵單擊即可將機器學習添加到您的應用程序中!
Model Builder是一個簡單的UI工具,供開發人員使用AutoML使用您提供的數據集構建最佳的ML模型。除此之外,Model Builder還為最佳性能模型生成模型培訓和模型消耗代碼,允許您快速將ML添加到現有應用程序中。
Model Builder目前處於預覽階段,我們很樂意為您試用並告訴我們您的想法!
ML.NET CLI預覽
ML.NET CLI(命令行界面)是我們今天推出的另一個新工具!
ML.NET CLI是一個dotnet工具,允許使用AutoML和ML.NET生成ML.NET模型。ML.NET CLI快速遍歷您的數據集以獲取特定的ML任務(目前支持回歸和分類)並生成最佳模型。
CLI除了生成最佳模型外,還允許用戶為最佳性能模型生成模型培訓和模型消耗代碼。
ML.NET CLI是跨平台的,是.NET CLI的簡單附件。Model Builder Visual Studio擴展還使用ML.NET CLI提供模型構建器功能。
您可以通過此命令安裝ML.NET CLI。
dotnet tool install -g mlnet
下圖顯示了ML.NET CLI構建情感分析數據集。
ML.NET CLI目前也處於預覽狀態,我們很樂意為您提供試用,並在下面分享您的想法!
開始吧!
如果你還沒有,開始使用ML.NET很簡單,你可以通過幾個簡單的步驟來完成,如下所示。下面的示例顯示了如何使用ML.NET執行情緒分析。
//Step 1. Create a ML Context
var ctx = new MLContext();
//Step 2. Read in the input data for model training
IDataView dataReader = ctx.Data
.LoadFromTextFile<MyInput>(dataPath, hasHeader: true);
//Step 3. Build your estimator
IEstimator<ITransformer> est = ctx.Transforms.Text
.FeaturizeText("Features", nameof(SentimentIssue.Text))
.Append(ctx.BinaryClassification.Trainers
.LbfgsLogisticRegression("Label", "Features"));
//Step 4. Train your Model
ITransformer trainedModel = est.Fit(dataReader);
//Step 5. Make predictions using your model
var predictionEngine = ctx.Model
.CreatePredictionEngine<MyInput, MyOutput>(trainedModel);
var sampleStatement = new MyInput { Text = "This is a horrible movie" };
var prediction = predictionEngine.Predict(sampleStatement);
您還可以探索各種其他學習資源,如ML.NET的教程和資源,以及ML.NET示例,演示產品推薦,異常檢測和更多實際操作等流行方案。
ML.NET的下一步是什么
雖然我們非常高興今天發布ML.NET 1.0,但團隊已經在努力為ML.NET 1.0版發布以下功能。
- 其他機器學習場景的AutoML體驗
- 改進了對深度學習場景的支持
- 支持其他其他來源,如SQL Server,CosmosDB,Azure Blob存儲等。
- 在Azure上橫向擴展以進行模型培訓和消費
- 使用模型構建器和CLI時,支持其他ML方案和功能
- 用於Apache Spark和ML.NET的.NET大規模機器學習的本機集成
- .NET中的新ML類型,例如DataFrame
你幫忙建了它
特別呼吁這些令人驚嘆的貢獻者,他們與我們一起開始使用ML.NET為.NET開發人員提供機器學習。
amiteshenoy, beneyal, bojanmisic, Caraul, dan-drews, DAXaholic, dhilmathy, dzban2137, elbruno, endintiers, f1x3d,feiyun0112, forki, harshsaver,
helloguo, hvitved, Jongkeun, JorgeAndd, JoshuaLight, jwood803, kant2002, kilick, Ky7m,llRandom, malik97160, MarcinJuraszek, mareklinka,
Matei13, mfaticaearnin, mnboos, nandaleite, Nepomuceno nihitb06,Niladri24dutta, PaulTFreedman, Pielgrin, pkulikov, Potapy4, Racing5372,
rantri, rantri, rauhs, robosek, ross-p-smith, SolyarA,Sorrien, suhailsinghbains, terop, ThePiranha, Thomas-SB, timitoc, tincann, v-tsymbalistyi,
van-tienhoang, veikkoeeva和yamachu
如果您還沒有,請試試ML.NET!
您的反饋對於我們幫助塑造ML.NET並使.NET成為機器學習的絕佳平台至關重要。
謝謝,
ML.NET團隊