毫無疑問,神經網絡和機器學習在過去幾年一直是高科技領域最熱門的話題之一。這一點很容易看出,由於它們解決了不少真正有趣的用例,如語音識別、圖像識別、甚至是樂樂譜寫。所以,在這篇文章,我決定編制一份囊括一些很好的Python機器學習庫的清單,並將其張貼在下面。python
在我看來,Python是學習(和實現)機器學習技術最好的語言之一,其緣由主要有如下幾點:git
語言簡單:現在,Python成爲新手程序員首選語言的主要緣由是它擁有簡單的語法和龐大的社區。程序員
功能強大:語法簡單並不意味着它功能薄弱。Python一樣也是數據科學家和Web程序員最受歡迎的語言之一。Python社區所建立的庫可讓你作任何你想作的事,包括機器學習。github
豐富的ML庫:目前有大量面向Python的機器學習庫。你能夠根據你的使用狀況、技術和需求從數百個庫中選擇最合適的一個。web
上面最後一點能夠說是最重要的。驅動機器學習的算法至關複雜,包括了不少的數學知識,因此本身動手去實現它們(並保證其正常運行)將會是一件很困難的任務。幸運地是,有不少聰明的、有奉獻精神的人爲咱們作了這個困難的工做,所以咱們只須要專一於手邊的應用程序便可。算法
這並非一個詳盡無遺的清單。有不少代碼並未在此列出,在這裏我只會發布一些很是相關或知名的庫。下面,來看看這份清單吧。編程
我已經對一些比較流行的庫和它們擅長的方向作了一個簡短的描述,在下一節,我會給出一個更完整的項目列表。數組
Tensorflow服務器
這是清單中最新的神經網絡庫。在前幾天剛剛發行,Tensorflow是高級神經網絡庫,能夠幫助你設計你的網絡架構,避免出現低水平的細節錯誤。重點是容許你將計算表示成數據流圖,它更適合於解決複雜問題。網絡
此庫主要使用C++編寫,包括Python綁定,因此你沒必要擔憂其性能問題。我最喜歡的一個特色是它靈活的體系結構,容許你使用相同的API將其部 署到一個或多個CPU或GPU的臺式機、服務器或者移動設備。有此功能的庫並很少,若是要說有,Tensorflow就是其一。
它是爲谷歌大腦項目開發的,目前已被數百名工程師使用,因此無須懷疑它是否可以創造有趣的解決方案。
儘管和其它的庫同樣,你可能必須花一些時間來學習它的API,但花掉的時間應該是很值得的。我只花了幾分鐘瞭解了一下它的核心功能,就已經知道Tensorflow值得我花更多的時間讓我來實現個人網絡設計,而不只僅是經過API來使用。
擅長:神經網絡
網址:http://tensorflow.org/
scikit-learn
scikit-learn絕對是其中一個,若是不是最流行的,那麼也算得上是全部語言中流行的機器學習庫之一。它擁有大量的數據挖掘和數據分析功能,使其成爲研究人員和開發者的首選庫。
其內置了流行的NumPy、SciPy,matplotlib庫,所以對許多已經使用這些庫的人來講就有一種熟悉的感受。儘管與下面列出的其餘庫相比,這個庫顯得水平層次略低,並傾向於做爲許多其餘機器學習實現的基礎。
擅長:很是多
網址:http://scikit-learn.org/
Theano
Theano是一個機器學習庫,容許你定義、優化和評估涉及多維數組的數學表達式,這多是其它庫開發商的一個挫折點。與scikit-learn 同樣,Theano也很好地整合了NumPy庫。GPU的透明使用使得Theano能夠快速而且無錯地設置,這對於那些初學者來講很是重要。然而有些人更 多的是把它描述成一個研究工具,而不是看成產品來使用,所以要按需使用。
Theano最好的功能之一是擁有優秀的參考文檔和大量的教程。事實上,多虧了此庫的流行程度,使你在尋找資源的時候不會遇到太多的麻煩,好比如何獲得你的模型以及運行等。
擅長:神經網絡和深度學習
網址:http://deeplearning.net/software/theano/
Github:https://github.com/Theano/Theano
Pylearn2
大多數Pylearn2的功能實際上都是創建在Theano之上,因此它有一個很是堅實的基礎。
據Pylearn2網址介紹:
Pylearn2不一樣於scikit-learn,Pylearn2旨在提供極大的靈活性,使研究者幾乎能夠作任何想作的事情,而scikit-learn的目的是做爲一個「黑盒」來工做,即便用戶不瞭解實現也能產生很好的結果。
記住,Pylearn2在合適的時候會封裝其它的庫,如scikit-learn,因此在這裏你不會獲得100%用戶編寫的代碼。然而,這確實很好,由於大多數錯誤已經被解決了。像Pylearn2這樣的封裝庫在此列表中有很重要的地位。
擅長:神經網絡
網址:http://deeplearning.net/software/pylearn2/
Github:http://github.com/lisa-lab/pylearn2
Pyevolve
神經網絡研究更讓人興奮和不一樣的領域之一是遺傳算法。從根本上說,遺傳算法只是一個模擬天然選擇的啓發式搜索過程。本質上它是在一些數據上測試神經 網絡,並從一個擬合函數中獲得網絡性能的反饋。而後對網絡迭代地作小的、隨機的變化,再使用相同的數據進行測試。將具備高度擬合分數的網絡做爲輸出,而後 使其做爲下一個網絡的父節點。
Pyevolve提供了一個用於創建和執行這類算法很棒的框架。做者曾表示,V0.6版本也支持遺傳編程,因此在不久的未來,該框架將更傾向於做爲一個進化的計算框架,而不僅是簡單地遺傳算法框架。
擅長:遺傳算法的神經網絡
Github:https://github.com/perone/Pyevolve
NuPIC
Nupic是另外一個庫,與標準的機器學習算法相比,它提供了一些不一樣的功能。它基於一個稱做層次時間記憶(HTM)的新皮層理論,。HTMs能夠看做是一類神經網絡,但在一些理論上有所不一樣。
從根本上說,HTMs是一個分層的、基於時間的記憶系統,能夠接受各類數據。這意味着會成爲一個新的計算框架,來模仿咱們大腦中的記憶和計算是如何密不可分的。對於理論及其應用的詳細說明,請參閱 白皮書。
擅長:HTMs
Github:http://github.com/numenta/nupic
Pattern
此庫更像是一個「全套」庫,由於它不只提供了一些機器學習算法,並且還提供了工具來幫助你收集和分析數據。數據挖掘部分能夠幫助你收集來自谷歌、推 特和維基百科等網絡服務的數據。它也有一個Web爬蟲和HTML DOM解析器。「引入這些工具的優勢就是:在同一個程序中收集和訓練數據顯得更加容易。
在文檔中有個很好的例子,使用一堆推文來訓練一個分類器,用來區分一個推文是「win」仍是「fail」。
from pattern.web import Twitter from pattern.en import tag from pattern.vector import KNN, count twitter, knn = Twitter(), KNN() for i in range(1, 3): for tweet in twitter.search('#win OR #fail', start=i, count=100): s = tweet.text.lower() p = '#win' in s and 'WIN' or 'FAIL' v = tag(s) v = [word for word, pos in v if pos == 'JJ'] # JJ = adjective v = count(v) # {'sweet': 1} if v: knn.train(v, type=p) print knn.classify('sweet potato burger') print knn.classify('stupid autocorrect')
首先使用twitter.search()經過標籤'#win'和'#fail'來收集推文數據。而後利用從推文中提取的形容詞來訓練一個K-近鄰(KNN)模型。通過足夠的訓練,你會獲得一個分類器。僅僅只需15行代碼,還不錯。
擅長:天然語言處理(NLP)和分類。
Github:http://github.com/clips/pattern
Caffe
Caffe是面向視覺應用領域的機器學習庫。你可能會用它來建立深度神經網絡,識別圖像中的實體,甚至能夠識別一個視覺樣式。
Caffe提供GPU訓練的無縫集成,當你訓練圖像時極力推薦使用此庫。雖然Caffe彷佛主要是面向學術和研究的,但它對用於生產使用的訓練模型一樣有足夠多的用途。
擅長:神經網絡/視覺深度學習
網址:http://caffe.berkeleyvision.org/
Github:https://github.com/BVLC/caffe
其它知名庫
這裏還列出了一些其它面向Python的機器學習庫。其中一些庫與上述庫有着相同的功能,而另外一些則有更窄小的目標或是更適合看成學習工具來使用。
基於scikit-learn
· Github
· Github
基於Theano
· Github
原文地址:The Best Machine Learning Libraries In Python(譯者/劉帝偉 審校/劉翔宇 責編/仲浩)
譯者簡介: 劉帝偉,中南大學軟件學院在讀研究生,關注機器學習、數據挖掘及生物信息領域。
本文爲CSDN編譯整理,未經容許不得轉載,如需轉載請聯繫market#csdn.net(#換成@)