Python 線上課程心得-Applied Data Science with Python by UMN

A Review for Python/DS Online Courses in Mandarin

Jeff, Lu Chia-Ching
9 min readDec 24, 2019

2018年底,我上完了入門的 Python for Everybody 系列課程 (推薦心得),對 Python 有一些了解。在那時間點、我的碩士申請也已經告一段落,因此這時的學習目標轉變了一點。因為我不需要再充實我的履歷內容,所以當時不再強調快速有效率,而是要「增加 coding 能力與實際操作 Data Science 的經驗」。 也因為上一次在 Coursera 的 Python 課有不錯的經驗,我就直接選擇了同所學校 UNM 的下一個系列,我接著繼續上 Cousera 上 UMN 的下一個系列 Applied Data Science with Python Specialization

本文適合對象

這篇與上一篇介紹課程心得的文章稍微不同,會不提線上課程的選擇,而會較專注在課程本身的內容 (難度、課程內容、上課心得…),希望對這個線上課程也有興趣的人能夠在投入時間和心力 (和一點點學費 :)) 之前 ,先瞭解這課程的優缺點和一些加速學習、上課的技巧。

課程介紹

Applied Data Science with Python Specialization 雖然跟 Python for Everyone Specialization 一樣是同個學校、科系開的系列,但剛開始就會發現這堂進階課有很多不同之處:

1. 授課老師

這堂課的老師不再是知名的 Chuck,而是由另一個叫 Christopher 與其他講師助教組成。基本上老師的品質一樣有一定水準,但單純對英文為第二語言的人來說會稍難聽懂 (尤其中間有個印度裔老師在講 Text Mining 的章節),整體授課感覺 Chuck 比較清楚明瞭也更有活力,這堂課就比較像是上一般的線上課程。

2. 上課工具

這系列會開始使用一個非常方便、適合做資料專案的 Python 工具 — Jupyter Notebook/iPython。簡單來說 Jupyter Notebook 是一個能分段執行程式且很好閱讀理解的 Python 介面,這對實際執行 code 或作上課學習作筆記非常直覺 (我自己使用這套工具後就沒再用一般的編輯器像 Atom)。網路上許多教學教材或資料分析專案都是用這個製作,熟悉 Notebook 對之後要自己做 project 或學習別人的專案很有用 (尤其 Kaggle)。

Jupyter Notebook 除了 code 還能編輯好懂得 description

3. 內容難度

這系列內容有明顯比上一堂多很多,方向也更加確定,就是 Data Science 的各種操作。大綱包含 Supervised Machine Learning、進階的 Visualization (Matplotlib)、Text Mining、Network Analysis,難度也是直線上升。但這邊的難度並非因為有演算法或微積分 (操作都是套用 package 就好),而是這次的作業都比較接近實作,包含許多 Data Cleaning & Manipulation,所以先前 Python 的經驗就很重要。不過第一堂課 Introduction to Data Science in Python 的內容大部分是複習所有之後會用到的 Data Cleaning 函數、技巧,所以即使沒有太多 coding 經驗,也不至於完全卡關。

上課技巧 & 心得建議

綜觀上述,這系列要投入的時間成本比上一個系列多很多 (我一天花的時間多到覺得這好像不是可以一邊工作一邊上課的課程…),除了英文字彙變多、課程難理解、作業變很開放複雜外,另一個點就是這堂課的設計本身有點問題,而且是硬體上面,不太能障礙排除的。所以這邊要分享大方向建議和當初上課時碰到的特定問題和解法。

上課時一定要…

1. 碰到問題第一步先找 Discussion Forums: 雖然 Google 找答案是非常重要的技能,但這個課程意外多的是只有這邊學生才會碰到的東西,所以建議不論碰到哪種問題 (Jupyter Notebook 打不開、資料讀不好、看不懂題目、作業怎麼交都0分…) 一定要先找課程的 Discussion Forum。除了置頂的 thread,也可以多用搜尋功能找關鍵字 (e.g. 作業的第二題有問題就直接搜尋 “Question 2”)。

這個系列會花很多時間泡在這邊…

2. 用 local 端 Notebook 操作: 雖然 Notebook 很好用,但我對 Coursera 的 Notebook 蠻失望的。除了軟體版本 (至少在我上課的時間點是) 與當下的版本不同,編輯或跑執行的時候都有明顯感受到的卡頓和緩慢。所以建議是直接把 Notebook 弄到自己電腦後再編輯,最後需要交作業再把 code 複製上去 (萬一這時碰到版本問題再去 Forum 找答案)。除了Notebook 本身之外,Coursera 的雲端也有上課的教材、資料集可以下載, 這對自己做課堂筆記也比較方便。

