1. 程式人生 > >.NET平臺開源專案速覽(13)機器學習元件Accord.NET框架功能介紹

.NET平臺開源專案速覽(13)機器學習元件Accord.NET框架功能介紹

    Accord.NET Framework是在AForge.NET專案的基礎上封裝和進一步開發而來。因為AForge.NET更注重與一些底層和廣度,而Accord.NET Framework更注重與機器學習演算法以及提供計算機視訊、音訊、訊號處理以及統計應用相關的解決方案。該專案使用C#語言編寫,專案主頁:

    說明:該文章只是一個基本介紹,主要內容是翻譯的官方文件和介紹,部分英文表述個人能力有限,不太熟悉,所以直接照搬原文,有比較確切的知道中文名稱的可以提醒一些我,非常感。本人將使用該元件進行一些簡單的資料探勘和機器學習任務,過程和程式碼都將發表在本部落格,有興趣的可以關注。

1.
基本功能與介紹

    Accord.NET為.NET應用程式提供了統計分析、機器學習、影象處理、計算機視覺相關的演算法。Accord.NET框架擴充套件了AForge.NET框架,提供了一些新功能。同時為.NET環境下的科學計算提供了一個完整的開發環境。該框架被分成了多個程式集,可以直接從官網下載安裝檔案或者使用NuGet得到。可以參考以下連結:https://github.com/accord-net/framework/wiki

1.1 框架的三大功能模組

Accord.NET框架主要有三個大的功能性模組。分別為科學技術,訊號與影象處理,支援元件。下面將對3個模型的名稱空間和功能進行簡單介紹。可以讓大家更快的接觸和了解其功能是否是自己想要的,下面是主要的名稱空間介紹。

1.1.1 科學計算

Accord.Math:包括矩陣擴充套件程式,以及一組矩陣數值計算和分解的方法,也包括一些約束和非約束問題的數值優化演算法,還有一些特殊函式以及其他一些輔助工具。

Accord.Statistics:包含概率分佈、假設檢驗、線性和邏輯迴歸等統計模型和方法,隱馬爾科夫模型,(隱藏)條件隨機域、主成分分析、偏最小二乘判別分析、核心方法和許多其他相關的技術。

Accord.MachineLearning: 為機器學習應用程式提供包括支援向量機,決策樹,樸素貝葉斯模型,k-means聚類演算法,高斯混合模型和通用演算法如Ransac,交叉驗證和網格搜尋等演算法。

Accord.Neuro

:包括大量的神經網路學習演算法,如Levenberg-Marquardt,Parallel Resilient Backpropagation,Nguyen-Widrow初始化演算法,深層的信念網路和許多其他神經網路相關的演算法。具體看參考幫助文件。

1.1.2 訊號與影象處理

Accord.Imaging:包含特徵點探測器(如Harris, SURF, FAST and  FREAK),影象過濾器、影象匹配和影象拼接方法,還有一些特徵提取器。

Accord.Audio:包含一些機器學習和統計應用程式說需要的處理、轉換過濾器以及處理音訊訊號的方法。

Accord.Vision:實時人臉檢測和跟蹤,以及對人流影象中的一般的檢測、跟蹤和轉換方法,還有動態模板匹配追蹤器。

1.1.3 支援元件

主要是為上述一些元件提供資料顯示,繪圖的控制元件,分為以下幾個名稱空間:

Accord.Controls:包括科學計算應用程式常見的柱狀圖、散點圖和表格資料瀏覽。

Accord.Controls.Imaging:包括用來顯示和處理的影象的WinForm控制元件,包含一個方便快速顯示影象的對話方塊。 

Accord.Controls.Audio:顯示波形和音訊相關性資訊的WinForm控制元件。

Accord.Controls.Vision:包括跟蹤頭部,臉部和手部運動以及其他計算機視覺相關的任務WinForm控制元件。

1.2 支援的演算法介紹

下面將Accord.NET框架包括的主要功能演算法按照類別進行介紹。來源主要是官網介紹,進行了簡單的翻譯和整理。

1.2.1 分類(Classification)

SVM(支援向量機)、Logistic Regression(邏輯迴歸)、Decision Trees(決策樹)、 Neural Networks(神經網路)、Deep Learning(深度學習)(Deep Neural Networks深層神經網路)、Levenberg-Marquardt with Bayesian Regularization、Restricted Boltzmann Machines(限制玻耳茲曼機)、Sequence classification (序列分類),Hidden Markov Classifiers and Hidden Conditional Random Fields(隱馬爾科夫分類器和隱藏條件隨機域)。

