Contents ...
udn網路城邦
自學Python經典線上課程分享 – 以"數據分析"為方向
2020/07/14 22:34
瀏覽488
迴響0
推薦0
引用0

學習資源

在Python自學的這條路,資源一直都非常多,除了線上課程,書籍也是我的常用來源。另外youtube、谷歌、StackOverflow等網路資源也都是常用工具。

就我而言,我會把比較偏向“扎根”的部分、或者比較“應用”的部分,直接買線上課程來學,前者是為著「打更穩的基礎」,後者是為了「節省學習時間」。

如果一些比較簡單的語法或概念會在youtube學,而我在實作過程中遇到的各個問題就交給谷歌解決,同時身邊放很多書,隨時想翻時學。

歷程

雖然網路上有一堆標榜「一周內學會Python」之類的課程,但實際上想走這條路,根本是毫無邊際的,而且就算把方向定下來了,我相信也沒人能真正分解出學習步驟,因為這實際上是要透過跌跌撞撞、不斷撞牆來修正下一階段要怎麼走(跟「機器學習」的概念很像)。

設立階段目標

既然這是一條漫無邊際的路,目標在遙遠的天邊,所以我們就必須建立許多的階段目標來讓我們能夠走下去。我有時候會以實作出一個功能作為目標,有時候是以把某系列課程或知識學完做為目標。只要記得每次設立新目標的同時,不要忘了原本的學習方向與比重就好了。


我的線上學習之路

我的自學主軸是使用線上學習,對於學習項目通常會「分層、分類」過,然後配合目前實作內容來選擇。通常「編程基礎、理論基礎」層面,以及「應用功能」層面,兩方面需要交叉學習是最好的,這樣才能夠知道自己學的理論是否能用。

以下我將上過的課程經過分類後,我自己認為比較經典、具有代表性的課程分享在這邊。不過我是學數據分析與應用比較有相關的方向,所以課程也都以此為主軸選的。

   

Python深入基礎課程

https://www.udemy.com/user/fredbaptiste/

學Python最容易被人質疑的就是「編程基礎不足」,而這的確很容易發生。我知道這個問題後,就去找比較深入基礎的課程,結果找到了"Python3 Deep Dive"系列課程,講師是Fred Baptiste。還居然一買就發現是我要的,而且對於課程非常的驚喜,這應該是我在udemy上最愛的講師了。目前上架四個課程,但我一直在等他的第五個課程。

講師Fred Baptiste是數學背景,所以比較追求根本,他的四個課程幾乎沒有用到第三方套件,他說這些東西才是「Python的根本」。我一開始對此是有點沮喪,但慢慢地有領會到這件事,很多時候寫個小功能根本不需要(也不應該)去下載龐大的第三方套件。

目前Fred Baptiste的四門課程,每門大約三四十小時,沒有字幕,不過老師用的英文不難,聽習慣後是沒什麼問題的,而且聽入神了,還會上癮喔。總之,想學編程基礎,這位講師的課真的是首選!

Python應用課程

https://www.udemy.com/user/joseportilla/

https://www.udemy.com/user/josesalvatierra/

不過,Fred Baptiste的課程雖好,但因為是比較「底層」的理論,所以可能學習時間比較久,而且從「學會」到「實做」中間其實還是有一段不小距離的。

想要寫出某些功能,除非我們的需求都只要使用基本語法與數學計算就能達成,不然都還要另外學一些開發工具或方法,例如GUI介面開發、資料處理、資料視覺化、資料庫、時間序列分析、Web前後端...等,讓我們的程式有一個管道能使用能「用」出來,比較能有動力寫很多碼,過程也能慢慢累積出實力。

關於Python應用課程我推薦的講師有兩位:

第一位是適合初入門的Jose Portilla。Jose Portilla的特色是,教學結構很完整,論述簡單易懂,課程主題都是很熱門的題目。雖然他的課程都不會到很進階,教學內容也幾乎就是Document,但老師的整個編排與表達很容易讓新手"入門"。有時候最難的就是入門,入門後自己就可以透過不斷嘗試而寫出不小的專案。

因此Jose Portilla是我在撞牆期很愛的講師,我第一個自我滿足的專案就是上了他的Dash課程後寫出來的,雖然用的很多方法都不在他教的內容內,也讓我熬了很久,但如果沒有他的引領入門,我根本無法寫出來。所以對於想比較快入門相關技術或功能的,Jose Portilla的課程我覺得滿經典的。

第二位推薦講師是Jose Salvatierra,這位Jose的課程簡介裡雖然都說初入門者也能上,但我初入門時上他的課差點想退掉,一部分是這位講師的英文比較快比較難,一部分是他的上課方式是以程式思維模式作為主軸,所以述說方式常常會讓我跟不上。

直到我學比較進階後,回頭來上他的課,才發現他的課是一個寶,透過帶領我們實作一個專案的過程,傳達出他是如何透過程式思維規劃出他的架構的,這部分令我覺得非常珍貴。

https://blog.tecladocode.com/

Jose Salvatierra另外有一個網站,上面很多免費資源,可以參考喔,不過要閱讀很多英文文章。

工具套件

