使用Python開啟機器學習

2021-08-28 18:12:02 字數 3015 閱讀 4082

目前機器學習紅遍全球。男女老少都在學機器學習模型,分類器,神經網路和吳恩達。你也想成為乙份子,但你該如何開始?

在這篇文章中我們會講python的重要特徵和它適用於機器學習的原因,介紹一些重要的機器學習包,以及其他你可以獲取更詳細資源的地方。

python很適合用於機器學習。首先,它很簡單。如果你完全不熟悉python但是有一些其他的程式設計經驗(c或者其他程式語言),要上手是很快的。其次,python的社群很強大。這使得python的文件不僅條理性好,而且容易讀。你還可以在stackoverflow上找到關於很多問題詳細解答(學習基石)。再次,乙個強大的社群帶來的副產品就是大量有用程式庫(python內部自帶的和第三方軟體),基本上可以解決你所有的問題(包括機器學習)。

python是很慢。它不是執行最快的語言,擁有那麼多好用的抽象是要付出代價的。

但這是個可以解決的問題:程式庫可以把計算量繁重的部分外包給其他更高效(但更難使用)的語言,例如c和c++。比如numpy這個提供數值運算的程式庫,就是用c寫的,執行速度超快。在實際運用中,幾乎所有程式庫都會使用numpy去完成計算繁重的部分。如果你看到numpy,你應該想到它很快。

所以你是可以讓程式的執行速度跟它的低層語言實現的執行速度相比擬的。你沒有必要擔心程式的執行速度。

你剛開始學機器學習嗎?如果你需要乙個涵蓋了特徵工程,模型訓練和模型測試所有功能的程式庫,scikit-learn是你的最佳選擇!這個優秀的免費軟體提供了機器學習和資料探勘所需要的所有工具。它是目前python機器學習的標準庫。要使用任何成熟的機器學習演算法都推薦使用這個庫。

這個程式庫支援分類和回歸,實現了基本所有的經典演算法(支援向量機,隨機森林,樸素貝葉斯等等)。程式庫的設計讓遷移演算法十分容易,使用不同的演算法做實驗非常輕鬆。這些經典演算法可用性很強,能用於大量不同的情況。

但這並不是scikit-learn的全部功能,它同樣可以用來做降維,聚類等等任何你所能想到的。由於它構建在numpy和scipy之上(所有的數值計算都是由c語言來完成的),它的執行速度也超快。

這些例子可以告訴你這個庫的功能,如果你想學習如何使用它,可以閱讀教程。

nltk不算是乙個機器學習的程式庫,但它是做自然語言處理(nlp)必須的乙個庫。除了用於文書處理的功能,例如聚類,分詞,詞幹提取,標記,解析等,它還包含了大量的資料集和其他關於詞法的資源(可用於模型訓練)。

把所有這些打包在一起的好處就不用再多說了。如果你對nlp感興趣,可以看看這些教程!

theano被廣泛應用於工業界和學術界,它是所有深度學習架構的鼻祖。theano是用python,結合numpy實現的。你可以用它來構建用多維陣列實現神經網路。theano會處理所有數學計算,你不需要知道底層的數學公式實現。

早在支援使用gpu進行計算不像今天這樣普及的時候,theano就已經提供了對gpu計算的支援。這個程式庫目前已經非常成熟,能夠支援很多不同型別的操作。這使得theano可以在和其他庫比較的時候勝出。

目前關於theano最大的問題是api不是很好用,對於新手來說上手困難。不過市面上已經有了解決這個問題的封裝包,比如keras, blocks 和 lasagne,都可以簡化theano的使用。

谷歌大腦團隊為了內部使用創造了tensorflow,2023年將其開源化。設計初衷是取代他們已有的封閉機器學習框架distbelief,據說該構架太過於依賴google的整體構架,也不夠靈活,在分享**的時候非常不方便。

