將機器學習帶入Java與JavaScript等編程語言的五種方式
面向四種語言的最佳資源庫再加上Java on Hadoop,相信足以幫助大家將機器學習轉化為切實可靠的業務工具。
在經歷了數十年單純作為專業學科的潛伏期之后,機器學習突然之間在技術前沿與核心領域贏得了一席之地、并開始作為業務工具呈現在我們面前。不過目前最大的難題是如何使其具備實效,特別是對于那些需要處理相關工作的開發人員與尚處在萌芽狀態的數據科學家們。
為了找到答案,我們整理出了一些最為常見且具備實用價值的開源機器學習工具,通過今天的文章與各位朋友共享。
Python: 數據科學家們紛紛投身于Python懷抱,希望利用它來作為R語言等分析型語言的開放式替代方案,目前也有不少企業雇主正積極尋找具備大數據處理經驗的人 才、其中熟練使用Python就是最重要的必備技能之一。有鑒于此,一直在不斷擴大的Python軟件名單中開始出現大量與機器學習密切相關的資源庫。
首先要提到的推薦選項就是scikit-learn(官方網站:http://scikit-learn.org/stable/)。它能夠加載至 算法與模塊當中,在GitHub上受到了廣泛贊賞(fork版本數量接近2000),而且贏得了眾多業界巨頭的青睞。另一位緊隨其后的選手是 PyBrain(官方網站:http://www.pybrain.org/),它的設計目的在于降低使用難度并提供與其它強大工具相對接的能力。顧名思 義,PyBrain的關注重點在于神經網絡與非監督式學習,它同時也提供一套用于培訓與重新定義算法的機制。
Go: 作為谷歌打造的系統語言,Go的設計重點在于并行機制,而這似乎正是最適合編寫機器學習庫的理想環境。 雖然目前與之相關的庫項目規模尚小甚至可以說是剛剛萌芽,但也已經有一些通用型方案值得加以關注。其中最受推崇的要婁GoLearn(官方網 站:https://github.com/sjwhitworth/golearn),其開發者將其描述為一套“內置電池”的機器學習庫。它提供過濾、 分類以及回歸分析等多種工具。另一套較小且更為基礎的庫是mlgo(官方網站:https://code.google.com/p/mlgo/),雖然 目前它能提供的算法數量還少得可憐,但計劃在未來推出更多相關成果。
Java on Hadoop: Mahout(在印地語中意味著‘象騎兵’,官方網站:https://mahout.apache.org/)當中包含有多種常見的機器學習方案,足以 在每一位用戶偏愛的大數據框架中實際起效。這款軟件包以算法為關注重點而非方法,因此使用者需要對算法具備一定程度的理解。換句話來說,如果大家認真學 習,肯定不難看出其各部分功能是如何被整合在一起的;舉例來說,大家完全可以通過寥寥數行代碼構建起基于用戶的推薦系統。
Cloudera公司推行的Oryx(官方網站:https://github.com/cloudera/oryx)又是另一個基于Hadoop 的機器學習項目,其特性在于通過交付實時流結果而非處理批量作業來對Mahout處理結果進行進一步分析。遺憾的是,目前該項目尚處于初始階段——注意, 這只是個項目而非實際產品——但它不斷演變與改善的步伐為自己贏得了獲取關注的資本。
Java: 與前面提到的、主要面向Hadoop的Mahout不同,還有其它一些面向Java機器學習庫同樣 具備廣泛的使用受眾。由新西蘭懷卡托大學創建的Weka(官方網站:http://www.cs.waikato.ac.nz/~ml/weka/)就是 一款工作臺類的應用程序,它在常見的算法集合當中加入了虛擬化與數據挖掘功能。對于那些希望為工作內容打造一套前端并有意利用Java進行初始開發的用戶 來說,Weka可能是各位起步的最佳選擇。另一套更加傳統的庫,Java-ML(官方網站:http://java- ml.sourceforge.net/)也能確切起效,但它更適合那些已經習慣了將Java與機器學習配合使用的朋友。
JavaScript: 大家可能都聽說過“亞特伍德定律”這個笑話,大意是說任何能夠由JavaScript所編寫的內容最終都會由JavaScript進行編寫,這一理論在機 器學習庫領域同樣正確。當然,目前JavaScript編寫而成的方案在這一領域數量仍然相對較小——其中大多數選項都僅僅是單一算法而非完整的庫——但 已經有部分實用性工具漸漸脫穎而出。ConvNetJS(官方網站:http://cs.stanford.edu/people/karpathy /convnetjs/)允許大家直接在瀏覽器當中進行神經網絡培訓、從而實現深層學習,而名為brain(官方網站:https: //github.com/harthur/brain)的項目則能夠以可安裝NPM模塊的形式交付神經網絡。此外,Encog(官方網站:https: //github.com/encog/encog-javascript)庫同樣值得關注,而且它適用于多種平臺:Java、C#、C/C++以及 JavaScript。
來自:http://developer.51cto.com/art/201408/447493.htm