新聞中心

EEPW首頁(yè) > 模擬技術(shù) > 設(shè)計(jì)應(yīng)用 > 7個(gè)步驟掌握使用python進(jìn)行機(jī)器學(xué)習(xí)

7個(gè)步驟掌握使用python進(jìn)行機(jī)器學(xué)習(xí)

作者: 時(shí)間:2018-07-25 來(lái)源:網(wǎng)絡(luò) 收藏

有許多python機(jī)器學(xué)習(xí)資源在線免費(fèi)提供,從哪開(kāi)始?如何進(jìn)行?從零到python機(jī)器學(xué)習(xí)大神只要7個(gè)步驟。

本文引用地址:http://2s4d.com/article/201807/383810.htm

入門(mén),在英語(yǔ)中最打擊人的兩個(gè)單詞,第一部往往是最難的,當(dāng)在這方面有太多選擇,通常讓人崩。

從哪開(kāi)始?

這篇文章旨在用7個(gè)不走帶領(lǐng)python機(jī)器學(xué)習(xí)知識(shí)最少的新人成為知識(shí)淵博從業(yè)者,使用免費(fèi)材料和資源.這個(gè)綱要主要目標(biāo)是幫你選擇可用的眾多選項(xiàng).可以確定有很多,但是哪個(gè)是最好的?它們之間是相輔相成?使用選擇資源的最好順序是什么?

進(jìn)一步,我做出假設(shè)你不是下列的專(zhuān)家:

機(jī)器學(xué)習(xí)

Python

任何Python的機(jī)器學(xué)習(xí),科學(xué)計(jì)算,或者數(shù)據(jù)分析庫(kù)

他有可能幫助你對(duì)第一或第二或二者有一個(gè)基本的認(rèn)識(shí),但不是必需的.在前面的步驟花費(fèi)一些額外的時(shí)間有可能彌補(bǔ)。

第一步 基本Python技能

如果我們打算利用Python進(jìn)行機(jī)器學(xué)習(xí),對(duì)Python有一些基本認(rèn)識(shí)是至關(guān)重要的.幸運(yùn)的是,由于其作為一種廣泛普及的通用編程語(yǔ)言,并應(yīng)用于科學(xué)計(jì)算和機(jī)器學(xué)習(xí),發(fā)現(xiàn)初學(xué)者的教程并不困難.Python經(jīng)驗(yàn)和編程水平一般是選擇出發(fā)點(diǎn)的重點(diǎn)。

首先,你需要安裝Python.因?yàn)樵谟行r(shí)候我們需要使用科學(xué)計(jì)算和機(jī)器學(xué)習(xí)庫(kù),我建議你安裝Anaconda.這是一個(gè)具有工業(yè)強(qiáng)度用于Linux,OSX和Windows的Python實(shí)現(xiàn),為機(jī)器學(xué)習(xí)安裝需要的包,包括Numpy,scikit-learn和Matplotlib(這是作者的觀點(diǎn),我認(rèn)為pandas,scipy這種包也是必不可少的).它同樣包含Ipython notebook,一個(gè)交互式環(huán)境.我建議使用Python2.7(譯者言:當(dāng)全世界都是3.X的時(shí)候再說(shuō)改Python3吧),它仍是占主導(dǎo)地位的安裝版本沒(méi)有其他原因。

如果你沒(méi)有編程知識(shí),我的建議是用下面免費(fèi)的在線書(shū)開(kāi)始,然后學(xué)習(xí)隨后的材料。

Python The Hard Way by Zed A. Shaw

如果你有變成經(jīng)驗(yàn),但是不是Python,或者你剛學(xué)Python,我建議學(xué)習(xí)下面其中一個(gè)或全部:

Google Developers Python Course (視覺(jué)學(xué)習(xí)者強(qiáng)烈推薦,五星好評(píng))

An Introduction to Python for Scientific Computing (from UCSB Engineering) by M. Scott Shell (神奇的Python科學(xué)介紹,60頁(yè))

對(duì)于那些尋求Python30分鐘速成班的可以去(某寶):

Learn X in Y Minutes (X = Python)

