28 款 GitHub 最流行的開源機器學習項目(附地址)

現在機器學習逐漸成為行業熱門,經過二十幾年的發展,機器學習目前也有了十分廣泛的應用,如:數據挖掘、計算機視覺、自然語言處理、生物特徵識別、搜索引擎、醫學診斷、DNA序列測序、語音和手寫識別、戰略遊戲和機器人等方面。

1. TensorFlow

  TensorFlow 是谷歌發布的第二代機器學習系統。據谷歌宣稱,在部分基準測試中,TensorFlow的處理速度比第一代的DistBelief加快了2倍之多。

  具體的講,TensorFlow是一個利用數據流圖(Data Flow Graphs)進行數值計算的開源軟體庫:圖中的節點(Nodes)代表數學運算操作,同時圖中的邊(Edges)表示節點之間相互流通的多維數組,即張量(Tensors)。這種靈活的架構可以讓使用者在多樣化的將計算部署在台式機、伺服器或者移動設備的一個或多個CPU上,而且無需重寫代碼;同時任一基於梯度的機器學習演算法均可夠借鑒TensorFlow的自動分化(Auto-differentiation);此外通過靈活的Python介面,要在TensorFlow中表達想法也變得更為簡單。

  TensorFlow最初由Google Brain小組(該小組隸屬於Google』s Machine Intelligence研究機構)的研究員和工程師開發出來的,開發目的是用於進行機器學習和深度神經網路的研究。但該系統的通用性足以使其廣泛用於其他計算領域。

  目前Google 內部已在大量使用 AI 技術,包括 Google App 的語音識別、Gmail 的自動回復功能、Google Photos 的圖片搜索等都在使用 TensorFlow 。

  開發語言:C++

  許可協議:Apache License 2.0

  GitHub項目地址: github.com/tensorflow/

2. Scikit-Learn

  Scikit-Learn是用於機器學習的Python 模塊,它建立在SciPy之上。該項目由David Cournapeau 於2007年創立,當時項目名為Google Summer of Code,自此之後,眾多志願者都為此做出了貢獻。

  主要特點:

  操作簡單、高效的數據挖掘和數據分析

  無訪問限制,在任何情況下可重新使用

  建立在NumPy、SciPy 和 matplotlib基礎上

  Scikit-Learn的基本功能主要被分為六個部分:分類、回歸、聚類、數據降維、模型選擇、數據預處理,具體可以參考官方網站上的文檔。經過測試,Scikit-Learn可在 Python 2.6、Python 2.7 和 Python 3.5上運行。除此之外,它也應該可在Python 3.3和Python 3.4上運行。

  註:Scikit-Learn以前被稱為Scikits.Learn。

  開發語言:Python

  許可協議:3-Clause BSD license

  GitHub項目地址: github.com/scikit-lear

3. Caffe

  Caffe 是由神經網路中的表達式、速度、及模塊化產生的深度學習框架。後來它通過伯克利視覺與學習中心(BVLC)和社區參與者的貢獻,得以發展形成了以一個伯克利主導,然後加之Github和Caffe-users郵件所組成的一個比較鬆散和自由的社區。

  Caffe是一個基於C++/CUDA架構框架,開發者能夠利用它自由的組織網路,目前支持卷積神經網路和全連接神經網路(人工神經網路)。在Linux上,C++可以通過命令行來操作介面,對於MATLAB、Python也有專門的介面,運算上支持CPU和GPU直接無縫切換。

  Caffe的特點:

  易用性:Caffe的模型與相應優化都是以文本形式而非代碼形式給出, Caffe給出了模型的定義、最優化設置以及預訓練的權重,方便快速使用;

  速度快:能夠運行最棒的模型與海量的數據;

  Caffe可與cuDNN結合使用,可用於測試AlexNet模型,在K40上處理一張圖片只需要1.17ms;

  模塊化:便於擴展到新的任務和設置上;

  使用者可通過Caffe提供的各層類型來定義自己的模型;

