c#機器學習開發者的福音,ML.NET

c#機器學習開發者的福音,ML.NET

目前的機器學習框架很多,TensorFlow更是其中最熱門的機器框架。但是,適合C#開發者的機器學習框架卻不多,TensorFlow雖然有TensorFlowSharp供C#開發者來寫TensorFlow程序,但是按照GitHub的例子寫卻一直報錯。

但是微軟在Build 2018大會上興奮地宣布了ML.NET的預覽版,這是一種跨平台的開源機器學習框架。ML.NET將讓廣大.NET開發人員可以開發自己的模型,並且將自定義的機器學習融入到其應用程序中,無需之前擁有開發或調整機器學習模型方面的專業知識。

ML.NET首先是一個框架,這意味著它經擴展後可以添加流行的機器學習庫,ML.NET將充分利用流行的深度學習庫(比如TensorFlow、Caffe2和CNTK)以及一般的機器學習庫(比如Accord.NET),從而支持其他機器學習場景,比如推薦系統、異常檢測及其他方法(比如深度學習)。

今天小編測試編寫了鳶尾花的分類示例,真的好寫的感動到哭。

// 步驟2:創建管道並載入數據 var pipeline = new LearningPipeline(); // 如果在VisualStudio中工作,請確保IrIS-DATA.TXT的「複製到輸出目錄」屬性設置為「始終複製」。 string dataPath = "iris-data.txt"; pipeline.Add(new TextLoader<IrisData>(dataPath, separator: ",")); // 第3步:轉換數據 // 將數值分配給「標籤」列中的文本,因為只有在模型訓練過程中才能處理數字。 pipeline.Add(new Dictionarizer("Label")); // 將所有特徵放入向量中 pipeline.Add(new ColumnConcatenator("Features", "SepalLength", "SepalWidth", "PetalLength", "PetalWidth")); // 第4步:增加學習者 // 將學習演算法添加到流水線中。 // 這是一個分類場景(這是什麼類型的鳶尾花?) pipeline.Add(new StochasticDualCoordinateAscentClassifier()); // 將標籤轉換為原始文本(在步驟3中轉換為數字) pipeline.Add(new PredictedLabelColumnOriginalValueConverter() { PredictedLabelColumn = "PredictedLabel" }); // 第5步:根據數據集訓練模型 var model = pipeline.Train<IrisData, IrisPrediction>(); // 第6步:使用你的模型進行預測 // 你可以改變這些數字來測試不同的預測。 var prediction = model.Predict(new IrisData() { SepalLength = 3.3f, SepalWidth = 1.6f, PetalLength = 0.2f, PetalWidth = 5.1f, }); Console.WriteLine($"Predicted flower type is: {prediction.PredictedLabels}");

通過這段代碼,我覺得有點像用rapidminer的感覺,對於初級開發者來說,來給成功例子,比直接上來就手寫訓練模型來的簡單,而且容易成功!我相信,ML.NET陸續的也會開放自定義訓練模型,現在就一直在GitHub上跟蹤學習。

推薦閱讀:

[學習筆記] Long Short-Term Memory
7本書帶你掌握數據科學中的數學基礎(附下載)
邁克爾 · 喬丹:我討厭將機器學習稱為AI

TAG:機器學習 | 深度學習DeepLearning | 神經網路 |