當(dāng)然,如果你有Python編程經(jīng)驗(yàn),你可以跳過(guò)這步.即使這樣,我建議你繼續(xù)閱讀Python文檔.

第二步 基礎(chǔ)機(jī)器學(xué)習(xí)技能

KDnuggets’的創(chuàng)始人 Zachary Lipton指出人們對(duì)數(shù)據(jù)科學(xué)家的認(rèn)識(shí)非常不同.實(shí)際上是機(jī)器學(xué)習(xí)領(lǐng)域的反映,因?yàn)閿?shù)據(jù)科學(xué)家的工作包含使用機(jī)器學(xué)習(xí)算法多樣化程度.是否有必要深刻了解算法,從而更有效的創(chuàng)建SVM機(jī)器模型并從中獲取信息?當(dāng)然不是,就像生活中幾乎所有東西,理論理解的深度的要求相對(duì)與實(shí)際應(yīng)用(這是作者的一家之言哈~,譯者是不支持的,不了解你怎么調(diào)參,優(yōu)化模型呢?哈~).獲得機(jī)器學(xué)習(xí)算法的深刻理解已經(jīng)超出了本書(shū)范圍,一般需要大量的時(shí)間投資在學(xué)術(shù)中,或者通過(guò)高強(qiáng)度的自學(xué)。

好消息是你不需要擁有PhD水平的機(jī)器學(xué)習(xí)理論方面的理解,才能用于實(shí)踐.并不是所有碼農(nóng)都為了有效的編碼需要理論的計(jì)算機(jī)科學(xué)教育.這兩點(diǎn)是相同的(所以我翻譯的是碼農(nóng).對(duì),我就是在吐槽~自己. :( )。

Andrew Ng的Course課程經(jīng)常獲得五星好評(píng).但是我的建議是,瀏覽在線課程以前學(xué)生編制的課程筆記.跳過(guò)關(guān)于Octave的筆記(類(lèi)似Matlab語(yǔ)言,和我們追求的Python無(wú)關(guān).譯者注,從用詞上我就能感到作者對(duì)Matlab弄弄的厭惡).但是要注意這些不是官方的筆記,但是似乎能捕獲Andrew Ng課程材料的相關(guān)內(nèi)容.當(dāng)然,如果你有時(shí)間和興趣,可以參加Andrew Ng Coursera的機(jī)器學(xué)習(xí)課程。

Unofficial Andrew Ng course notes

如果你喜歡各種視頻講座,可以看Tom Mitchell的演講視頻.下面是是他最近的演講視頻,我(不是我)感覺(jué)他非常平易近人,我是他的腦殘粉(沒(méi)搞錯(cuò)的話,網(wǎng)上流行的臺(tái)灣國(guó)立大學(xué)的機(jī)器學(xué)習(xí)視頻是模仿Tom Mitchell的,Logo都差不多就左下角右上角加了個(gè)東西.是的,我又在吐槽了)。

Tom Mitchell Machine Learning Lectures

在這里,你不需要所有筆記和視頻.一個(gè)有效的策略包含實(shí)戰(zhàn)演練,適當(dāng)時(shí)候參考上面筆記和視頻.例如,當(dāng)你遇到回歸模型是現(xiàn)實(shí),閱讀Ng筆記的回歸部分或看Mtichell的回歸視頻.

第三步 科學(xué)Python庫(kù)概率

好吧.有了一點(diǎn)Python編程經(jīng)驗(yàn)和機(jī)器學(xué)習(xí)理解后.除了Python還有很多開(kāi)源的庫(kù)用于處理機(jī)器學(xué)習(xí)實(shí)踐.通常,這些是執(zhí)行基本機(jī)器學(xué)習(xí)任務(wù)主要使用的Python庫(kù)。

numpy - N維數(shù)組是非常有用的

pandas - Python數(shù)據(jù)分析庫(kù),包括結(jié)構(gòu)例如dataframes

matplotlib - 2D 繪圖庫(kù)生成出版質(zhì)量圖片

scikit-learn - 用于數(shù)據(jù)分析和數(shù)據(jù)挖掘任務(wù)的機(jī)器學(xué)習(xí)算法.

學(xué)習(xí)這些的優(yōu)秀資料如下:

Scipy Lecture Notes by Gaël Varoquaux, Emmanuelle Gouillart, and Olav Vahtras

這個(gè)pandas的教程非常棒:

10 Minutes to Pandas

在下面的教程中你可能看到一些其他的庫(kù),比如說(shuō) Seaborn,一個(gè)基于Matplotlib的數(shù)據(jù)可視化庫(kù).上述包是廣泛Python機(jī)器學(xué)習(xí)任務(wù)的核心,然而,讓你在下面引用時(shí),理解這些適應(yīng)更多相關(guān)的包而不會(huì)懵.

第四步 開(kāi)始Python機(jī)器學(xué)習(xí)

Python. √

Machine learning fundamentals. √

Numpy. √

Pandas. √

Matplotlib. √

吉時(shí)已到,我們開(kāi)始使用python標(biāo)準(zhǔn)機(jī)器學(xué)習(xí)庫(kù)–scikit-learn實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法吧.

下面大多數(shù)教程和聯(lián)系都在IPython(Jupyter)Notebook中實(shí)現(xiàn).它是Python執(zhí)行的一個(gè)交互式環(huán)境.這些IPython NOtebook可以選擇在線預(yù)覽或下載,并且在你電腦本地交互.

iPython Notebook Overview from Stanford

另外請(qǐng)注意,下面教程來(lái)源于許多在線資源.所有Notebooks 都?xì)w功于作業(yè),你發(fā)現(xiàn)沒(méi)有正確工作,請(qǐng)讓我知道,這種情況會(huì)盡快糾正.我非常想向Jake VanderPlas, Randal Olson, Donne Martin, Kevin Markham, and Colin Raffel等人致敬.因?yàn)樗麄兩衿婷赓M(fèi)可用的資源(50字好評(píng)已給,請(qǐng)返現(xiàn)).

