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