ML.NET相關資源整理

??在人工智能領域,無論是機器學習,還是深度學習等,Python編程語言都是絕對的主流,盡管底層都是C++實現的,似乎人工智能和C#/F#編程語言沒什么關系。在人工智能的工程實現,通常都是將Python訓練好的人工智能模型封裝為REST API,以供其它的系統調用。雖然C#也確實天生就不合適搞人工智能的訓練等,但是通過ML.NET這個開放源代碼的跨平臺機器學習框架,可以很容易的將人工智能集成到Web、移動、桌面、游戲和物聯網應用中。這篇文章主要總結ML.NET的相關學習資源。

一.ML.NET模型生成器和CLI

??什么是機器學習呢?它的本質就是發現數據中的模式,模式以模型為載體,從而預測新的數據。通常會經過模型的選擇,數據的清洗,數據的加載,模型訓練,模型評估,模型測試,模型部署等幾個階段。但是,根據實際情況選擇合適的模型,以及對數據的清洗都很是需要經驗的。
1.ML.NET模型生成器
??模型生成器(Model Builder)算是一個低代碼的機器學習平臺,可以通過圖形界面實現數據加載、模型訓練、模型評估和模型部署等功能,并且還支持強大的AutoML,從而可以獲得最適合解決方案的模型。相當于是極大的降低了人工智能模型的訓練門檻。60294ea5233443922f493bcb25135fdf.gif2.ML.NET CLI
??除了模型生成器外,還提供了ML.NET CLI這個.NET Core工具。可為其指定一個機器學習任務和一個訓練數據集,而它將生成一個ML.NET模型以及要運行的C#代碼,以便在應用程序中使用該模型。

二.ML.NET中的機器學習任務

1.二元分類任務
二元分類是有監督學習,顧名思義就是有2個類別的分類任務。訓練器如下:

AveragedPerceptronTrainer
SdcaLogisticRegressionBinaryTrainer
SdcaNonCalibratedBinaryTrainer
SymbolicSgdLogisticRegressionBinaryTrainer
LbfgsLogisticRegressionBinaryTrainer
LightGbmBinaryTrainer
FastTreeBinaryTrainer
FastForestBinaryTrainer
GamBinaryTrainer
FieldAwareFactorizationMachineTrainer
PriorTrainer
LinearSvmTrainer

2.多類分類任務
多類分類是有監督學習,顧名思義就是有多個類別的分類任務。訓練器如下:

LightGbmMulticlassTrainer
SdcaMaximumEntropyMulticlassTrainer
SdcaNonCalibratedMulticlassTrainer
LbfgsMaximumEntropyMulticlassTrainer
NaiveBayesMulticlassTrainer
OneVersusAllTrainer
PairwiseCouplingTrainer

3.回歸測試任務
回歸就是從一組相關特征中預測標簽值。訓練器如下:

LbfgsPoissonRegressionTrainer
LightGbmRegressionTrainer
SdcaRegressionTrainer
OlsTrainer
OnlineGradientDescentTrainer
FastTreeRegressionTrainer
FastTreeTweedieTrainer
FastForestRegressionTrainer
GamRegressionTrainer

4.聚類分析任務
聚類分析是無監督學習,簡單理解就是從沒有標簽的數據中心,發現數據的模式種類。訓練器如下:

KMeansTrainer

5.異常檢測任務
異常檢測就是對罕見事件的預測,比如地震預測等。訓練器如下:

RandomizedPcaTrainer

6.排序任務
排序就是對數據記錄進行排名,比如看到的搜索引擎中的搜索條目。訓練器如下:

LightGbmRankingTrainer
FastTreeRankingTrainer

7.推薦任務
就是推薦算法,比如推薦User、Item和Tag等,在電商、社交、短視頻中等都有廣泛的應用。訓練器如下:

MatrixFactorizationTrainer

8.預測任務
使用過去的時序數據來預測將來的行為。比如,天氣預測、季節性銷售預測和預測維護等。訓練器如下:

ForecastBySsa

9.圖像分類任務
圖像分類是有監督學習,就是從有標記的圖像中訓練模型,然后預測圖像的類別。訓練器如下:

ImageClassificationTrainer

10.物體檢測任務
就是圖片對象的檢測,比如車牌、行人、紅綠燈等。不過目前對象檢測模型訓練僅適用于使用Azure機器學習的Model Builder。

三.ML.NET API v1.7.0[1]

1.Microsoft.Extensions.MLNamespace
解析:用于擴展ML.NET API的實用工具,包括預測引擎池。

2.Microsoft.MLNamespace
解析:ML.NET的主命名空間。包含應用程序和操作上下文、轉換器和訓練器目錄以及用于數據視圖處理的組件。

3.Microsoft.ML.CalibratorsNamespace
解析:包含用于二元分類校準的組件的命名空間。

4.Microsoft.ML.DataNamespace
解析:包含數據加載和保存、數據架構定義和模型訓練指標組件的命名空間。

5.Microsoft.ML.RuntimeNamespace
解析:包含ML.NET運行時所需的類型的命名空間。

6.Microsoft.ML.TimeSeriesNamespace
解析:包含時間序列相關模型的命名空間。

7.Microsoft.ML.TrainersNamespace
解析:包含訓練程序、模型參數和實用工具的命名空間。

8.Microsoft.ML.Trainers.FastTreeNamespace
解析:包含快速樹算法的訓練程序、模型參數和實用工具的命名空間。

9.Microsoft.ML.Trainers.LightGbmNamespace
解析:包含LightGBM算法的訓練程序、模型參數和實用工具的命名空間。

10.Microsoft.ML.TransformsNamespace
解析:包含數據轉換組件的命名空間。

11.Microsoft.ML.Transforms.ImageNamespace
解析:包含圖像加載和轉換組件的命名空間。

12.Microsoft.ML.Transforms.OnnxNamespace
解析:包含ONNX模型加載和轉換組件的命名空間。

13.Microsoft.ML.Transforms.TextNamespace
解析:包含文本數據轉換組件的命名空間。

14.Microsoft.ML.Transforms.TimeSeriesNamespace
解析:包含時序數據轉換組件的命名空間。

15.Microsoft.ML.VisionNamespace
解析:包含圖像分類組件的命名空間。

四.ML.NET官方例子

1.情緒分析
解析:演示如何使用ML.NET應用二元分類任務。

2.GitHub問題分類
解析:演示如何使用ML.NET應用多類分類任務。

3.價格預測器
解析:演示如何使用ML.NET應用回歸任務。

4.Iris聚類分析
解析:演示如何使用ML.NET應用聚類分析任務。

5.推薦
解析:根據以前的用戶評級生成影片推薦

6.圖像分類
解析:展示了如何將現有TensorFlow模型重新訓練為使用ML.NET創建自定義圖像分類器。

7.異常檢測
解析:演示如何構建針對產品銷售數據分析的異常檢測應用程序。

8.檢測圖像中的對象
解析:演示如何使用預先訓練的ONNX模型檢測圖像中的對象。

9.對電影評論的情緒分類
解析:了解加載預訓練的TensorFlow模型,對電影評論的情緒分類。

五.F#編程語言

??最后再提下F#編程語言,C#語言就不用說了,F#是C#的同門師兄弟了,并且極其擅長算法和并行編程,關鍵是可以無縫訪問所有的第三方.NET庫和工具。不過遺憾的是,可能F#太高端了,在我的周圍沒有見過一個人使用,但是并不能否定F#是一門優秀的編程語言。
??在ML.NET中,不僅可以使用C#編程語言,還可以使用F#編程語言,但是F#的語法還是比較復雜的,可參考的資料[11][12][13]也很少。網上就找到了一本中文的F#書籍《F#語言程序設計》[17],其它的基本都是英文的。如果感興趣可以下載,嘗試下F#編程語言,說不定會有新的驚喜。接下來計劃對ML.NET做一個系列的講解,但是更新不會太快。