某些特定主題或作業…

1. Visualization 多查 Forum: 在這系列的第二堂課 Applied Plotting, Charting & Data Representation in Python 會開始學到 Python 的 製圖 package Matplotlib。如果是學過 R 的 ggplot2 的人,剛開始學 Matplotlib 會覺得邏輯超級不順,尤其我覺得 Matplotlib 在網路上的教學資源比較混亂 (Pandas 的官方文件寫的有調理也很完整,Matplotlib 文件相對的很雜亂,會需要從各種 Stack Overflow 去拼湊東西),寫作業時會很麻煩。所以我會建議直接查 Forum 找最簡單直接的做法,尤其有個作業是做出一個特定的圖時,看外面的資訊可能會自己變得很複雜 (真的對 Matplotlib 有興趣可以等完成這堂課後再去依實際用途學,尤其現在的的語言或套裝軟體多到不一定要用 Python 做)。

2. 學 Text Mining 要保持理智: 雖然可能誇張了,但我記得學到第四堂課 Applied Text Mining in Python 時超級崩潰,讓我對這系列的評價掉了很多哈哈。

許多學生對這堂課很有看法

第一點是 Text Mining 真的有點麻煩,除了要先懂 Corpus 的概念,還要開始用很多 Regular Expression。RE 除了很不直覺,細節多到我要自己弄很長的筆記紀錄 (去查 Stack Overflow 會發現同樣目標可以有3種 regex 寫法)。這邊建議可以搭配一個好用網站學習 ( https://regexr.com/),上面可以快速幫你實驗寫的 expression 也可以自己打想抓的文字測試,會比在 Notebook 上測試快很多。

regexr.com

第二點也最失望的一點,就是這堂課的某些作業幾乎是無法正常完成。除了平台的自動評分機制很難理解,某幾題的問題敘述是直接寫錯,學生都在討論區哀號了但看起來這課程在一開始寫好後都沒修正過。最後我是在網路上找答案拼湊出來過關,但上到這邊我認真覺得心很累快撐不下去,所以建議大家如果這堂課碰到問題不要硬幹,直接看討論區不然上 Github 找解法 (或是敲我看怎麼幫忙哈…)。

3. 類別變數的 Encoding 選擇: 在第二堂課 Applied Machine Learning in Python 中會碰到許多實做 Machine Learning 的作業,這堂課基本上沒什麼問題,就是沒特別著墨類別變數的資料處理方式,所以碰到類別變數的時候會需要自己去找方法處理 (p.s. Python 大部分的 ML package 都不會自己做 dummy variable 而需要自己操作,這點跟 R 原生函數差很多)。重點來了,通常這時候你會查到很多 Label Encoder 和 One Hot Encoder 的資訊,但這些操作或文章對剛入門的人也許會有點複雜 (而且方法也在改變),所以我建議直接用 Pandas 套件的 get_dummies() 處理就好 (這個函數會直接把特定 column 轉成 dummy variables),可以省去很多花費在這個議題的時間。

P.S. 如果真的想了解其他 encoder 的做法,可以參考一個新的 package 叫 ColumnTransformer (但這個課程的 Notebook 可能不支援新的作法,所以我才會建議可以直接跳過學習 Label Encoder 或 One Hot Encoder,等自己有興趣再去找資源花時間學)

總結

總體來說,這堂課非常適合當作入門 Machine Learning 和想精進 Python 操作的人。雖然前面數落了很多缺點,他還是提供了非常不錯的內容,尤其是講機器學習的地方,理論不會太深也有很多實際操作的機會,我覺得是難易適中、深入淺出的體驗,也是我最沒有怨言的部分。我也很喜歡這堂課的作業部分,提供很多自己發揮 data cleaning 的機會,尤其 Text Mining 的部分實用且難度頗高。

Applied Data Science with Python Specialization 算是我自己線上課程的一個終點。完成這系列後,我開始自己去找不同的資料玩、去嘗試 Kaggle 和 open-source data (e.g. 紐約市犯罪資料分析),希望大家一樣也能藉由 Python for Everything 和 Applied Data Science with Python Specialization 這兩個系列快速入門 Business Analytics 和 Data Science 的領域!

Photo by Brad Barmore on Unsplash

若有任何想法或回饋,歡迎留言或直接敲我 Linkedin 囉! Congrats and Thanks for reading through all of it. Feel free to press clap as many as you want : )

Jeff

--

--