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