1.2.2 迴歸(Regression)

Multiple linear regression(多元線性迴歸-單因變數多自變數)、Multivariate linear regression(多元線性迴歸-多因變數多自變數)、polynomial regression (多項式迴歸)、logarithmic regression(對數迴歸)、Logistic regression(邏輯迴歸)、multinomial logistic regression(多項式邏輯迴歸)(softmax) and generalized linear models(廣義線性模型)、L2-regularized L2-loss logistic regression , L2-regularized logistic regression , L1-regularized logistic regression , L2-regularized logistic regression in the dual form and regression support vector machines。

1.2.3 聚類(Clustering)

K-Means、K-Modes、Mean-Shift(均值漂移)、Gaussian Mixture Models(高斯混合模型)、Binary Split(二元分裂)、Deep Belief Networks(深層的信念網路)、 Restricted Boltzmann Machines(限制玻耳茲曼機)。聚類演算法可以應用於任意資料,包括影象、資料表、視訊和音訊。

1.2.4 概率分佈(Distributions)

包括40多個分佈的引數和非引數估計。包括一些常見的分佈如正態分佈、柯西分佈、超幾何分佈、泊松分佈、伯努利;也包括一些特殊的分佈如Kolmogorov-Smirnov , Nakagami、Weibull、and Von-Mises distributions。也包括多元分佈如多元正態分佈、Multinomial 、Independent 、Joint and Mixture distributions。

1.2.5 假設檢驗(Hypothesis Tests)

超過35統計假設測試,包括單向和雙向方差分析測試、非引數測試如Kolmogorov-Smirnov測試和媒體中的訊號測試。contingency table tests such as the Kappa test,with variations for multiple tables , as well as the Bhapkar and Bowker tests; and the more traditional Chi-Square , Z , F , T and Wald tests .

1.2.6 核方法(Kernel Methods)

核心支援向量機,多類和多標籤向量機、序列最小優化、最小二乘學習、概率學習。Including special methods for linear machines such as LIBLINEAR's methods for Linear Coordinate Descent , Linear Newton Method , Probabilistic Coordinate Descent , Probabilistic Coordinate Descent in the Dual , Probabilistic Newton Method for L1 and L2 machines in both the dual and primal formulations .

1.2.7 影象(Imaging)

興趣和特徵點探測器如Harris,FREAK,SURF,FAST。灰度共生矩陣,Border following,Bag-of-Visual-Words (BoW),RANSAC-based homography estimation , integral images , haralick textural feature extraction , and dense descriptors such as histogram of oriented gradients (HOG) and Local Binary Pattern (LBP).Several image filters for image processing applications such as difference of Gaussians , Gabor , Niblack and Sauvola thresholding。還有幾個影象處理中經常用到的影象過濾器。

1.2.8 音訊訊號(Audio and Signal)

音訊訊號的載入、解析、儲存、過濾和轉換,如在空間域和頻域應用音訊過濾器。WAV檔案、音訊捕捉、時域濾波器,高通,低通,波整流過濾器。Frequency-domain operators such as differential rectification filter and comb filter with Dirac's delta functions . Signal generators for Cosine , Impulse , Square signals.

1.2.9 視覺(Vision)

實時人臉檢測和跟蹤,以及影象流中檢測、跟蹤、轉換的一般的檢測方法。Contains cascade definitions , Camshift and Dynamic Template Matching trackers . Includes pre-created classifiers for human faces and some facial features such as noses。

1.3 相關資源

    從專案主頁:http://accord-framework.net/下載的“Archive”壓縮包中,包括了幾乎所有的線上資源。如下圖,介紹幾個主要的資源:

    Debug是一些用於除錯的程式集,Docs是幫助文件,Externals是一些輔助的元件,Release是不同.NET環境的Dll程式集版本,Samples是案例原始碼,Setup是安裝的程式,Sources是專案的原始碼,Unit Tests是單元測試程式碼。

Accord.NET框架原始碼託管在GitHub:

上面有大量的入門資源和教程,例如,檢視頁面右邊的列表欄切換:

相關推薦

.NET平臺開源專案(13)機器學習元件Accord.NET框架功能介紹

    Accord.NET Framework是在AForge.NET專案的基礎上封裝和進一步開發而來。因為AForge.NET更注重與一些底層和廣度,而Accord.NET Framework更注重與機器學習演算法以及提供計算機視訊、音訊、訊號處理以及統計應用相關的解決方案。該專案使用C#語言編寫,專