目前Caffe應用實踐主要有數據整理、設計網路結構、訓練結果、基於現有訓練模型,使用Caffe直接識別。

  開發語言:C++

  許可協議: BSD 2-Clause license

  GitHub項目地址: github.com/BVLC/caffe

4. PredictionIO

  PredictionIO 是面向開發人員和數據科學家的開源機器學習伺服器。它支持事件採集、演算法調度、評估,以及經由REST APIs的預測結果查詢。使用者可以通過PredictionIO做一些預測,比如個性化推薦、發現內容等。PredictionIO 提供20個預設演算法,開發者可以直接將它們運行於自己的數據上。幾乎任何應用與PredictionIO集成都可以變得更「聰明」。其主要特點如下所示:

  基於已有數據可預測用戶行為;

  使用者可選擇你自己的機器學習演算法;

  無需擔心可擴展性,擴展性好。

  PredictionIO 基於 REST API(應用程序介面)標準,不過它還包含 Ruby、Python、Scala、Java 等編程語言的 SDK(軟體開發工具包)。其開發語言是Scala語言,資料庫方面使用的是MongoDB資料庫,計算系統採用Hadoop系統架構。

  開發語言:Scala

  許可協議: Apache License 2.0

  GitHub項目地址: github.com/PredictionI

5. Brain

  Brain是 JavaScript 中的 神經網路庫。以下例子說明使用Brain來近似 XOR 功能:

  var net = new brain.NeuralNetwork();

  net.train([{input: [0, 0], output: [0]},

   {input: [0, 1], output: [1]},

   {input: [1, 0], output: [1]},

   {input: [1, 1], output: [0]}]);

  var output = net.run([1, 0]); // [0.987]

  當 brain 用於節點中,可使用npm安裝:npm install brain

  當 brain 用於瀏覽器,下載最新的 brain.js 文件。訓練計算代價比較昂貴,所以應該離線訓練網路(或者在 Worker 上),並使用 toFunction() 或者 toJSON()選項,以便將預訓練網路插入到網站中。

  開發語言:JavaScript

  GitHub項目地址: github.com/harthur/bra

6. Keras

  Keras是極其精簡併高度模塊化的神經網路庫,在TensorFlow 或 Theano 上都能夠運行,是一個高度模塊化的神經網路庫,支持GPU和CPU運算。Keras可以說是Python版的Torch7,對於快速構建CNN模型非常方便,同時也包含了一些最新文獻的演算法,比如Batch Noramlize,文檔教程也很全,在官網上作者都是直接給例子淺顯易懂。Keras也支持保存訓練好的參數,然後載入已經訓練好的參數,進行繼續訓練。

  Keras側重於開發快速實驗,用可能最少延遲實現從理念到結果的轉變,即為做好一項研究的關鍵。

  當需要如下要求的深度學習的庫時,就可以考慮使用Keras:

  考慮到簡單快速的原型法(通過總體模塊性、精簡性以及可擴展性);

  同時支持卷積網路和遞歸網路,以及兩者之間的組合;

  支持任意連接方案(包括多輸入多輸出訓練);

  可在CPU 和 GPU 上無縫運行。

  Keras目前支持 Python 2.7-3.5。

  開發語言:Python

  GitHub項目地址: github.com/fchollet/ke

7. CNTK

  CNTK(Computational Network Toolkit )是一個統一的深度學習工具包,該工具包通過一個有向圖將神經網路描述為一系列計算步驟。在有向圖中,葉節點表示輸入值或網路參數,其他節點表示該節點輸入之上的矩陣運算。

  CNTK 使得實現和組合如前饋型神經網路DNN、卷積神經網路(CNN)和循環神經網路(RNNs/LSTMs)等流行模式變得非常容易。同時它實現了跨多GPU 和伺服器自動分化和並行化的隨機梯度下降(SGD,誤差反向傳播)學習。

