如何使用 Kaggle 的教學


簡介

Kaggle 是一個資料科學的相關網站,依維基百科的說明,它在 2011 年成立,並在 2017 年被 Google 收購

如果想要學習資料分析/AI 的相關實務技巧,Kaggle 絕對是我們要常常來拜訪的網站。Kaggle 提供了許多資料集讓我們分析,還有眾多資料分析家所提供的教學文件,省下許多摸索的時間。

另外,Kaggle 也時常舉辦資料分析的競賽 (相關文章,見這兒,及這兒),參與競賽的成績也有助於日後的求職,另外,競賽過程中對實務技術的磨練,也是有大大的幫助的。

既然是一個提供資料分析,人工智慧應用相關的網站,那麼上面有教學資源也就不足為齊了。

這篇文章著重說明如何使用 Kaggle 網站所提供的課程,幫助我們提升資料分析的實務技巧。

Kaggle 的課程網頁



Kaggle 所提供的課程網頁如下所示:



可以看出 Kaggle 提供了許多的教學主題,包含了 Python,資料可視化,Pandas 的教學…等。

這些教學都會有一段文章做說明,然後搭配一個類似 Jupyter notebook 的環境讓我們練習。這種 learn by doing 的方式非常實務。

底下以 Pandas 課程為例,說明如何使用 Kaggle 的教學。

Pandas 的教學頁面


Pandas 的教學頁面如下所示:

 Kaggle 的 Pandas 課程


Pandas 是 Python 中用來做資料分析的函式庫。它最常用來處理「表格式」的資料,提供了許多直觀且有效率的方法讓我們完成資料清理,統計分析…等任務。點選連結連到 Pandas 套件的首頁

接著就點擊第一個 lesson "Exercise: Creating, Reading and Writing" 進入練習吧。

等一會後 (要花一段時間),我們可以看到底下的畫面。


這是一個類似 Jupyter Notebook 的教學環境。上面有「說明文字」,也有「程式碼區塊」。


說明文字的部分,提供了所要練習的題目。以上圖來說,就是要我們造出一個 DataFrame,將 DataFrame 命名為 fruits,並將 fruits 中加入一筆資料,兩個欄位。

程式碼的部分則是我們要撰寫的程式碼。

第一行是我撰寫的程式。
第二行 q1.check() 則是 Kaggle 所加入了 (請不要刪掉它)。它會檢查你的程式是否正確。

如果有錯的話,還會提供提示,讓你可以更正錯誤。

一步一步解說如何使用

熟悉教學文件

進入教學後,剛開始先看一下 introduction。它會提示我們這個課程的內容是什麼。

當然,不教而殺謂之賊。如果什麼都不教,就叫我們上手寫習題,那也太過份了。這門課程的每個習題都搭配有一份教學文件。如果對這個主題不熟悉的話,那先看看教學文件後,再來練習是比較好的。

這門課的教學文件,如底下紅框處所示。


初始化習題環境

看完文件後,就要上手來做了。

首先我們要做初始化的動作,做了這個動作後,Kaggle 會幫我們匯入相關的套件 (在本例中,就是匯入 Pandas 套件),還有做習題檢查的相關設定。

請找到 setup 的這個區塊,並點選底下的程式碼區塊

你會發現程式碼區塊前出現一個藍色的箭號。點選它,便可以執行這些程式碼。

或者,你也可以按快速鍵 Ctrl + Enter 執行之。


開始練習

接著就可以開始練習了。

看完習題的題目,在程式碼區塊中寫下答案。

按藍色鍵號,或 Ctrl + Enter 執行。就可以看到結果了。


上圖紅框處就是習題執行的結果,可以看出我答對了這個習題。

out[2] 的部分則呈現程式碼執行的結果。

做錯的話,怎麼辦?

習題要不會做,或做錯的話,可以看看 Kaggle 的提示,或是解答。

在每一個習題底下,都有一個程式碼區塊,裏面的程式都「被註解起來」 (即程式碼之前有加上 # 符號)。

只要把註解刪掉,就可以執行這個區塊,然後看到提示,或是解答。

在上圖中,我把 q1.hint() 前的 # 刪除。

執行這個區塊後,就看到 Kaggle 的提示了。

因為我沒有把 q1.solution() 的註解取消,所以在這個例子中,並不會展示解答。

之後每一個習題都可以依照這種看題目,解答…的 pattern 來進行。

完成整個練習後,對於某個主題就有基本的瞭解了。

結論

這份文章中說明了 Kaggle 所提供的教學要如何使用。

我們說明了 Kaggle 的教學網站的位置。以及如何找到教學文件,還有如何執行習題的方法。

個人覺得 Kaggle 的教學所提供的內容蠻基礎的,在做資料分析時,是常用到的技巧。

對於初學者而言,非常建議走完這些練習。


留言

這個網誌中的熱門文章

由 Pandas 的 DataFrame 中取得資料

[程式設計] C++ 的字串切割

[C++]在 cin 後呼叫 getline 所遇到的問題