.NET平臺開源專案(10)FluentValidation驗證元件深入使用(二)

    在上一篇文章:.NET平臺開源專案速覽(6)FluentValidation驗證元件介紹與入門(一) 中,給大家初步介紹了一下FluentValidation驗證元件的使用情況。文章從構建間的驗證器開始,到最後的結果,以及複雜驗證等都做了比較深入的講解和使用。但其實一個完整的元件是麻雀雖小五臟俱全

.NET平臺開源專案(6)FluentValidation驗證元件介紹與入門(一)

    在文章:這些.NET開源專案你知道嗎?讓.NET開源來得更加猛烈些吧!(第二輯)中,給大家初步介紹了一下FluentValidation驗證元件。那裡只是概述了一下,並沒有對其使用和強大功能做深入研究,所以今天以及接下去的幾篇文章就專門介紹這個元件。不僅僅是它小,輕量級,優雅,而且一直在持續更新中

.NET平臺開源專案-最快的物件對映元件Tiny Mapper之專案實踐

心情小札:近期換了工作,苦逼於22:00後下班,房間一篇狼藉~ 小翠鄙視到:"你就適合生活在垃圾堆中!!!" 看評論也是挺有價值,同時也看到許多新手同學問道在實際專案中使用的情況。 下面就原作者的程式碼的基礎上略作調整,闡述一下在實際專案場景中的使用: 第一步:瞭解類庫方法:TinyMapper 主

.NET平臺開源專案(14)最快的物件對映元件Tiny Mapper

    好久沒有寫文章,工作甚忙,但每日還是關注.NET領域的開源專案。五一休息,放鬆了一下之後,今天就給大家介紹一個輕量級的物件對映工具Tiny Mapper:號稱是.NET平臺最快的物件對映元件。那就一起看看呢。 臨時更新:感謝@ 的意見,為了避免新手誤解,這裡說明一下,Tiny Mappe

.NET平臺開源專案(20)Newlife.Core中簡單靈活的配置檔案

如果用知乎,可以關注專欄: 記得5年前開始拼命翻讀X元件的原始碼,特別是XCode,但對Newlife.Core 的東西瞭解很少,最多隻是會用用,而且用到的只是九牛一毛。裡面好用的東西太多了。 最近一年時間,零零散散又學了很多,也瞭解了很多,不會寫那總要學會用吧,今天就給大家介紹裡面非常好用的自定義配置檔

.NET平臺開源專案(19)Power BI神器DAX Studio

  PowerBI更新頻繁,已經有點更不上的節奏,一直在關注和學習中,基本的一些操作大概是沒問題,更重要的是注重Power Query,M函式,以及DAX的使用,這才是核心。     上個月研究了DAX的一些語法和公式,發現這玩意看起來簡單,但其實功能非常強大,所以就想和寫程式碼一樣,弄個工具試一下。

.NET平臺開源專案(21)Cron任務排程CronNET

Quartznet大名鼎鼎應該很少有人不知道,相關的開源專案很多,不過那東東對新手來說,有點晦澀,加上哪個Cron表示式,可能一進去雲裡霧裡的。今天給大家介紹一個簡單的在.NET平臺上執行Cron計劃任務的元件CronNET。同時也給大家推介幾個Cron表示式的工具。 1.Cron介紹和工具

.NET平臺開源專案(7)關於NoSQL資料庫LiteDB的分頁查詢解決過程

  在文章:這些.NET開源專案你知道嗎?讓.NET開源來得更加猛烈些吧!(第二輯) 與 .NET平臺開源專案速覽(3)小巧輕量級NoSQL檔案資料庫LiteDB中,介紹了LiteDB的基本使用情況以及部分技術細節,我還沒有在實際系統中大量使用,但文章釋出後,有不少網友( )反應在實際專案中使用過,效果還

.NET平臺開源專案(11)KwCombinatorics排列組合使用案例(1)

    今年上半年,我在KwCombinatorics系列文章中,重點介紹了KwCombinatorics元件的使用情況,其實這個元件我5年前就開始用了,非常方便,麻雀雖小五臟俱全。所以一直非常喜歡,才寫了幾篇文章推薦給大家。最近在計算足球彩票結果組合過程中,使用的到了其功能,生成排列,非常具有代表性,而且也

.NET平臺開源專案(1)SharpConfig配置檔案讀寫元件

