最好的Python機器學習庫

2021-07-09 01:41:24 字數 3691 閱讀 7418

毫無疑問,神經網路和機器學習在過去幾年一直是高科技領域最熱門的話題之一。這一點很容易看出,因為它們解決了很多真正有趣的用例,如語音識別、影象識別、甚至是樂曲譜寫。因此,在這篇文章,我決定編制乙份囊括一些很好的python機器學習庫的清單,並將其張貼在下面。

在我看來,python是學習(和實現)機器學習技術最好的語言之一,其原因主要有以下幾點:

語言簡單:如今,python成為新手程式設計師首選語言的主要原因是它擁有簡單的語法和龐大的社群。

功能強大:語法簡單並不意味著它功能薄弱。python同樣也是資料科學家和web程式設計師最受歡迎的語言之一。python社群所建立的庫可以讓你做任何你想做的事,包括機器學習。

豐富的ml庫:目前有大量面向python的機器學習庫。你可以根據你的使用情況、技術和需求從數百個庫中選擇最合適的乙個。

上面最後一點可以說是最重要的。驅動機器學習的演算法相當複雜,包括了很多的數學知識,所以自己動手去實現它們(並保證其正常執行)將會是一件很困難的任務。幸運地是,有很多聰明的、有奉獻精神的人為我們做了這個困難的工作,因此我們只需要專注於手邊的應用程式即可。

這並不是乙個詳盡無遺的清單。有很多**並未在此列出,在這裡我只會發布一些非常相關或知名的庫。下面,來看看這份清單吧。

我已經對一些比較流行的庫和它們擅長的方向做了乙個簡短的描述,在下一節,我會給出乙個更完整的專案列表。

tensorflow

這是清單中最新的神經網路庫。在前幾天剛剛發行,tensorflow是高階神經網路庫,可以幫助你設計你的網路架構,避免出現低水平的細節錯誤。重點是允許你將計算表示成資料流圖,它更適合於解決複雜問題。

此庫主要使用c++編寫,包括python繫結,所以你不必擔心其效能問題。我最喜歡的乙個特點是它靈活的體系結構,允許你使用相同的api將其部署到乙個或多個cpu或gpu的台式電腦、伺服器或者移動裝置。有此功能的庫並不多,如果要說有,tensorflow就是其一。

它是為谷歌大腦專案開發的,目前已被數百名工程師使用,所以無須懷疑它是否能夠創造有趣的解決方案。

儘管和其它的庫一樣,你可能必須花一些時間來學習它的api,但花掉的時間應該是很值得的。我只花了幾分鐘了解了一下它的核心功能,就已經知道tensorflow值得我花更多的時間讓我來實現我的網路設計,而不僅僅是通過api來使用。

scikit-learn

scikit-learn絕對是其中乙個,如果不是最流行的,那麼也算得上是所有語言中流行的機器學習庫之一。它擁有大量的資料探勘和資料分析功能,使其成為研究人員和開發者的首選庫。

其內建了流行的numpy、scipy,matplotlib庫,因此對許多已經使用這些庫的人來說就有一種熟悉的感覺。儘管與下面列出的其他庫相比,這個庫顯得水平層次略低,並傾向於作為許多其他機器學習實現的基礎。

theano

theano是乙個機器學習庫,允許你定義、優化和評估涉及多維陣列的數學表示式,這可能是其它庫開發商的乙個挫折點。與scikit-learn一樣,theano也很好地整合了numpy庫。gpu的透明使用使得theano可以快速並且無錯地設定,這對於那些初學者來說非常重要。然而有些人更多的是把它描述成乙個研究工具,而不是當作產品來使用,因此要按需使用。

theano最好的功能之一是擁有優秀的參考文件和大量的教程。事實上,多虧了此庫的流行程度,使你在尋找資源的時候不會遇到太多的麻煩,比如如何得到你的模型以及執行等。

pylearn2

大多數pylearn2的功能實際上都是建立在theano之上,所以它有乙個非常堅實的基礎。

據pylearn2**介紹:

pylearn2不同於scikit-learn,pylearn2旨在提供極大的靈活性,使研究者幾乎可以做任何想做的事情,而scikit-learn的目的是作為乙個「黑盒」來工作,即使使用者不了解實現也能產生很好的結果。
記住,pylearn2在合適的時候會封裝其它的庫,如scikit-learn,所以在這裡你不會得到100%使用者編寫的**。然而,這確實很好,因為大多數錯誤已經被解決了。像pylearn2這樣的封裝庫在此列表中有很重要的地位。

pyevolve

神經網路研究更讓人興奮和不同的領域之一是遺傳演算法。從根本上說,遺傳演算法只是乙個模擬自然選擇的啟發式搜尋過程。本質上它是在一些資料上測試神經網路,並從乙個擬合函式中得到網路效能的反饋。然後對網路迭代地做小的、隨機的變化,再使用相同的資料進行測試。將具有高度擬合分數的網路作為輸出,然後使其作為下乙個網路的父節點。

pyevolve提供了乙個用於建立和執行這類演算法很棒的框架。作者曾表示,v0.6版本也支援遺傳程式設計,所以在不久的將來,該框架將更傾向於作為乙個進化的計算框架,而不只是簡單地遺傳演算法框架。

nupic

nupic是另乙個庫,與標準的機器學習演算法相比,它提供了一些不同的功能。它基於乙個稱作層次時間記憶(htm)的新皮層理論,。htms可以看作是一類神經網路,但在一些理論上有所不同。

從根本上說,htms是乙個分層的、基於時間的記憶系統,可以接受各種資料。這意味著會成為乙個新的計算框架,來模仿我們大腦中的記憶和計算是如何密不可分的。

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) #

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行**,還不錯。

caffe

caffe是面向視覺應用領域的機器學習庫。你可能會用它來建立深度神經網路,識別影象中的實體,甚至可以識別乙個視覺樣式。

caffe提供gpu訓練的無縫整合,當你訓練影象時極力推薦使用此庫。雖然caffe似乎主要是面向學術和研究的,但它對用於生產使用的訓練模型同樣有足夠多的用途。

其它知名庫

這裡還列出了一些其它面向python的機器學習庫。其中一些庫與上述庫有著相同的功能,而另一些則有更窄小的目標或是更適合當作學習工具來使用。

譯者簡介: 劉帝偉,中南大學軟體學院在讀研究生,關注機器學習、資料探勘及生物資訊領域。

最好的Python機器學習庫

發表於 2015 12 10 09 31 stackabuse scott robinson 機器學習 深度學習 python 資料科學家 自然語言處理 github 摘要 神經網路和機器學習在過去幾年一直是高科技領域最熱門的話題之一。這一點很容易看出,因為它們解決了很多真正有趣的用例,如語音識別 ...

機器學習與深度學習最好的解釋

最好的解釋 機器學習與深度學習 近來我們一直在處理科技行業的流言。這是因為一旦創造了乙個術語,就會出現一定的趨勢。每個人都使用它,而沒有完全得到它,導致錯誤的資訊,混亂,有時甚至是假新聞。在這篇文章中,我們正在看機器學習和深度學習的術語。每當乙個新的工具或應用程式被發明,乙個新的字如下。所以,過去幾...

python機器學習常用的幾個庫

mean age titanic survival age mean 將日期格式2017 11 02轉成2017 11 02 14 data.drop income axis 1 將data中的income列刪除賦給新的特徵,常用於特徵處理 15 data.describe data.columns...