參考文獻:
[1]ML.NET API參考:https://docs.microsoft.com/zh-cn/dotnet/api/
[2]ML.NET文檔:https://docs.microsoft.com/zh-cn/dotnet/machine-learning/
[3]ML.NET教程:https://docs.microsoft.com/zh-cn/dotnet/machine-learning/tutorials/
[4]dotnet/machinelearning-samples:https://github.com/dotnet/machinelearning-samples
[5]SciSharp STACK:https://github.com/SciSharp
[6]SciSharp/TensorFlow.NET:https://github.com/SciSharp/TensorFlow.NET
[7]Azure機器學習文檔:https://docs.microsoft.com/zh-cn/azure/machine-learning/
[8]Azure認知服務文檔:https://docs.microsoft.com/zh-cn/azure/cognitive-services/
[9].NET for Apache Spark文檔:https://docs.microsoft.com/zh-cn/dotnet/spark/
[10].NET文檔:https://docs.microsoft.com/zh-cn/dotnet/
[11]FsLab:https://fslab.org/tutorials.html
[12]F#文檔:https://docs.microsoft.com/zh-cn/dotnet/fsharp/
[13]F#軟件基金:https://fsharp.org/
[14]Q&A ML.NET:https://docs.microsoft.com/en-us/answers/topics/dotnet-mlnet.html
[15]Machine Learning at Microsoft with ML.NET:https://arxiv.org/pdf/1905.05715.pdf
[16]機器學習重要術語詞匯表:https://docs.microsoft.com/zh-cn/dotnet/machine-learning/resources/glossary
[17]《F#語言程序設計》:https://url39.ctfile.com/f/2501739-627693806-97f8da?p=2096 (訪問密碼: 2096)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/284205.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/284205.shtml
英文地址,請注明出處:http://en.pswp.cn/news/284205.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

帶參數的宏替換

帶參數的宏替換因各種需求疊加,替換規則很怪異: 1、首先將實參替換形參,并展開宏 2、如果1步展開后,有#或者##,那么停止替換。 3、如果1步展開后,沒有#或者##,且參數也是宏,那么繼續…

JAVA學習日志(7-1-繼承)

為什么80%的碼農都做不了架構師?>>> 繼承 1.提高代碼復用性 2.讓類與類之間產生關系,有了這個關系才有了多態的特性 **不要為了獲取其他類的功能,簡化代碼而繼承, 必須是類與類之間有所屬關系才可以繼承,所…

BZOJ 1370: [Baltic2003]Gang團伙 [并查集 拆點 | 種類并查集WA]

題意: 朋友的朋友是朋友,敵人的敵人是朋友;朋友形成團伙,求最多有多少團伙 種類并查集WA了一節課,原因是,只有那兩種關系才成立,諸如朋友的敵人是朋友之類的都不成立! 所以拆點做吧 …

常見Lidar點云數據處理及可視化軟件匯總

常見的點云處理及可視化軟件有: CloudCompare、Globalmapper、Pix4d、ArcGIS(Pro)、Lidar 360、PCL等等。 文章目錄1. CloudCompare2. Globalmapper3. Pix4d4. ArcGIS(Pro)5. Lidar 3606. PCL1. CloudCompare CloudCo…

Spring 自帶工具類匯總

斷言 斷言是一個邏輯判斷,用于檢查不應該發生的情況 Assert 關鍵字在 JDK1.4 中引入,可通過 JVM 參數-enableassertions開啟 SpringBoot 中提供了 Assert 斷言工具類,通常用于數據合法性檢查 // 要求參數 object 必須為非空(Not…

解決new Thread().Start導致高并發CPU 100%的問題

