Python數(shù)據(jù)科學(xué)家的學(xué)習(xí)路徑
假如你想成為一個數(shù)據(jù)科學(xué)家,或者已經(jīng)是數(shù)據(jù)科學(xué)家的你想擴展你的技能,那么你已經(jīng)來對地方了。本文的目的就是給數(shù)據(jù)分析方面的Python新手提供一個完整的學(xué)習(xí)路徑。該路徑提供了你需要學(xué)習(xí)的利用Python進行數(shù)據(jù)分析的所有步驟的完整概述。如果你已經(jīng)有一些相關(guān)的背景知識,或者你不需要路徑中的所有內(nèi)容,你可以隨意調(diào)整你自己的學(xué)習(xí)路徑,并且讓大家知道你是如何調(diào)整的。
步驟0:熱身
開始學(xué)習(xí)旅程之前,先回答第一個問題:為什么使用Python?或者,Python如何發(fā)揮作用?
觀看DataRobot創(chuàng)始人Jeremy在PyCon Ukraine 2014上的30分鐘演講,來了解Python是多么的有用。
步驟1:設(shè)置你的機器環(huán)境
現(xiàn)在你已經(jīng)決心要好好學(xué)習(xí)了,也是時候設(shè)置你的機器環(huán)境了。最簡單的方法就是從http://Continuum.io上下載分發(fā)包Anaconda。Anaconda將你以后可能會用到的大部分的東西進行了打包。采用這個方法的主要缺點是,即使可能已經(jīng)有了可用的底層庫的更新,你仍然需要等待Continuum去更新Anaconda包。當(dāng)然如果你是一個初學(xué)者,這應(yīng)該沒什么問題。
步驟2:學(xué)習(xí)Python語言的基礎(chǔ)知識
你應(yīng)該先去了解Python語言的基礎(chǔ)知識、庫和數(shù)據(jù)結(jié)構(gòu)。Codecademy上的Python課程是你最好的選擇之一。完成這個課程后,你就能輕松的利用Python寫一些小腳本,同時也能理解Python中的類和對象。
- 具體學(xué)習(xí)內(nèi)容:列表Lists,元組Tuples,字典Dictionaries,列表推導(dǎo)式,字典推導(dǎo)式。
- 任務(wù):解決HackerRank上的一些Python教程題,這些題能讓你更好的用Python腳本的方式去思考問題。
- 替代資源:如果你不喜歡交互編碼這種學(xué)習(xí)方式,你也可以學(xué)習(xí)谷歌的Python課程。這個2天的課程系列不但包含前邊提到的Python知識,還包含了一些后邊將要討論的東西。
步驟3:學(xué)習(xí)Python語言中的正則表達(dá)式
你會經(jīng)常用到正則表達(dá)式來進行數(shù)據(jù)清理,尤其是當(dāng)你處理文本數(shù)據(jù)的時候。學(xué)習(xí)正則表達(dá)式的最好方法是參加谷歌的Python課程,它會讓你能更容易的使用正則表達(dá)式。
步驟4:學(xué)習(xí)Python中的科學(xué)庫—NumPy, SciPy, Matplotlib以及Pandas
從這步開始,學(xué)習(xí)旅程將要變得有趣了。下邊是對各個庫的簡介,你可以進行一些常用的操作:
- 根據(jù)NumPy教程進行完整的練習(xí),特別要練習(xí)數(shù)組arrays。這將會為下邊的學(xué)習(xí)旅程打好基礎(chǔ)。
- 接下來學(xué)習(xí)Scipy教程。看完Scipy介紹和基礎(chǔ)知識后,你可以根據(jù)自己的需要學(xué)習(xí)剩余的內(nèi)容。
- 這里并不需要學(xué)習(xí)Matplotlib教程。對于我們這里的需求來說,Matplotlib的內(nèi)容過于廣泛。目前只需要簡單了解一些就可以了。
- 最后學(xué)習(xí)Pandas。Pandas為Python提供DataFrame功能(類似于R)。這也是你應(yīng)該花更多的時間練習(xí)的地方。Pandas會成為所有中等規(guī)模數(shù)據(jù)分析的最有效的工具。
您還可以學(xué)習(xí)兩篇博客Exploratory Data Analysis with Pandas和Data munging with Pandas中的內(nèi)容。
額外資源:
- 如果你需要一本關(guān)于Pandas和Numpy的書,建議Wes McKinney寫的“Python for Data Analysis”。
步驟5:有用的數(shù)據(jù)可視化
參加哈佛CS109的這個課程。你可以跳過前邊的2分鐘,但之后的內(nèi)容都是干貨。你可以根據(jù)這個任務(wù)來完成課程的學(xué)習(xí)。
步驟6:學(xué)習(xí)Scikit-learn庫和機器學(xué)習(xí)的內(nèi)容
現(xiàn)在,我們要開始學(xué)習(xí)整個過程的實質(zhì)部分了。Scikit-learn是機器學(xué)習(xí)領(lǐng)域最有用的Python庫。這里是該庫的簡要概述。完成哈佛CS109課程的課程10到課程18,這些課程包含了機器學(xué)習(xí)的概述,同時介紹了像回歸、決策樹、整體模型等監(jiān)督算法以及聚類等非監(jiān)督算法。你可以根據(jù)各個課程的任務(wù)來完成相應(yīng)的課程。
額外資源:
- 如果說有那么一本書是你必讀的,推薦Programming Collective Intelligence。這本書雖然有點老,但依然是該領(lǐng)域最好的書之一。
- 此外,你還可以參加來自Yaser Abu-Mostafa的機器學(xué)習(xí)課程,這是最好的機器學(xué)習(xí)課程之一。如果你需要更易懂的機器學(xué)習(xí)技術(shù)的解釋,你可以選擇來自Andrew Ng的機器學(xué)習(xí)課程,并且利用Python做相關(guān)的課程練習(xí)。
步驟7:練習(xí),練習(xí),再練習(xí)
恭喜你,你已經(jīng)完成了整個學(xué)習(xí)旅程。
你現(xiàn)在已經(jīng)學(xué)會了你需要的所有技能。現(xiàn)在就是如何練習(xí)的問題了,還有比通過在Kaggle上和數(shù)據(jù)科學(xué)家們進行競賽來練習(xí)更好的方式嗎?深入一個當(dāng)前Kaggle上正在進行的比賽,嘗試使用你已經(jīng)學(xué)過的所有知識來完成這個比賽。
步驟8:深度學(xué)習(xí)
現(xiàn)在你已經(jīng)學(xué)習(xí)了大部分的機器學(xué)習(xí)技術(shù),是時候關(guān)注一下深度學(xué)習(xí)了。很可能你已經(jīng)知道什么是深度學(xué)習(xí),但是如果你仍然需要一個簡短的介紹,可以看這里。
我自己也是深度學(xué)習(xí)的新手,所以請有選擇性的采納下邊的一些建議。deeplearning.net上有深度學(xué)習(xí)方面最全面的資源,在這里你會發(fā)現(xiàn)所有你想要的東西—講座、數(shù)據(jù)集、挑戰(zhàn)、教程等。你也可以嘗試參加Geoff Hinton的課程,來了解神經(jīng)網(wǎng)絡(luò)的基本知識。
附言:這篇文章雖然是2015年的,但是對于剛?cè)腴Tpython,同時想學(xué)數(shù)據(jù)科學(xué)的同學(xué)還是很有參考價值的。而且點開原文后,作者有在開頭更新了一版2019年學(xué)習(xí)路徑,有興趣的也可以去看看。

