開發語言:C++

  GitHub項目地址: github.com/Microsoft/C

8. Convnetjs

  ConvNetJS是利用Javascript實現的神經網路,同時還具有非常不錯的基於瀏覽器的Demo。它最重要的用途是幫助深度學習初學者更快、更直觀的理解演算法。

  它目前支持:

  常見的神經網路模塊(全連接層,非線性);

  分類(SVM/ SOFTMAX)和回歸(L2)的成本函數;

  指定和訓練圖像處理的卷積網路;

  基於Deep Q Learning的實驗強化學習模型。

  一些在線示例:

  Convolutional Neural Network on MNIST digits

  Convolutional Neural Network on CIFAR-10

  Toy 2D data

  Toy 1D regression

  Training an Autoencoder on MNIST digits

  Deep Q Learning Reinforcement Learning demo + Image Regression (「Painting」) + Comparison of SGD/Adagrad/Adadelta on MNIST

  其他:

  開發語言:Javascript

  許可協議:MIT License

  GitHub項目地址: github.com/karpathy/co

9. Pattern

  Pattern是Python的一個Web挖掘模塊。擁有以下工具:

  數據挖掘:網路服務(Google、Twitter、Wikipedia)、網路爬蟲、HTML DOM解析;

  自然語言處理:詞性標註工具(Part-Of-Speech Tagger)、N元搜索(n-gram search)、情感分析(sentiment analysis)、WordNet;

  機器學習:向量空間模型、聚類、分類(KNN、SVM、 Perceptron);

  網路分析:圖形中心性和可視化。

  其文檔完善,目前擁有50多個案例和350多個單元測試。 Pattern目前只支持Python 2.5+(尚不支持Python 3),該模塊除了在Pattern.vector模塊中使用LSA外沒有其他任何外部要求,因此只需安裝 NumPy (僅在Mac OS X上默認安裝)。

  開發語言:Python

  許可協議:BSD license

  GitHub項目地址: github.com/clips/patte

10. NuPIC

  NuPIC是一個實現了HTM學習演算法的機器智能平台。HTM是一個關於新(大腦)皮質(Neocortex)的詳細人工智慧演算法。HTM的核心是基於時間的連續學習演算法,該演算法可以存儲和調用時間和空間兩種模式。NuPIC可以適用於解決各類問題,尤其是異常檢測和流數據源預測方面。

  NuPIC Binaries文件目前可用於:

  Linux x86 64bit

  OS X 10.9

  OS X 10.10

  Windows 64bit

  NuPIC 有自己的獨特之處。許多機器學習演算法無法適應新模式,而NuPIC的運作接近於人腦,當模式變化的時候,它會忘掉舊模式,記憶新模式。

  開發語言:Python

  GitHub項目地址: github.com/numenta/nup

11. Theano

  Theano是一個Python庫,它允許使用者有效地定義、優化和評估涉及多維數組的數學表達式,同時支持GPUs和高效符號分化操作。Theano具有以下特點:

  與NumPy緊密相關–在Theano的編譯功能中使用了Numpy.ndarray ;

  透明地使用GPU–執行數據密集型計算比CPU快了140多倍(針對Float32);

  高效符號分化–Theano將函數的導數分為一個或多個不同的輸入;

  速度和穩定性的優化–即使輸入的x非常小也可以得到log(1+x)正確結果;

  動態生成 C代碼–表達式計算更快;

  廣泛的單元測試和自我驗證–多種錯誤類型的檢測和判定。

自2007年起,Theano一直致力於大型密集型科學計算研究,但它目前也很被廣泛應用在課堂之上( 如Montreal大學的深度學習/機器學習課程)。

  開發語言:Python

  GitHub項目地址: github.com/Theano/Thea