第一個(gè)教程從scikit-learn開(kāi)始,在開(kāi)始下面步驟之前,我建議先做這些.

scikit-learn庫(kù)的一般介紹,Python中最常用的機(jī)器學(xué)習(xí)庫(kù),涵蓋了KNN算法:

An Introduction to scikit-learn by Jake VanderPlas

更深入的介紹,包括知名數(shù)據(jù)集開(kāi)始到項(xiàng)目完成:

Example Machine Learning Notebook by Randal Olson

重點(diǎn)放在scikit-learn中不同模型的評(píng)估策略,涵蓋了訓(xùn)練集/測(cè)試集拆分(后面這句話的點(diǎn)沒(méi)get到呢):

Model Evaluation by Kevin Markham

第五步 python機(jī)器學(xué)習(xí)主題

有了 scikit-learn基礎(chǔ)后,我們可以對(duì)常見(jiàn),實(shí)用的算法做進(jìn)一步深入了解.我們從K-means聚類(lèi)開(kāi)始,一個(gè)廣為人知的機(jī)器學(xué)習(xí)算法.解決無(wú)監(jiān)督學(xué)習(xí)問(wèn)題一個(gè)簡(jiǎn)單有效的方法:

k-means Clustering by Jake VanderPlas

接下來(lái),我們看看分類(lèi)問(wèn)題.了解歷史上最流行分類(lèi)算法之一:

Decision Trees via The Grimm Scientist

讓我們看看連續(xù)數(shù)值預(yù)測(cè):

Linear Regression by Jake VanderPlas

我們可以從過(guò)Logistic回歸解決分類(lèi)問(wèn)題:

Logistic Regression by Kevin Markham

第六步 深入python機(jī)器學(xué)習(xí)主題

我們已經(jīng)開(kāi)始scikit-learn,現(xiàn)在讓我們將注意轉(zhuǎn)向高級(jí)主題.首先SVM(支持向量機(jī)).一個(gè)將復(fù)雜數(shù)據(jù)映射到高維空間的not-necessarily-linear分類(lèi)

Support Vector Machines by Jake VanderPlas

