前機器學(xué)習(xí)紅遍全球。男女老少都在學(xué)機器學(xué)習(xí)模型,分類器,神經(jīng)網(wǎng)絡(luò)。你也想成為一份子,但你該如何開始?
在這篇文章中我們會講Python的重要特征和它適用于機器學(xué)習(xí)的原因,介紹一些重要的機器學(xué)習(xí)包,以及其他你可以獲取更詳細資源的地方。
Python很適合用于機器學(xué)習(xí)。首先,它很簡單。如果你完全不熟悉Python但是有一些其他的編程經(jīng)驗(C或者其他編程語言),要上手是很快的。其次,Python的社區(qū)很強大。這使得Python的文檔不僅條理性好,而且容易讀。你還可以在StackOverFlow上找到關(guān)于很多問題詳細解答(學(xué)習(xí)基石)。再次,一個強大的社區(qū)帶來的副產(chǎn)品就是大量有用程序庫(Python內(nèi)部自帶的和第三方軟件),基本上可以解決你所有的問題(包括機器學(xué)習(xí))。
但我聽說Python很慢
Python是很慢。它不是執(zhí)行快的語言,擁有那么多好用的抽象是要付出代價的。
但這是個可以解決的問題:程序庫可以把計算量繁重的部分外包給其他更高效(但更難使用)的語言,例如C和C++。比如NumPy這個提供數(shù)值運算的程序庫,就是用C寫的,運行速度超快。在實際運用中,幾乎所有程序庫都會使用NumPy去完成計算繁重的部分。如果你看到Numpy,你應(yīng)該想到它很快。
所以你是可以讓程序的運行速度跟它的低層語言實現(xiàn)的運行速度相比擬的。你沒有必要擔(dān)心程序的運行速度。
值得知道的Python程序庫
Scikit-learn
你剛開始學(xué)機器學(xué)習(xí)嗎?如果你需要一個涵蓋了特征工程,模型訓(xùn)練和模型測試所有功能的程序庫,scikit-learn是你的選擇!這個的免費軟件提供了機器學(xué)習(xí)和數(shù)據(jù)挖掘所需要的所有工具。它是目前Python機器學(xué)習(xí)的標準庫。要使用任何成熟的機器學(xué)習(xí)算法都推薦使用這個庫。
這個程序庫支持分類和回歸,實現(xiàn)了基本所有的經(jīng)典算法(支持向量機,隨機森林,樸素貝葉斯等等)。程序庫的設(shè)計讓遷移算法十分容易,使用不同的算法做實驗非常輕松。這些經(jīng)典算法可用性很強,能用于大量不同的情況。
但這并不是Scikit-learn的全部功能,它同樣可以用來做降維,聚類等等任何你所能想到的。由于它構(gòu)建在Numpy和Scipy之上(所有的數(shù)值計算都是由C語言來完成的),它的運行速度也超快。
這些例子可以告訴你這個庫的功能,如果你想學(xué)習(xí)如何使用它,可以閱讀教程。
NLTK
NLTK不算是一個機器學(xué)習(xí)的程序庫,但它是做自然語言處理(NLP)必須的一個庫。除了用于文字處理的功能,例如聚類,分詞,詞干提取,標記,解析等,它還包含了大量的數(shù)據(jù)集和其他關(guān)于詞法的資源(可用于模型訓(xùn)練)。
把所有這些打包在一起的好處就不用再多說了。如果你對NLP感興趣,可以看看這些教程!
Theano
Theano被廣泛應(yīng)用于工業(yè)界和學(xué)術(shù)界,它是所有深度學(xué)習(xí)架構(gòu)的鼻祖。Theano是用Python,結(jié)合Numpy實現(xiàn)的。你可以用它來構(gòu)建用多維數(shù)組實現(xiàn)神經(jīng)網(wǎng)絡(luò)。Theano會處理所有數(shù)學(xué)計算,你不需要知道底層的數(shù)學(xué)公式實現(xiàn)。
早在支持使用GPU進行計算不像今天這樣普及的時候,Theano就已經(jīng)提供了對GPU計算的支持。這個程序庫目前已經(jīng)非常成熟,能夠支持很多不同類型的操作。這使得Theano可以在和其他庫比較的時候勝出。
目前關(guān)于Theano的問題是API不是很好用,對于新手來說上手困難。不過市面上已經(jīng)有了解決這個問題的封裝包,比如Keras, Blocks 和 Lasagne,都可以簡化Theano的使用。
TensorFlow
谷歌大腦團隊為了內(nèi)部使用創(chuàng)造了TensorFlow,2015年將其開源化。設(shè)計初衷是取代他們已有的封閉機器學(xué)習(xí)框架DistBelief,據(jù)說該構(gòu)架太過于依賴Google的整體構(gòu)架,也不夠靈活,在分享代碼的時候非常不方便。
于是就有了TensorFlow。谷歌從以前的錯誤中吸取了教訓(xùn)。許多人認為TensorFlow是Theano的改進版,它提供了更靈活和好用的API。可以用于科研和工業(yè)界,同時支持使用大量的GPU進行模型訓(xùn)練。TensorFlow支持的操作沒有Theano多,但是它的計算可視化比Theano好。
TensorFlow目前非常流行。如果今天這篇文章里面提到的名字你只聽說了一個,那很有可能是這個。每天都有新的提到TensorFlow的博文或?qū)W術(shù)文章發(fā)表。這個流行度提供了大量的用戶和教程,新人很容易上手。
Keras
Keras是一個提供更高層神經(jīng)網(wǎng)絡(luò)API的庫,它可以基于Theano或者TensorFlow。它擁有這兩個庫強大的功能卻又同時大大地簡化了使用難度。它將用戶的體驗放在首要地位,提供簡單的API和很有用的錯誤信息。
同時Keras的設(shè)計基于模塊,這就使得你能自由組合不同的模型(神經(jīng)層,成本函數(shù)等等),而且模型的可擴展性很好,因為你只需要簡單的將新模塊跟已有的連起來即可。
有人覺得Keras太好用了,簡直就是在作弊。如果你開始用深度學(xué)習(xí),可以看看例子 和 文檔,對于你可以用它做什么有個數(shù)。如果你要學(xué)習(xí)使用它,可以從 這個教程開始。
兩個類似的庫有Lasagne 和 Blocks, 但它們只支持Theano。如果你試過了Keras但是你不喜歡它你可以試試這些其他的庫,也許它們更適合你。
PyTorch
還有一個有名的深度學(xué)習(xí)架構(gòu)是Torch,它是用Lua實現(xiàn)的。Facebook用Python實現(xiàn)了Torch,叫做PyTorch,并將它開源了。用這個庫你可以使用Torch使用的低層的庫,但是你可以使用Python而不是Lua。
PyTorch對查錯的支持很好,這是因為Theano和TensorFlow使用符號計算而PyTorch則不是。使用符號計算就表明在一行代碼被解釋的時候,一個操作(x+y)并不會被執(zhí)行,在那之前,它必須先被編譯(解釋成CUDA或者C語言)。這就讓用Theano和TensorFlow的時候很難查錯,因為很難把報錯跟當前的代碼聯(lián)系起來。這樣做有它的好處,不過查錯簡單不在其中。
如果你想開始學(xué)PyTorch,官方文檔適合初學(xué)者也會包含有難度的內(nèi)容。
機器學(xué)習(xí)的步?
你講了這么多機器學(xué)習(xí)的包,我應(yīng)該用哪一個?我怎樣比較它們?我從哪里開始?
你可以試用我們面向初學(xué)者的平臺Ape Advice?,就不用煩細節(jié)的問題了。如果你完全沒有接觸過機器學(xué)習(xí),從scikit-learn開始。你可以了解標記,訓(xùn)練和測試是怎樣工作的,以及一個模型是如何被建立的。
如果你想試試深度學(xué)習(xí),從 Keras開始,畢竟這是大家公認的簡單的框架。你可以先試試,找找感覺。當你有點經(jīng)驗之后,你可以開始考慮你需要的是什么:速度,不同的API,或者別的什么,之后你就能更好地決定了。
目前有海量的文章比較Theano,Torch和TensorFlow。沒有人能說哪個。你要記住的是所有包都支持很多東西,而且也在不斷改進,想相互比較它們也越來越難。六個月前的標準有可能已經(jīng)過時了,一年前的評價說框架X沒有Y功能也不一定還有效。
,如果你想用NLP,可以試試MonkeyLearn!我們的這個平臺所提供的用戶界面讓建造模型,訓(xùn)練模型和改進NLP模型都非常容易試下。你可以用事先訓(xùn)練好的模型處理常見問題(意見挖掘,話題探測或者提取關(guān)鍵字),也可以為你特有的問題設(shè)計一個新的算法。你不需要擔(dān)心底層實現(xiàn)或者發(fā)布你的模型,我們可擴展的云系統(tǒng)會幫你完成這些。你可以免費注冊,馬上開始試用我們超棒的API。
小結(jié)
這篇關(guān)于用Python庫做機器學(xué)習(xí)的簡介就到此為止。我想強調(diào)的是不要被細節(jié)嚇住了,放手嘗試。讓你的好奇心指導(dǎo)你前進,不要害怕進行不同的實驗。
好了就不說廢話了,現(xiàn)在給大家分享我的Python學(xué)習(xí)資料嘍!獲取資料方式可以到粵嵌官網(wǎng)咨詢哦!