12. MXNet

  MXNet是一個兼具效率和靈活性的深度學習框架。它允許使用者將符號編程和命令式編程相結合,以追求效率和生產力的最大化。其核心是動態依賴調度程序,該程序可以動態自動進行並行化符號和命令的操作。其中部署的圖形優化層使得符號操作更快和內存利用率更高。該庫輕量且便攜帶,並且可擴展到多個GPU和多台主機上。

  主要特點:

  其設計說明提供了有用的見解,可以被重新應用到其他DL項目中;

  任意計算圖的靈活配置;

  整合了各種編程方法的優勢最大限度地提高靈活性和效率;

  輕量、高效的內存以及支持攜帶型的智能設備;

  多GPU擴展和分散式的自動並行化設置;

  支持Python、R、C++和 Julia;

  對「雲計算」友好,直接兼容S3、HDFS和Azure。

  MXNet不僅僅是一個深度學習項目,它更是一個建立深度學習系統的藍圖、指導方針以及黑客們對深度學習系統獨特見解的結合體。

  開發語言:Jupyter Notebook

  開源許可:Apache-2.0 license

  GitHub項目地址: github.com/dmlc/mxnet

13. Vowpal Wabbit

  Vowpal Wabbit是一個機器學習系統,該系統推動了如在線、散列、Allreduce、Learning2search、等方面機器學習前沿技術的發展。 其訓練速度很快,在20億條訓練樣本,每個訓練樣本大概100個非零特徵的情況下:如果特徵的總位數為一萬時,訓練時間為20分鐘;特徵總位數為1000萬時,訓練時間為2個小時。Vowpal Wabbit支持分類、 回歸、矩陣分解和LDA。

  當在Hadoop上運行Vowpal Wabbit時,有以下優化機制:

  懶惰初始化:在進行All Reduce之前,可將全部數據載入到內存中並進行緩存。即使某一節點出現了錯誤,也可以通過在另外一個節點上使用錯誤節點的數據(通過緩存來獲取)來繼續訓練。

  Speculative Execution:在大規模集群當中,一兩個很慢的Mapper會影響整個Job的性能。Speculative Execution的思想是當大部分節點的任務完成時,Hadoop可以將剩餘節點上的任務拷貝到其他節點完成。

  開發語言:C++

  GitHub項目地址: github.com/JohnLangfor

14. Ruby Warrior

  通過設計了一個遊戲使得Ruby語言和人工智慧學習更加有樂趣和互動起來。

  使用者扮演了一個勇士通過爬上一座高塔,到達頂層獲取珍貴的紅寶石(Ruby)。在每一層,需要寫一個Ruby腳本指導戰士打敗敵人、營救俘虜、到達樓梯。使用者對每一層都有一些認識,但是你永遠都不知道每層具體會發生什麼情況。你必須給戰士足夠的人工智慧,以便讓其自行尋找應對的方式。

  勇士的動作相關API:

  Warrior.walk: 用來控制勇士的移動,默認方向是往前;

  warrior.feel:使用勇士來感知前方的情況,比如是空格,還是有怪物;

  Warrior.attack:讓勇士對怪物進行攻擊;

  Warrior.health:獲取勇士當前的生命值;

  Warrior.rest:讓勇士休息一回合,恢復最大生命值的10%。

  勇士的感知API:

  Space.empty:感知前方是否是空格;

  Space.stairs:感知前方是否是樓梯;

  Space.enemy: 感知前方是否有怪物;

  Space.captive:感知前方是否有俘虜;

  Space.wall:感知前方是否是牆壁。

  開發語言:Ruby

  GitHub項目地址: github.com/ryanb/ruby-

