新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 詳解11個機器學習開源項目

詳解11個機器學習開源項目

作者: 時間:2018-08-03 來源:網(wǎng)絡 收藏

隨著越來越受到開發(fā)者關(guān)注,出現(xiàn)了很多,在本文列舉的11個中,無論你是Java愛好者還是Python狂人,在這里你都可以找到自己想要的機器學習。

本文引用地址:http://2s4d.com/article/201808/385314.htm

垃圾郵件過濾、人臉識別、推薦引擎——當你有一個大數(shù)據(jù)集并且希望利用它們執(zhí)行預測分析和模式識別,機器學習是必經(jīng)之路。這門科學,計算機可以在沒有事先規(guī)劃的前提下自主學習、分析和操作數(shù)據(jù),現(xiàn)在越來越多的開發(fā)人員關(guān)注機器學習。

機器學習技術(shù)的興起不僅是因為硬件成本越來越便宜以及性能越來越強大,促使機器學習在單機或大規(guī)模集群上輕松部署的免費軟件激增也是重要因素。機器學習庫的多樣性意味著無論你喜歡什么語言或環(huán)境,都有可能是獲得你喜歡的。

1. Scikit-learn

Python由于其易用性以及豐富的函數(shù)庫,已經(jīng)成為數(shù)學、自然科學和統(tǒng)計學的首選編程語言。Scikit-learn通過在現(xiàn)有Python包上構(gòu)建——NumPy SciPy和matplotlib——服務于數(shù)學和自然科學。生成的庫要么可以使用交互式“工作臺”應用程序,要么被嵌入到其他軟件和重用。工具箱可以在BSD許可下獲取,所以它是完全開放和可重用的。

2. Shogun

在最古老、最值得尊敬的機器學習庫中,Shogun創(chuàng)建于1999年,用C++編寫,但并不限于在C++工作。由于SWIG庫,Shogun可以輕松在Java、Python、C#、Ruby、R、Lua、Octave、Matlab語言和環(huán)境下使用。

雖然德高望重,Shogun也有其他的競爭者。另一個基于C++的機器學習庫Mlpack在2011年出現(xiàn),它宣稱比其他競爭者速度更快并且更容易使用(一個更完整的API集)。

3. Accord Framework/AForge.net

Accord,一個.Net的機器學習和信號處理框架,是早前類似一個項目AForge.net的擴展。順便說一下,“信號處理”這里是指一系列對圖像和音頻的機器學習算法,如圖片無縫縫合或執(zhí)行人臉檢測。包含一組視覺處理算法;它作用于圖像流(如視頻),并且可用于實現(xiàn)移動對象的跟蹤等功能。Accord還提供一個從神經(jīng)網(wǎng)絡到?jīng)Q策樹系統(tǒng)的機器學習常見庫。

4. Mahout

Mahout框架一直與Hadoop相關(guān)聯(lián),但旗下很多算法還可以脫離Hadoop運行。他們對那些可能最終遷移到Hadoop上的應用程序或從Hadoop上剝離成為獨立應用程序的項目非常有用。

Mahout缺點之一:目前幾乎沒有算法支持高性能的Spark框架,反而使用日益過時的MapReduce框架。該項目目前不接受基于MapReduce的算法,那些想要獲得更高性能的開發(fā)者轉(zhuǎn)而用MLlib 替代。

5. MLlib

Apache自己的Spark和Hadoop機器學習庫,旨在為大規(guī)模和高速度而設計的MLlib自稱擁有所有常見的算法和有用數(shù)據(jù)類型。與任何Hadoop項目一樣,Java是MLlib上的基本語言,但是Python用戶可以用MLlib NumPy庫連接(也用于scikit-learn),并且Scala用戶可以針對MLlib編寫代碼。如果不能設置一個Hadoop集群,MLlib可以在沒有Hadoop的情況下部署在Spark上——以及在EC2或Mesos上。

6. H2O

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

7. Cloudera Oryx

另一個為Hadoop設計的機器學習項目Oryx由?Cloudera Hadoop distribuTIon?創(chuàng)造者提供。Oryx是為了允許機器學習模型部署在實時流數(shù)據(jù)上而設計的,如實時垃圾郵件過濾器或推薦引擎。

該項目的全新版本暫時定名為Oryx 2,目前正在準備階段。它使用Apache項目如Spark 和 Kafka實現(xiàn)更高性能,其組件構(gòu)建走松散耦合路線以便能經(jīng)得住時間考驗。

8. GoLearn

谷歌的Go語言已經(jīng)開始被廣泛使用,隨著庫越來越多,據(jù)其開發(fā)者Stephen Witworth介紹,GoLearn被構(gòu)建為Go語言的一體化的機器學習庫,目標是“簡單可定制”。簡單主要是由于數(shù)據(jù)在庫內(nèi)被加載和處理,因為它是仿照SciPy 和R;可定制性在于庫的開放源碼特性以及一些數(shù)據(jù)結(jié)構(gòu)可以很容易地在一個應用程序中擴展。Witworth也為Vowpal Wabbit庫創(chuàng)建了一個包裝器,其中一個庫存放在Shogun工具箱中。

9. Weka

Weka是新西蘭Waikato大學開發(fā)的,收集一組專門為數(shù)據(jù)挖掘設計的Java機器學習算法。這組GNU得到 GPLv3許可的集有一個包系統(tǒng)擴展其功能,有官方和非官方包兩種。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快。但應用程序不會自動利用GPU的加速功能;他們必須明確通過程序?qū)懭?。CUDA-Convne是一個神經(jīng)網(wǎng)絡應用程序機器學習庫,用C++編寫來開發(fā)Nvidia的CUDA GPU處理技術(shù)。對于那些使用Python而不是C++用戶,由此產(chǎn)生的神經(jīng)網(wǎng)絡可以保存為Python pickle對象,因此可以從Python存取。

注意,原始版本的項目不再被開發(fā),但是已經(jīng)被重組為CUDA-Convnet2,支持多個GPU和Kepler-generaTIon GPU。與之類似的項目Vulpes,已經(jīng)用F#編寫,并且通常和.Net框架一起使用。

11. ConvNetJS

顧名思義,ConvNetJS 是一個基于 js 的深度學習 library,可以讓你在瀏覽器中訓練深度網(wǎng)絡。NPM版本也可用于那些使用Node.js的用戶,并且這個庫也是為合理使用JavaScript的異步性而設計,例如,一旦他們完成訓練操作可以給出一個回調(diào)函數(shù)來執(zhí)行。里面還包含大量的演示案例。



關(guān)鍵詞: 開源項目 機器學習 JAVA

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