於是就有了tensorflow。谷歌從以前的錯誤中吸取了教訓。許多人認為tensorflow是theano的改進版,它提供了更靈活和好用的api。可以用於科研和工業界,同時支援使用大量的gpu進行模型訓練。tensorflow支援的操作沒有theano多,但是它的計算視覺化比theano好。

tensorflow目前非常流行。如果今天這篇文章裡面提到的名字你只聽說了乙個,那很有可能是這個。每天都有新的提到tensorflow的博文或學術文章發表。這個流行度提供了大量的使用者和教程,新人很容易上手。

keras是乙個提供更高層神經網路api的庫,它可以基於theano或者tensorflow。它擁有這兩個庫強大的功能卻又同時大大地簡化了使用難度。它將使用者的體驗放在首要地位,提供簡單的api和很有用的錯誤資訊。

同時keras的設計基於模組,這就使得你能自由組合不同的模型(神經層,成本函式等等),而且模型的可擴充套件性很好,因為你只需要簡單的將新模組跟已有的連起來即可。

有人覺得keras太好用了,簡直就是在作弊。如果你開始用深度學習,可以看看例子 和 文件,對於你可以用它做什麼有個數。如果你要學習使用它,可以從 這個教程開始。

還有乙個有名的深度學習架構是torch,它是用lua實現的。facebook用python實現了torch,叫做pytorch,並將它開源了。用這個庫你可以使用torch使用的低層的庫,但是你可以使用python而不是lua。

pytorch對查錯的支援很好,這是因為theano和tensorflow使用符號計算而pytorch則不是。使用符號計算就表明在一行**被解釋的時候,乙個操作(x+y)並不會被執行,在那之前,它必須先被編譯(解釋成cuda或者c語言)。這就讓用theano和tensorflow的時候很難查錯,因為很難把報錯跟當前的**聯絡起來。這樣做有它的好處,不過查錯簡單不在其中。

如果你想開始學pytorch,官方文件適合初學者也會包含有難度的內容。

你講了這麼多機器學習的包,我應該用哪乙個?我怎樣比較它們?我從**開始?

你可以試用我們面向初學者的平台ape advice™,就不用煩細節的問題了。如果你完全沒有接觸過機器學習,從scikit-learn開始。你可以了解標記,訓練和測試是怎樣工作的,以及乙個模型是如何被建立的。

如果你想試試深度學習,從keras開始,畢竟這是大家公認的最簡單的框架。你可以先試試,找找感覺。當你有點經驗之後,你可以開始考慮你最需要的是什麼:速度,不同的api,或者別的什麼,之後你就能更好地決定了。

目前有海量的文章比較theano,torch和tensorflow。沒有人能說哪個最好。你要記住的是所有包都支援很多東西,而且也在不斷改進,想相互比較它們也越來越難。六個月前的標準有可能已經過時了,一年前的評價說框架x沒有y功能也不一定還有效。

開啟機器學習之旅

從今天開始,準備做深入學習人工智慧的相關知識。先從機器學習知識開始。因為之前有在網易公開課上簡單看過ng的機器學習課程,不過那個是當時在斯坦福錄製的,比較老。這次要系統全面深入地學習,畢竟也需要與時俱進麼,雖然貌似好像最近ai沒有那麼熱了,還是學點知識吧 主要從以下幾個 進行學習。包括 google...

python機器 python機器學習

熱詞系列 打卡 mark一下,以後看 每天打卡學習 1 python 基礎 bv1lt4y1u7un 2 python 高階 bv1jz411b7dh 3 python 資料庫 bv1pg4y1a7a7 4 python gui與坦克大戰 bv1je411f72o 5 python numpy bv...

Scikit學習 使用Python進行機器學習

在此文中,我們將討論python中的scikit learn。在談論scikit learn之前,必須先了解機器學習的概念,並且必須知道如何將python用於資料科學。借助機器學習,您無需手動收集見解。您只需要乙個演算法,機器就會為您完成剩下的工作!這不令人興奮嗎?scikit學習是我們可以使用py...