15. XGBoost

  XGBoot是設計為高效、靈活、可移植的優化分散式梯度 Boosting庫。它實現了 Gradient Boosting 框架下的機器學習演算法。

  XGBoost通過提供並行樹Boosting(也被稱為GBDT、GBM),以一種快速且準確的方式解決了許多數據科學問題。相同的代碼可以運行在大型分散式環境如Hadoop、SGE、MP上。它類似於梯度上升框架,但是更加高效。它兼具線性模型求解器和樹學習演算法。

  XGBoot至少比現有的梯度上升實現有至少10倍的提升,同時還提供了多種目標函數,包括回歸、分類和排序。由於它在預測性能上的強大,XGBoot成為很多比賽的理想選擇,其還具有做交叉驗證和發現關鍵變數的額外功能。

  值得注意的是:XGBoost僅適用於數值型向量,因此在使用時需要將所有其他形式的數據轉換為數值型向量;在優化模型時,這個演算法還有非常多的參數需要調整。

  開發語言:C++

  開源許可:Apache-2.0 license

  GitHub項目地址: github.com/dmlc/xgboos

16. GoLearn

  GoLearn 是Go 語言中「功能齊全」的機器學習庫,簡單性及自定義性是其開發目標。

  在安裝 GoLearn 時,數據作為實例被載入,然後可以在其上操作矩陣,並將操作值傳遞給估計值。GoLearn 實現了Fit/Predict的Scikit-Learn界面,因此用戶可輕鬆地通過反覆試驗置換出估計值。此外,GoLearn還包括用於數據的輔助功能,例如交叉驗證、訓練以及爆裂測試。

  開發語言:Go

  GitHub項目地址: github.com/sjwhitworth

17. ML_for_Hackers

  ML_for_Hackers 是針對黑客機器學習的代碼庫,該庫包含了所有針對黑客的機器學習的代碼示例(2012)。該代碼可能和文中出現的並不完全相同,因為自出版以來,可能又添加了附加的注釋和修改部分。

  所有代碼均為R語言,依靠眾多的R程序包,涉及主題包括分類(Classification)、排行(Ranking)、以及回歸(Regression)的所有常見的任務和主成分分析(PCA)和多維尺度(Multi-dimenstional Scaling)等統計方法。

  開發語言:R

  開源許可:Simplified BSD License

  GitHub項目地址: github.com/johnmyleswh

18. H2O-2

  H2O使得Hadoop能夠做數學運算!它可以通過大數據衡量統計數據、機器學習和數學。H2O是可擴展的,用戶可以在核心區域使用簡單的數學模型構建模塊。H2O保留著與R、Excel 和JSON等相類似的熟悉的界面,使得大數據愛好者及專家們可通過使用一系列由簡單到高級的演算法來對數據集進行探索、變換、建模及評分。採集數據很簡單,但判決難度卻很大,而H2O卻通過更快捷、更優化的預測模型,能夠更加簡單迅速地從數據中獲得深刻見解。

  0xdata H2O的演算法是面向業務流程——欺詐或趨勢預測。Hadoop專家可以使用Java與H2O相互作用,但框架還提供了對Python、R以及Scala的捆綁。

  開發語言:Java

  GitHub項目地址: github.com/h2oai/h2o-2

19. neon

  neon 是 Nervana 基於 Python 語言的深度學習框架,在諸多常見的深層神經網路中都能夠獲得較高的性能,比如AlexNet、VGG 或者GoogLeNet。在設計 neon 時,開發者充分考慮了如下功能:

  支持常用的模型及實例,例如 Convnets、 MLPs、 RNNs、LSTMs、Autoencoders 等,其中許多預訓練的實現都可以在模型庫中發現;

  與麥克斯韋GPU中fp16 和 fp32(基準) 的nervanagpu 內核緊密集成;

  在Titan X(1 GPU ~ 32 hrs上可完整運行)的AlexNet上為3s/macrobatch(3072圖像);

  快速影像字幕模型(速度比基於 NeuralTalk 的CPU 快200倍)。

  支持基本自動微分;

  框架可視化;

  可交換式硬碟後端:一次編寫代碼,然後配置到 CPU、GPU、或者 Nervana 硬碟。

  在 Nervana中,neon被用來解決客戶在多個域間存在的各種問題。

  開發語言:Python

  開源許可:Apache-2.0 license

  GitHub項目地址: github.com/NervanaSyst