在.NET平臺日常開發中,讀取配置檔案是一個很常見的需求。以前都是使用System.Configuration.ConfigurationSettings來操作,這個說實話,搞起來比較費勁。不知道大家有沒有同感。所以更多時候我還是喜歡使用開源的東西,更加方便簡潔,也穩定。省去自己的麻煩。今天就介紹一個非常精緻

.NET平臺開源專案(3)小巧輕量級NoSQL檔案資料庫LiteDB

    今天給大家介紹一個不錯的小巧輕量級的NoSQL檔案資料庫LiteDB。本部落格在2013年也介紹過2款.NET平臺的開源資料庫:     上面2個數據庫我的實際的專案中用過,還不錯。當然資料量很小,主要是客戶比較變態,必須要用xml檔案儲存,就想到了,另外NDatabase只是自己覺得好玩,

.NET平臺開源專案(9)軟體序列號生成元件SoftwareProtector介紹與使用

  在文章:這些.NET開源專案你知道嗎?讓.NET開源來得更加猛烈些吧!(第二輯)中,給大家初步介紹了一下Software Protector序列號生成元件。今天就通過一篇簡單的文章來預覽一下其強大的功能。雖然我人為其已經基本滿足了一個軟體序列號的所有要素,但至於大家用不用得上,還得看大家的需求。總的來

.NET平臺開源專案(2)Compare .NET Objects物件比較元件

    .NET平臺開源專案速覽今天介紹一款小巧強大的物件比較元件。可以更詳細的獲取2個物件的差別,並記錄具體差別,比較過程和要求可以靈活配置。 1.Compare .NET Objects介紹     Compare .NET Objects元件是.NET平臺用於深入比較2個.NET物件的開源元

.NET平臺開源專案(5)深入使用與擴充套件SharpConfig元件

  上個月在文章:這些.NET開源專案你知道嗎?讓.NET開源來得更加猛烈些吧  和 .NET平臺開源專案速覽(1)SharpConfig配置檔案讀寫元件 中都提到了SharpConfig元件,簡單輕量級,速度快,而且還有比較深入的使用介紹。在文章釋出後,也有網友提到一些問題,當時我也沒仔細去分析,在這次我親

.NET平臺開源專案(8)Expression Evaluator表示式計算元件使用

  在文章:這些.NET開源專案你知道嗎?讓.NET開源來得更加猛烈些吧!(第二輯)中,給大家初步介紹了一下Expression Evaluator驗證元件。那裡只是概述了一下,並沒有對其使用和強大功能做深入研究,所以今天就通過一篇簡單的文章來預覽一下其強大的功能。本文曾在【原創】.NET開源表示式計算元

.NET平臺開源專案(4).NET文件生成工具ADB及使用

    很久以前就使用ADB這個工具來生成專案的幫助文件。功能強大,在學習一些開源專案的過程中,官方沒有提供CHM幫助文件,所以為了快速的瞭解專案結構和註釋。就生成文件來自己看,非常好用。這也是一個學習方法吧。例如本文在:   上述2篇文章中最後的資源中就手動製作了CHM幫助文件。有時候我們還可

.NET平臺開源專案(12)雜湊演算法集合類庫HashLib

    .NET的System.Security.Cryptography名稱空間本身是提供加密服務,雜湊函式,對稱與非對稱加密演算法等功能。實際上,大部分情況下已經滿足了需求,而且.NET實現的都是目前國際上比較權威的,標準化的演算法,所以還是安全可靠的。但也有一些場合,需要自己實現一些安全雜湊演算法。

.NET平臺開源專案(18)C#平臺JSON實體類生成器JSON C# Class Generator

    去年,我在一篇文章用原始方法解析複雜字串,json一定要用JsonMapper麼?中介紹了簡單的JSON解析的問題,那種方法在當時的環境是非常方便的,因為不需要生成實體類,結構很容易解析。但隨著業務的變化,也會碰到超級變態的JSON,如果還按照以前的思路,會把人搞抽風掉,一旦結構變化,又要重來。所

.NET平臺開源專案(16)C#寫PDF檔案類庫PDF File Writer介紹

    1年前,我在文章:這些.NET開源專案你知道嗎?.NET平臺開源文件與報表處理元件集合(三)中(第9個專案),給大家推薦了一個開源免費的PDF讀寫元件 PDFSharp,PDFSharp我2年前就看過,用過簡單的例子,不過程式碼沒有寫成專門的文章。最近在查詢資料的時候,又發現一款小巧的寫PDF檔案