背景之前接手一個項目的時候,發現到處是new Thread(()>{ //do something }).Start();這么做的目的,無非是為了減少頁面等待時間提高用戶體驗,把一些浪費時間的操作放到新線程中在后臺運行。問題但是這樣帶來的問題是大量的創建線程&#x…

基于 HTML5 Canvas 繪制的電信網絡拓撲圖

電信網結構(telecommunication network structure)是指電信網各種網路單元按技術要求和經濟原則進行組合配置的組合邏輯和配置形式。組合邏輯描述網路功能的體系結構,配置形式描述網路單元的鄰接關系,即以交換中心(或節…

網絡相關配置,SSH服務,bash, 元字符

作業一:臨時配置網絡(ip,網關,dns)永久配置 設置IP和掩碼ifconfig eth0 192.168.2.2 netmask 255.255.255.0設置網關route add default gw 192.168.2.10[rootbogon ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0…

【GlobalMapper精品教程】021:利用控制點校正柵格圖像

本文講解GlobalMapper中利用控制點校正柵格圖像的方法,數據為配套實驗數據包中的data021.rar。 文章目錄 一、結果預覽二、校正過程【推薦閱讀】:ArcGIS實驗教程——實驗二:ArcGIS地理配準完整操作步驟 一、結果預覽 二、校正過程 (1)打開圖像。選擇實驗包中的待校正的柵…

[筆記]提升R的性能和突破內存限制的技巧

本文為雪晴數據網《R語言大規模數據分析實戰》 http://www.xueqing.tv/course/56 的課程學習筆記。 該課程目前更新到“第2章 Microsoft R Server簡介”的微軟數據科學家介紹MRS,后續教學主要是關于MRS的內容,再另外學習,所以本文只學習“第1…

WTM:ASP.NET Core快速開發利器!

不少程序員朋友應該都有這個想法,接接私活,賺賺外快,但是從零開發一套系統并不容易,今天給大家推薦一款開箱即用的通用后臺管理系統。一個能夠讓程序猿快速開發的炒雞腳手架,采用.NET Core開源框架!github地…

【CloudCompare教程】002:點云繪制模式詳解

文章目錄 1. 按高程著色2. 按索引著色3. 按漸變著色1. 按高程著色 在內容列表中選中點云圖層,點擊【編輯】→【標量領域】→【將坐標導出到SF】。 勾選Z,點擊OK。 高程著色效果: 2. 按索引著色 點擊【編輯】→【標量領域】→【添加點指數為SF】。 索引著色效果:

《首席產品官》成海清 著 圖書目錄 思維導圖

原文檔地址:《首席產品官》成海清

「每天一道面試題」如何理解方法的重載與覆蓋?

方法重載在同一個Java 類中(包含父類),如果出現了方法名稱相同,而參數列表不同的情況就叫做重載。方法的重載的規則:(1):方法名稱必須相同(2):參數…

day63-webservice 01.cxf介紹

CXF功能就比較強了。CXF支持soap1.2。CXF和Spring整合的非常密切。它的配置文件基本就是Spring的配置文件了。CXF是要部署在服務器才能用的。CXF得放到Web容器里面去發布。CXF就可以整合咱們的Web容器。 cxf-2.4.0解壓出來之后 apache-cxf-2.4.2是核心包,apache-cxf-2.4.4-src是…

Java中的static關鍵字解析

static關鍵字是很多朋友在編寫代碼和閱讀代碼時碰到的比較難以理解的一個關鍵字,也是各大公司的面試官喜歡在面試時問到的知識點之一。下面就先講述一下static關鍵字的用法和平常容易誤解的地方,最后列舉了一些面試筆試中常見的關于static的考題。以下是…

微信公眾號授權登錄后報redirect_uri參數錯誤的問題

在進行微信公眾號二次開發的時候,需要通過授權碼模式來進行微信授權。比如,在進行登錄的時候,用戶點擊了登錄按鈕,然后彈出一個授權框,用戶點擊同意后,就可以獲取用戶的OpenId等信息了。這篇文章主要分享下…

【GlobalMapper精品教程】022:根據一個字段屬性值批量計算另一個字段屬性值(地類名稱求地類編碼)

項目中通常需要根據一個字段屬性值的不同,批量計算另一個字段屬性值(如根據地類名稱求地類編碼),根據權屬地物名稱給權屬地物編碼批量賦值等,本文講解在屬性表中根據代碼批量實現方法。 參考閱讀: 【ArcGIS風暴】ArcGIS 10.2字段計算器(Field Calculator)批量條件賦值用…

[轉]【讀書筆記】《俞軍產品方法論》——產品經理的枕邊書

作者簡介 俞軍,1997年畢業于同濟大學化學系。曾任百度產品副總裁、首席產品架構師,網名“搜索引擎9238”,有“百度貼吧之父”之稱。滴滴前高級產品副總裁。 內容簡介 摘抄語錄 我的產品潛力和優勢大約只來自三方面:第一&#xff0…