20. Oryx 2

  開源項目Oryx提供了簡單且實時的大規模機器學習、預測分析的基礎設施。它可實現一些常用於商業應用的演算法類:協作式過濾/推薦、分類/回歸、集群等。此外,Oryx 可利用 Apache Hadoop 在大規模數據流中建立模型,還可以通過HTTP REST API 為這些模型提供實時查詢,同時隨著新的數據不斷流入,可以近似地自動更新模型。這種包括了計算層和服務層的雙重設計,能夠分別實現一個Lambda 架構。模型在PMML格式交換。

  Oryx本質上只做兩件事:建模和為模型服務,這就是計算層和服務層兩個獨立的部分各自的職責。計算層是離線、批量的過程,可從輸入數據中建立機器學習模型,它的經營收益在於「代」,即可利用某一點處輸入值的快照建模,結果就是隨著連續輸入的累加,隨時間生成一系列輸出;服務層也是一個基於Java長期運行的伺服器進程,它公開了REST API。使用者可從瀏覽器中訪問,也可利用任何能夠發送HTTP請求的語言或工具進行訪問。

  Oryx的定位不是機器學習演算法的程序庫,Owen關注的重點有四個:回歸、分類、集群和協作式過濾(也就是推薦)。其中推薦系統非常熱門,Owen正在與幾個Cloudera的客戶合作,幫他們使用Oryx部署推薦系統。

  開發語言:Java

  GitHub項目地址: github.com/cloudera/or