接下來(lái),隨機(jī)森林,一個(gè)組合分類(lèi),通過(guò)考察Kaggle Titanic競(jìng)賽逐步引導(dǎo):

Kaggle Titanic Competition (with Random Forests) by Donne Martin

降維是減少正在考慮問(wèn)題中變量數(shù)目的方法.PCA(Principal Component Analysis,主成分分析)是一種非監(jiān)督的降維方法:

Dimensionality Reduction by Jake VanderPlas

在進(jìn)入到最后一步之前,我們可以花時(shí)間考慮下,我們已經(jīng)在相對(duì)較短的時(shí)間內(nèi)走了很長(zhǎng)一段路.

使用Python和它的機(jī)器學(xué)習(xí)庫(kù),我們已經(jīng)介紹一些最常見(jiàn)和總所周知的機(jī)器學(xué)習(xí)算法(K-means,支持向量機(jī),KNN),考察了強(qiáng)大的組合技術(shù)(隨機(jī)森林),研究了支持任務(wù)的額外機(jī)器學(xué)習(xí)算法(降維,模型驗(yàn)證技術(shù)).隨著這些基礎(chǔ)的機(jī)器學(xué)習(xí)技巧的學(xué)習(xí),我們已經(jīng)擁有了一些使用的技能.

第七步 python深度學(xué)習(xí)

深度學(xué)習(xí)無(wú)處不在.深度學(xué)習(xí)構(gòu)建與神經(jīng)網(wǎng)絡(luò)研究可以追溯到十幾年前,但是追溯到過(guò)去幾年的最新進(jìn)展顯著增加.如果你不熟悉深度學(xué)習(xí),KDnuggets有很多文教詳細(xì)介紹了眾多最新創(chuàng)新,成就和令人贊譽(yù)的技術(shù).

最后一步并不對(duì)深度學(xué)習(xí)軟件分類(lèi),介紹2個(gè)引領(lǐng)當(dāng)代Python深度學(xué)習(xí)庫(kù)的幾個(gè)簡(jiǎn)單的網(wǎng)絡(luò)實(shí)現(xiàn).對(duì)于有興趣挖掘更深的深度學(xué)習(xí)者,我建議你先從一下免費(fèi)書(shū)開(kāi)始:

* Neural Networks and Deep Learning by Michael Nielsen

Theano

Theano是第一個(gè)Python深度學(xué)習(xí)庫(kù),按作者的話來(lái)說(shuō):

Theano是一個(gè)python的庫(kù),可以讓你高效地定義,優(yōu)化,評(píng)估包含多維數(shù)據(jù)的數(shù)學(xué)表達(dá)式,下面Theano的機(jī)器學(xué)習(xí)入門(mén)教程是非常長(zhǎng)的,但相當(dāng)?shù)陌?十分生動(dòng):

* Theano Deep Learning Tutorial by Colin Raffel

Caffe

另一個(gè)測(cè)試執(zhí)行的庫(kù),caffe.同樣的:

Caffe是一個(gè)帶有表達(dá)式,速度和模塊化的深度學(xué)習(xí)庫(kù).由 Berkeley Vision and Learning Center (BVLC) 和社區(qū)貢獻(xiàn)者開(kāi)發(fā).

我們已經(jīng)介紹了很多有趣的例子,這里再給出一個(gè), 用Caffe實(shí)現(xiàn)Google’s #DeepDream.了解了這么多,自己動(dòng)手放飛夢(mèng)想吧(另外,關(guān)于深度學(xué)習(xí)的開(kāi)源軟件非常多,更多的可以看的翻譯的GitHub深度學(xué)習(xí)庫(kù),你了解多少?)。

Dreaming Deep with Caffe via Google’s GitHub

我沒(méi)不能保證這個(gè)過(guò)程會(huì)很快或很容易,但如果你把時(shí)間按照上面的7個(gè)步驟做,沒(méi)有任何理由,你不能達(dá)到合理水平,理解一些機(jī)器學(xué)習(xí)算法并利用Python流行的庫(kù)實(shí)現(xiàn)它,包括一些目前的深度學(xué)習(xí)研究前沿。



關(guān)鍵詞:

評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