Python最讓人喜愛的就是有很多人為它寫了很多厲害的套件,使得它得以在廣大的領域中通吃,其中在最基礎的數據處理套件就是Numpy與Pandas了,這兩個套件是用C語言寫的,所以學這兩個套件不只是讓我們處理數據變簡單,因為主要運算都用C語言來跑,速度還變快很多(可能差到十倍以上),解決了Python給人"慢"的印象(但如果直接使用資料庫來做運算也是不錯的選擇)。

除了最基本的Numpy與Pandas,還有很多專業的套件,例如Scipy、Statesmodel、Scikit-learn等等套件,但是用這些你可能先需要有專業底子才駕馭的了。

以上加上其他各種五花八門的套件,網路上都很多教學資源,所以我這邊不會特別列出特定課程,大家自己去找學生人數多而且評價又高的幾乎就是不錯的課程。而且對於這些套件,我們可能要慢慢學會看Document會比較好,因為套件的功能可能每天都在更新。

熱門主題

https://www.youtube.com/watch?v=CXgbekl66jc&list=PLJV_el3uVTsPy9oCRY30oBPNLCo89yu49

https://www.udemy.com/course/machinelearning/

這一次大科技趨勢的話題一開始主角是「機器學習」,然而機器學習其實是一個很龐大的技術集合,真的按部就班學起來是不得了的,所以最好先學一個大概念,之後再依需要而一個一個深入。

這部分我推薦的有兩個,第一個是免費的Youtube資源,台大李宏毅教授的開放課程機器學習,他的教學深入淺出,一般程度的人都聽得懂喔!

第二個是Udemy的Machine Learning A-Z課程,以Python、R程式碼實現為主。我原本買的是由這個英文課程翻成的中文版課程,但中文版的內容少很多,而且已經沒有維護很多東西都過時了,所以要的話請買英文版。

實務操作課程

https://www.udemy.com/user/soledad-galli/

面對數據,第一件事就是進行「數據前處理」,包含了「數據清洗」與「特徵工程」。而這些前處理就是一件非常花時間的"工程",如果有人可以幫我們整理好系統化方法,可以省下非常多時間。Soledad Galli講師出了一個特徵工程的課程救了我,如果有要做機器學習也可以加上她的特徵選擇課程,以及模型部屬課程,都是屬於非常實務的,雖然老師印度口音重對於上課有一點點困擾,但課程內容真的滿完善的,還人工編輯過字幕,算是毫不吝嗇把自己實際使用的方法分享出來。我們可以直接看到別人(高手)是怎麼從頭到尾開發一個案子的,中間有多少環節是怎麼處理的。

基礎理論

https://www.youtube.com/watch?v=nQvpFSMPhr0&list=PLXVfgk9fNX2I7tB6oIINGBmW50rrmFTqf

https://www.udemy.com/user/e3inqhwawxzw/

關於這一波的明星機器學習,如果要我說實話,其實Python的第三方套件用幾行程式碼就能做了.....但如果真的只有這麼簡單,那大數據早該很廣泛地使用了。

在套用套件前,還有繁雜的數據清洗、特徵工程、特徵選擇等工作,其中特徵工程如果不具有領域知識的話,有可能後續的機器學習訓練在怎麼厲害都無法做得好。

真的把數據、特徵都準備好了,如果直接套用套件都不改參數,也應該很少會有訓練出好結果的,因為真實世界哪有這麼單純呢?但如果要開始改參數,我們就必得扎下理論基礎,不然就會只是大海撈針的亂調。

機器學習的概念不難,但如果要將概念化為"數學"就有點深入了,但如果想在這領域做到優秀,學習理論是逃不掉的。我在這邊列的台大陳軒田老師的機器學習基石課程,雖然我自己沒有上下去(這真的是給台大程度上的課程),但因為我覺得這是一個代表課程,所以還是列在這邊。

做數據分析的方法很多種,其中「統計」就是做數據分析、人工智慧最傳統的方法(沒錯,這兩個都不是什麼新名詞,早就做幾十年了),我覺得統計用的數學"比較"沒有那麼艱深,而且結果也比較讓人能理解。雖然統計理論還是要花非常多時間來學。還好這麼專業的課程有李柏堅老師願意開放自己的大學授課課程,造福很多非本科系的人,不過課程內容非常多,可能要先選擇自己會常用的來學。

領域知識分析方法

除了以上提到的機器學習、統計、時間序列分析等等方法來進行數據分析,其實方法依據領域不同而不同,例如工科很多就常用傅立葉分析,這些就是要懂專業領域的人才容易操作了。


以上了列出一些我的學習模式與經典課程,然而這領域範圍太廣,除了以上所列還有很多有的沒有的東西需要慢慢精進,例如寫Code寫多了後一定要用Git來做版本控管與備份,或者需要學一些設計模式,以及遇到很多電腦問題也需要學很多電腦科學相關知識等等。不過如果我們都一步步地克服困難且都過關了,以後就算哪時候必須放棄Python改學其他語言,我們到時就能夠「一周內學會XXX(語言)」了。

全站分類:知識學習 語言
自訂分類:虛擬世界
上一則: 影像辨識與資料科學 - 人頭朝向
下一則: 35後,自學Python

限會員,要發表迴響,請先登入