21. Shogun

  Shogun是一個機器學習工具箱,由Soeren Sonnenburg 和GunnarRaetsch(創建,其重點是大尺度上的內核學習方法,特別是支持向量機SVM(Support Vector Machines)的學習工具箱。它提供了一個通用的連接到幾個不同的SVM實現方式中的SVM對象介面,目前發展最先進的LIBSVM和SVMlight 也位於其中,每個SVM都可以與各種內核相結合。工具箱不僅為常用的內核程序(如線性、多項式、高斯和S型核函數)提供了高效的實現途徑,還自帶了一些近期的字元串內核函數,例如局部性的改進、Fischer、TOP、Spectrum、加權度內核與移位,後來有效的LINADD優化內核函數也已經實現。

  此外,Shogun還提供了使用自定義預計算內核工作的自由,其中一個重要特徵就是可以通過多個子內核的加權線性組合來構造的組合核,每個子內核無需工作在同一個域中。通過使用多內核學習可知最優子內核的加權。

  目前Shogun可以解決SVM 2類的分類和回歸問題。此外Shogun也添加了了像線性判別分析(LDA)、線性規劃(LPM)、(內核)感知等大量線性方法和一些用於訓練隱馬爾可夫模型的演算法。

  開發語言:C/C++、Python

  許可協議:GPLv3

  GitHub項目地址: github.com/shogun-tool

22. HLearn

  HLearn是由Haskell語言編寫的高性能機器學習庫,目前它對任意維度空間有著最快最近鄰的實現演算法。

  HLearn同樣也是一個研究型項目。該項目的研究目標是為機器學習發掘「最佳可能」的介面。這就涉及到了兩個相互衝突的要求:該庫應該像由C/C++/Fortran/Assembly開發的底層庫那樣運行快速;同時也應該像由Python/R/Matlab開發的高級庫那樣靈活多變。Julia在這個方向上取得了驚人的進步,但是 HLearn「野心」更大。更值得注意的是,HLearn的目標是比低級語言速度更快,比高級語言更加靈活。

  為了實現這一目標,HLearn採用了與標準學習庫完全不同的介面。在HLearn中H代表著三個不同的概念,這三個概念也是HLearn設計的基本要求:

  H代表Haskell。機器學習是從數據中預測函數,所以功能性編程語言適應機器學習是完全說的通的。但功能性編程語言並沒廣泛應用於機器學習,這是因為它們固來缺乏支持學習演算法的快速數值計算能力。HLearn通過採用Haskell中的SubHask庫獲得了快速數值計算能力;

  H同時代表著Homomorphisms。Homomorphisms是抽象代數的基本概念,HLearn將該代數結構用於學習系統中;

  H還代表著History monad。在開發新的學習演算法過程中,最為困難的任務之一就是調試優化過程。在此之前,是沒有辦法減輕調試過程的工作量的,但History monad正在試圖解決該問題。它可以讓你在整個線程優化代碼的過程中無需修改原代碼。此外,使用該技術時沒有增加其他的運行開銷。、

  開發語言:Haskell

  GitHub項目地址: github.com/mikeizbicki

23. MLPNeuralNet

  MLPNeuralNet是一個針對iOS和Mac OS系統的快速多層感知神經網路庫,可通過已訓練的神經網路預測新實例。它利用了向量運算和硬碟加速功能(如果可用),其建立在蘋果公司的加速框架之上。

  若你已經用Matlab(Python或R)設計了一個預測模型,並希望在iOS應用程序加以應用。在這種情況下,正好需要MLP NeuralNet,而MLP NeuralNet只能載入和運行前向傳播方式的模型。MLP NeuralNet 有如下幾個特點:

  分類、多類分類以及回歸輸出;

  向量化實現形式;

  雙精度;

  多重隱含層數或空(此時相當於邏輯學/線性回歸)。

  開發語言:Objective-C

  許可協議:BSD license

  GitHub項目地址: github.com/nikolaypavl

24. Apache Mahout

  Mahout 是Apache Software Foundation(ASF) 旗下的一個開源項目,提供一些可擴展的機器學習領域經典演算法的實現,旨在幫助開發人員更加方便快捷地創建智能應用程序。Mahout包含許多實現,包括聚類、分類、推薦過濾、頻繁子項挖掘。此外,通過使用 Apache Hadoop 庫,Mahout 可以有效地擴展到雲中。Apache Mahout項目的目標是建立一個能夠快速創建可擴展、高性能機器學習應用的環境。

  雖然在開源領域中相對較為年輕,但 Mahout 已經提供了大量功能,特別是在集群和 CF 方面。Mahout 的主要特性包括:

  Taste CF,Taste是Sean Owen在SourceForge上發起的一個針對CF的開源項目,並在2008年被贈予Mahout;

  一些支持 Map-Reduce 的集群實現包括 k-Means、模糊 k-Means、Canopy、Dirichlet 和 Mean-Shift;

  Distributed Naive Bayes 和 Complementary Naive Bayes 分類實現;

  針對進化編程的分散式適用性功能;

  Matrix 和矢量庫。

  使用 Mahout 還可實現內容分類。Mahout 目前支持兩種根據貝氏統計來實現內容分類的方法:第一種方法是使用簡單的支持 Map-Reduce 的 Naive Bayes 分類器;第二種方法是 Complementary Naive Bayes,它會嘗試糾正Naive Bayes方法中的一些問題,同時仍然能夠維持簡單性和速度。

  開發語言:Java

  許可協議:Apache

  GitHub項目地址: github.com/apache/maho

25. Seldon Server

  Seldon是一個開放式的預測平台,提供內容建議和一般的功能性預測。它在Kubernetes集群內運行,因此可以調配到Kubernetes範圍內的任一地址:內部部署或雲部署(例如,AWS、谷歌雲平台、Azure)。另外,它還可以衡量大型企業安裝的需求。

  開發語言:Java

  GitHub項目地址: github.com/SeldonIO/se

26. Datumbox – Framework

  Datumbox機器學習框架是用Java編寫的一個開源框架,該框架的涵蓋大量的機器學習演算法和統計方法,並能夠處理大尺寸的數據集。

  Datumbox API提供了海量的分類器和自然語言處理服務,能夠被應用在很多領域的應用,包括了情感分析、話題分類、語言檢測、主觀分析、垃圾郵件檢測、閱讀評估、關鍵詞和文本提取等等。目前,Datumbox所有的機器學習服務都能夠通過API獲取,該框架能夠讓用戶迅速地開發自己的智能應用。目前,基於GPL3.0的Datumbox機器學習框架已經開源並且可以從GitHub上進行下載。

  Datumbox的機器學習平台很大程度上已經能夠取代普通的智能應用。它具有如下幾個顯著的優點:

  強大並且開源。Datumbox API使用了強大的開源機器學習框架Datumbox,使用其高度精確的演算法能夠迅速地構建創新的應用;

  易於使用。平台API十分易於使用,它使用了REST&JSON的技術,對於所有的分類器;

  迅速使用。Datumbox去掉了那些很花時間的複雜機器學習訓練模型。用戶能夠通過平台直接使用分類器。

  Datumbox主要可以應用在四個方面:一個是社交媒體的監視,評估用戶觀點能夠通過機器學習解決,Datumbox能夠幫助用戶構建自己的社交媒體監視工具;第二是搜索引擎優化,其中非常有效的方法就是文檔中重要術語的定位和優化;第三點是質量評估,在在線通訊中,評估用戶產生內容的質量對於去除垃圾郵件是非常重要的,Datumbox能夠自動的評分並且審核這些內容;最後是文本分析,自然語言處理和文本分析工具推動了網上大量應用的產生,平台API能夠很輕鬆地幫助用戶進行這些分析。

  開發語言:Java

  許可協議:Apache License 2.0

  GitHub項目地址: github.com/datumbox/da

27. Jubatus

  Jubatus庫是一個運行在分散式環境中的在線機器學習框架,即面向大數據數據流的開源框架。它和Storm有些類似,但能夠提供更多的功能,主要功能如下:

  在線機器學習庫:包括分類、聚合和推薦;

  Fv_converter: 數據預處理(用自然語言);

  在線機器學習框架,支持容錯。

  Jubatus認為未來的數據分析平台應該同時向三個方向展開:處理更大的數據,深層次的分析和實時處理。於是Jubatus將在線機器學習,分散式計算和隨機演算法等的優勢結合在一起用於機器學習,並支持分類、回歸、推薦等基本元素。根據其設計目的,Jubatus有如下的特點:

  可擴展:支持可擴展的機器學習處理。在普通硬體集群上處理數據速度高達100000條/秒;+實時計算:實時分析數據和更新模型;

  深層次的數據分析:支持各種分析計算:分類、回歸、統計、推薦等。

  如果有基於流數據的機器學習方面的需求,Jubatus值得關注。

  開發語言:C/C++

  許可協議:LGPL

  GitHub項目地址: github.com/jubatus/jub

28. Decider

  Decider 是另一個 Ruby 機器學習庫,兼具靈活性和可擴展性。Decider內置了對純文本和URI、填充辭彙、停止詞刪除、字格等的支持,以上這些都可以很容易地在選項中組合。Decider 可支持Ruby中任何可用的存儲機制。如果你喜歡,可以保存到資料庫中,實現分散式分類。

  Decider有幾個基準,也兼作集成測試。這些都是定期運行並用於查明CPU和RAM的瓶頸。Decider可以進行大量數學運算,計算相當密集,所以對速度的要求比較高。這是經常使用Ruby1.9和JRuby測試其計算速度。此外,用戶的數據集應該完全在內存中,否則將會遇到麻煩。

  開發語言:Ruby

  GitHub項目地址: github.com/danielsdele


推薦閱讀:

運營幹貨 | 「精細化運營」無從下手?那看看這張表吧!
【SQL語言】數據分析師的佩劍
關聯規則分析怎麼做?你需要知道這3大關鍵詞、4大步驟
Learn R | EM Algorithm of Data Mining(一)

TAG:数据挖掘 | 机器学习 | TensorFlow |