11個機(jī)器學(xué)習(xí)開源項目
隨著機(jī)器學(xué)習(xí)越來越受到開發(fā)者關(guān)注,出現(xiàn)了很多機(jī)器學(xué)習(xí)的開源項目,在本文列舉的11個機(jī)器學(xué)習(xí)開源項目中,無論你是Java愛好者還是Python狂人,在這里你都可以找到自己想要的機(jī)器學(xué)習(xí)開源項目。
本文引用地址:http://www.ex-cimer.com/article/201710/365579.htm垃圾郵件過濾、人臉識別、推薦引擎——當(dāng)你有一個大數(shù)據(jù)集并且希望利用它們執(zhí)行預(yù)測分析和模式識別,機(jī)器學(xué)習(xí)是必經(jīng)之路。這門科學(xué),計算機(jī)可以在沒有事先規(guī)劃的前提下自主學(xué)習(xí)、分析和操作數(shù)據(jù),現(xiàn)在越來越多的開發(fā)人員關(guān)注機(jī)器學(xué)習(xí)。
機(jī)器學(xué)習(xí)技術(shù)的興起不僅是因為硬件成本越來越便宜以及性能越來越強大,促使機(jī)器學(xué)習(xí)在單機(jī)或大規(guī)模集群上輕松部署的免費軟件激增也是重要因素。機(jī)器學(xué)習(xí)庫的多樣性意味著無論你喜歡什么語言或環(huán)境,都有可能是獲得你喜歡的。
1. Scikit-learn
Python由于其易用性以及豐富的函數(shù)庫,已經(jīng)成為數(shù)學(xué)、自然科學(xué)和統(tǒng)計學(xué)的首選編程語言。Scikit-learn通過在現(xiàn)有Python包上構(gòu)建——NumPy SciPy和matplotlib——服務(wù)于數(shù)學(xué)和自然科學(xué)。生成的庫要么可以使用交互式“工作臺”應(yīng)用程序,要么被嵌入到其他軟件和重用。工具箱可以在BSD許可下獲取,所以它是完全開放和可重用的。2. Shogun
在最古老、最值得尊敬的機(jī)器學(xué)習(xí)庫中,Shogun創(chuàng)建于1999年,用C++編寫,但并不限于在C++工作。由于SWIG庫,Shogun可以輕松在Java、Python、C#、Ruby、R、Lua、Octave、Matlab語言和環(huán)境下使用。雖然德高望重,Shogun也有其他的競爭者。另一個基于C++的機(jī)器學(xué)習(xí)庫Mlpack在2011年出現(xiàn),它宣稱比其他競爭者速度更快并且更容易使用(一個更完整的API集)。
3. Accord Framework/AForge.net
Accord,一個.Net的機(jī)器學(xué)習(xí)和信號處理框架,是早前類似一個項目AForge.net的擴(kuò)展。順便說一下,“信號處理”這里是指一系列對圖像和音頻的機(jī)器學(xué)習(xí)算法,如圖片無縫縫合或執(zhí)行人臉檢測。包含一組視覺處理算法;它作用于圖像流(如視頻),并且可用于實現(xiàn)移動對象的跟蹤等功能。Accord還提供一個從神經(jīng)網(wǎng)絡(luò)到?jīng)Q策樹系統(tǒng)的機(jī)器學(xué)習(xí)常見庫。4. Mahout
Mahout框架一直與Hadoop相關(guān)聯(lián),但旗下很多算法還可以脫離Hadoop運行。他們對那些可能最終遷移到Hadoop上的應(yīng)用程序或從Hadoop上剝離成為獨立應(yīng)用程序的項目非常有用。Mahout缺點之一:目前幾乎沒有算法支持高性能的Spark框架,反而使用日益過時的MapReduce框架。該項目目前不接受基于MapReduce的算法,那些想要獲得更高性能的開發(fā)者轉(zhuǎn)而用MLlib 替代。
5. MLlib
Apache自己的Spark和Hadoop機(jī)器學(xué)習(xí)庫,旨在為大規(guī)模和高速度而設(shè)計的MLlib自稱擁有所有常見的算法和有用數(shù)據(jù)類型。與任何Hadoop項目一樣,Java是MLlib上的基本語言,但是Python用戶可以用MLlib NumPy庫連接(也用于scikit-learn),并且Scala用戶可以針對MLlib編寫代碼。如果不能設(shè)置一個Hadoop集群,MLlib可以在沒有Hadoop的情況下部署在Spark上——以及在EC2或Mesos上。6. H2O
0xdata H2O的算法是面向業(yè)務(wù)流程——欺詐或趨勢預(yù)測。Hadoop專家可以使用Java與H2O相互作用,但框架還提供了對Python、R以及Scala的捆綁。7. Cloudera Oryx
另一個為Hadoop設(shè)計的機(jī)器學(xué)習(xí)項目Oryx由?Cloudera Hadoop distribuTIon?創(chuàng)造者提供。Oryx是為了允許機(jī)器學(xué)習(xí)模型部署在實時流數(shù)據(jù)上而設(shè)計的,如實時垃圾郵件過濾器或推薦引擎。該項目的全新版本暫時定名為Oryx 2,目前正在準(zhǔn)備階段。它使用Apache項目如Spark 和 Kafka實現(xiàn)更高性能,其組件構(gòu)建走松散耦合路線以便能經(jīng)得住時間考驗。
8. GoLearn
谷歌的Go語言已經(jīng)開始被廣泛使用,隨著庫越來越多,據(jù)其開發(fā)者Stephen Witworth介紹,GoLearn被構(gòu)建為Go語言的一體化的機(jī)器學(xué)習(xí)庫,目標(biāo)是“簡單可定制”。簡單主要是由于數(shù)據(jù)在庫內(nèi)被加載和處理,因為它是仿照SciPy 和R;可定制性在于庫的開放源碼特性以及一些數(shù)據(jù)結(jié)構(gòu)可以很容易地在一個應(yīng)用程序中擴(kuò)展。Witworth也為Vowpal Wabbit庫創(chuàng)建了一個包裝器,其中一個庫存放在Shogun工具箱中。
9. Weka
Weka是新西蘭Waikato大學(xué)開發(fā)的,收集一組專門為數(shù)據(jù)挖掘設(shè)計的Java機(jī)器學(xué)習(xí)算法。這組GNU得到 GPLv3許可的集有一個包系統(tǒng)擴(kuò)展其功能,有官方和非官方包兩種。Weka甚至還有專門一本書解釋其軟件和實戰(zhàn)技術(shù),所以那些想要在概念和軟件上取得優(yōu)勢的開發(fā)者可以關(guān)注下。雖然Weka并不是專門針對Hadoop用戶,但是Weka的最新版本的一組封裝器可以用于Hadoop。請注意,它還不能支持Spark,只有MapReduc。Clojure用戶還可以通過?Clj-ml??庫利用Weka。
10. CUDA-Convnet
現(xiàn)在大多數(shù)人都知道GPU在處理某些問題上的速度比CPU快。但應(yīng)用程序不會自動利用GPU的加速功能;他們必須明確通過程序?qū)懭?。CUDA-Convne是一個神經(jīng)網(wǎng)絡(luò)應(yīng)用程序機(jī)器學(xué)習(xí)庫,用C++編寫來開發(fā)Nvidia的CUDA GPU處理技術(shù)。對于那些使用Python而不是C++用戶,由此產(chǎn)生的神經(jīng)網(wǎng)絡(luò)可以保存為Python pickle對象,因此可以從Python存取。注意,原始版本的項目不再被開發(fā),但是已經(jīng)被重組為CUDA-Convnet2,支持多個GPU和Kepler-generaTIon GPU。與之類似的項目Vulpes,已經(jīng)用F#編寫,并且通常和.Net框架一起使用。
評論