开源的,跨平台的.NET机器学习框架ML.NET
微軟在Build 2018大會(huì)上推出的一款面向.NET開(kāi)發(fā)人員的開(kāi)源,跨平臺(tái)機(jī)器學(xué)習(xí)框架ML.NET。 ML.NET將允許.NET開(kāi)發(fā)人員開(kāi)發(fā)他們自己的模型,并將自定義ML集成到他們的應(yīng)用程序中,而無(wú)需事先掌握開(kāi)發(fā)或調(diào)整機(jī)器學(xué)習(xí)模型的專業(yè)知識(shí)。在采用通用機(jī)器學(xué)習(xí)語(yǔ)言(如R和Python)開(kāi)發(fā)的模型,并將它們集成到用C#等語(yǔ)言編寫(xiě)的企業(yè)應(yīng)用程序中需要付出相當(dāng)大的努力。ML.NET填平了機(jī)器學(xué)習(xí)專家和軟件開(kāi)發(fā)者之間的差距,從而使得機(jī)器學(xué)習(xí)的平民化,即使沒(méi)有機(jī)器學(xué)習(xí)背景的人們能夠建立和運(yùn)行模型。通過(guò)為.NET創(chuàng)建高質(zhì)量的機(jī)器學(xué)習(xí)框架,微軟已經(jīng)使得將機(jī)器學(xué)習(xí)轉(zhuǎn)化為企業(yè)(或通過(guò)Xamarin移動(dòng)應(yīng)用程序)變得更容易。這是一種使機(jī)器學(xué)習(xí)更加可用的形式。
使用ML.NET可以解決哪些類型的問(wèn)題?
基于微軟內(nèi)部Windows,Bing和Azure等主要微軟產(chǎn)品使用多年的機(jī)器學(xué)習(xí)構(gòu)建的庫(kù)目前處于預(yù)覽階段,最新版本是0.2 。該框架目前支持的學(xué)習(xí)模型包括
K-Means聚類
邏輯回歸
支持向量機(jī)
樸素貝葉斯
隨機(jī)森林
增強(qiáng)樹(shù)木
其他技術(shù),如推薦引擎和異常檢測(cè),正在開(kāi)發(fā)的路線圖上。ML.NET將最終將接口暴露給其他流行的機(jī)器學(xué)習(xí)庫(kù),如TensorFlow,CNTK和Accord.NET。最后,還會(huì)有一些工具和語(yǔ)言增強(qiáng)功能,包括Azure和GUI / Visual Studio功能中的擴(kuò)展功能。
機(jī)器學(xué)習(xí)
作者:周志華
當(dāng)當(dāng) 廣告 購(gòu)買(mǎi)如何在應(yīng)用程序中使用ML.NET?
ML.NET以NuGet包的形式提供,可以輕松安裝到新的或現(xiàn)有的.NET應(yīng)用程序中。
該框架采用了用于其他機(jī)器學(xué)習(xí)庫(kù)(如scikit-learn和Apache Spark MLlib)的“管道(LearningPipeline)”方法。數(shù)據(jù)通過(guò)多個(gè)階段“傳送”以產(chǎn)生有用的結(jié)果(例如預(yù)測(cè))。典型的管道可能涉及
加載數(shù)據(jù)
轉(zhuǎn)換數(shù)據(jù)
特征提取/工程
配置學(xué)習(xí)模型
培訓(xùn)模型
使用訓(xùn)練好的模型(例如獲得預(yù)測(cè))
管道為使用機(jī)器學(xué)習(xí)模型提供了一個(gè)標(biāo)準(zhǔn)API。這使得在測(cè)試和實(shí)驗(yàn)過(guò)程中更容易切換一個(gè)模型。它還將建模工作分解為定義明確的步驟,以便更容易理解現(xiàn)有代碼。scikit-learn庫(kù)實(shí)現(xiàn)了很多機(jī)器學(xué)習(xí)算法,我們可以多多參考scikit-learn :http://sklearn.apachecn.org/cn/0.19.0/index.html?
ML.NET機(jī)器學(xué)習(xí)管道的核心組件:
ML數(shù)據(jù)結(jié)構(gòu)(例如IDataView,LearningPipeline)
TextLoader(將數(shù)據(jù)從分隔文本文件加載到LearningPipeline)
轉(zhuǎn)換(以獲得正確格式的數(shù)據(jù)進(jìn)行訓(xùn)練):
處理/特征化文本:?TextFeaturizer
架構(gòu)modifcation: ,ColumnConcatenator,ColumnSelector和ColumnDropper
使用分類特征:CategoricalOneHotVectorizer和CategoricalHashOneHotVectorizer
處理丟失的數(shù)據(jù):?MissingValueHandler
過(guò)濾器:RowTakeFilter,RowSkipFilter,RowRangeFilter
特性選擇:FeatureSelectorByCount和FeatureSelectorByMutualInformation
學(xué)習(xí)算法(用于訓(xùn)練機(jī)器學(xué)習(xí)模型)用于各種任務(wù):
二元分類:FastTreeBinaryClassifier,StochasticDualCoordinateAscentBinaryClassifier,AveragedPerceptronBinaryClassifier,BinaryLogisticRegressor,FastForestBinaryClassifier,LinearSvmBinaryClassifier,和GeneralizedAdditiveModelBinaryClassifier
多類分類:StochasticDualCoordinateAscentClassifier,LogisticRegressor,和NaiveBayesClassifier
回歸:FastTreeRegressor,FastTreeTweedieRegressor,StochasticDualCoordinateAscentRegressor,OrdinaryLeastSquaresRegressor,OnlineGradientDescentRegressor,PoissonRegressor,和GeneralizedAdditiveModelRegressor
評(píng)估器(檢查模型的工作情況):
對(duì)于二元分類:?BinaryClassificationEvaluator
對(duì)于多類分類:?ClassificationEvaluator
對(duì)于回歸:?RegressionEvaluator
在構(gòu)建機(jī)器學(xué)習(xí)模型時(shí),首先需要定義您希望通過(guò)數(shù)據(jù)實(shí)現(xiàn)的目標(biāo)。之后,您可以針對(duì)您的情況選擇正確的機(jī)器學(xué)習(xí)任務(wù)。以下列表描述了您可以選擇的不同機(jī)器學(xué)習(xí)任務(wù)以及一些常見(jiàn)用例。
二元分類
二元分類屬于?監(jiān)督學(xué)習(xí),用于預(yù)測(cè)數(shù)據(jù)的一個(gè)實(shí)例屬于哪些兩個(gè)類(類別)任務(wù)。分類算法的輸入是一組標(biāo)記示例,其中每個(gè)標(biāo)記都是0或1的整數(shù)。二進(jìn)制分類算法的輸出是一個(gè)分類器,您可以使用該分類器來(lái)預(yù)測(cè)新的未標(biāo)記實(shí)例的類。二元分類場(chǎng)景的例子包括:
將Twitter評(píng)論的情緒理解為“積極”或“消極”。
診斷患者是否患有某種疾病。
決定將電子郵件標(biāo)記為“垃圾郵件”。
如果交易日是上漲日或下跌日
手寫(xiě)數(shù)字識(shí)別
語(yǔ)音識(shí)別
圖像識(shí)別
有關(guān)更多信息,請(qǐng)參閱Wikipedia上的二元分類?文章。
多類分類
多元分類屬于?監(jiān)督學(xué)習(xí),用于預(yù)測(cè)的數(shù)據(jù)的實(shí)例的類(類別)的任務(wù)。分類算法的輸入是一組標(biāo)記示例。每個(gè)標(biāo)簽都是0到k-1之間的整數(shù),其中k是類的數(shù)量。分類算法的輸出是一個(gè)分類器,您可以使用它來(lái)預(yù)測(cè)新的未標(biāo)記實(shí)例的類。多類分類方案的例子包括:
確定一只狗的品種為“西伯利亞雪橇犬”,“金毛獵犬”,“貴賓犬”等。
將電影評(píng)論理解為“正面”,“中性”或“負(fù)面”。
將酒店評(píng)論歸類為“位置”,“價(jià)格”,“清潔度”等。
有關(guān)更多信息,請(qǐng)參閱Wikipedia上的多類分類文章。
分類步驟設(shè)置:
首先定義問(wèn)題
然后,您將以名為Features的數(shù)字屬性的形式表示您的數(shù)據(jù)。這對(duì)于已經(jīng)分類的訓(xùn)練數(shù)據(jù)和將來(lái)需要分類的測(cè)試數(shù)據(jù)都是這樣做的
您將獲取訓(xùn)練數(shù)據(jù)并將其輸入分類算法以訓(xùn)練模型
將需要分類的新實(shí)例或采取測(cè)試數(shù)據(jù)并將其傳遞給分類器進(jìn)行分類
聚類
聚類屬于無(wú)監(jiān)督機(jī)器學(xué)習(xí),用于數(shù)據(jù)的一組實(shí)例為包含類似特征的簇的任務(wù)。聚類還可用于識(shí)別數(shù)據(jù)集中的關(guān)系,這些關(guān)系可能不是通過(guò)瀏覽或簡(jiǎn)單觀察而在邏輯上得出的。聚類算法的輸入和輸出取決于所選擇的方法。您可以采用分布、質(zhì)心、連通性或基于密度的方法。ML.NET目前支持使用K-Means聚類的基于質(zhì)心的方法。聚類場(chǎng)景的例子包括:
根據(jù)酒店選擇的習(xí)慣和特點(diǎn)了解酒店客人群體。
識(shí)別客戶群和人口統(tǒng)計(jì)信息,以幫助構(gòu)建有針對(duì)性的廣告活動(dòng)。
根據(jù)制造指標(biāo)對(duì)庫(kù)存進(jìn)行分類。
根據(jù)房屋類型,價(jià)值和地理位置確定一組房屋
地震震中確定危險(xiǎn)區(qū)域
使用集群將電話塔放在一個(gè)新城市中,以便所有用戶都能獲得最佳單一強(qiáng)度
聚類設(shè)置步驟:
你會(huì)從問(wèn)題陳述開(kāi)始,問(wèn)題陳述是需要聚集的數(shù)據(jù)集
然后,您將使用功能在該數(shù)據(jù)集中表示點(diǎn)。
這里沒(méi)有訓(xùn)練這一步,不需要學(xué)習(xí)
您直接將數(shù)據(jù)提供給聚類算法以查找最終的聚類,而無(wú)需任何訓(xùn)練步驟
回歸
回歸是?監(jiān)督的機(jī)器學(xué)習(xí),用于從一組相關(guān)的功能預(yù)測(cè)標(biāo)簽的值。標(biāo)簽可以具有任何實(shí)際價(jià)值,并且不像分類任務(wù)那樣來(lái)自有限的一組值。回歸算法對(duì)標(biāo)簽對(duì)其相關(guān)特征的依賴性進(jìn)行建模,以確定標(biāo)簽隨著特征值的變化而如何變化。回歸算法的輸入是一組具有已知值標(biāo)簽的示例。回歸算法的輸出是一個(gè)函數(shù),您可以使用該函數(shù)來(lái)預(yù)測(cè)任何新的輸入要素集的標(biāo)注值。回歸情景的例子包括:
根據(jù)房屋屬性(如臥室數(shù)量,位置或大小)預(yù)測(cè)房?jī)r(jià)。
根據(jù)歷史數(shù)據(jù)和當(dāng)前市場(chǎng)趨勢(shì)預(yù)測(cè)未來(lái)股價(jià)。
根據(jù)廣告預(yù)算預(yù)測(cè)產(chǎn)品的銷售情況。
異常檢測(cè)(即將推出)
排名(即將推出)
推薦(即將推出)
原文地址: https://www.cnblogs.com/shanyou/p/9190701.html
.NET社區(qū)新聞,深度好文,歡迎訪問(wèn)公眾號(hào)文章匯總 http://www.csharpkit.com
總結(jié)
以上是生活随笔為你收集整理的开源的,跨平台的.NET机器学习框架ML.NET的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 关于Visual Studio 2019
- 下一篇: 微软推出Visual Studio Ku