如何利用免費課程/書籍資源學習數據科學

2019-11-06     程式設計師聖經

程式設計師書庫(ID:CodingBook) 猿妹編譯

參考連結:https://towardsdatascience.com/how-to-learn-data-science-for-free-eda10f04d083

很多人都想學習數據科學,但是一看到許多培訓機構的學費就都止步了,那麼問題來了,如果你想學習數據科學,但又負擔不起學費,該怎麼辦呢?

我沒有接受過數據科學這方面正規的教育,就把自己培養成一名數據科學家,今天,我就和大家分享一下我的個人學習數據科學的經驗,主要分為三個部分:技術技能、理論和實踐經驗,希望對大家能有所啟發:

技術技能



第一部分將著重於技術技能,建議你先打好技術基礎,從實踐出發,而不是從數學理論出發,到目前為止,Python是數據科學中使用最廣泛的程式語言,在2018年開展的Kaggle機器學習和數據科學調查中,83%的受訪者表示他們每天都使用Python。因此,我建議關注這門語言,但也花點時間在其他語言上,比如R語言。

Python的基本面



在開始使用Python之前,你需要對該語言背後的基本原理有一定的了解,所以你一定要上一門Python入門課程。市面上有很多免費的Python課程,但我最喜歡Codeacademy的,建議參加Python入門課程。它包括基本語法、函數、控制流、循環、模塊和類等。(課程地址:https://www.codecademy.com/learn/learn-python

使用Python進行數據分析

接下來,你應該開始學習如何使用Python進行數據分析,這裡有一些不錯的資源。

首先,我建議你至少把dataquest.io上免費的數據分析課程給學了。dataquest是文字闡述的教程形式(地址:https://app.dataquest.io/dashboard)Dataquest為數據分析師、數據科學家和數據工程師提供了完整的學習路徑。如果你真的在上面找到一些你喜歡的付費課程,也可以嘗試一下,一個月差不多29美刀,如果你負擔得起,還可以包年。

Dataquest平台

Python的機器學習應用



如果你選擇在Dataquest上付費學習完整的數據科學課程,那麼你就可以很好的掌握Python機器學習的基礎知識,如果沒有的話,也不用擔心,還有很多其他免費的資源。

首先我關注的是scikit-learn,它是目前為止機器學習中最常用的Python庫。當我在學習的時候,我有幸參加了一個由scikit-learn的核心開發者之一Andreas Mueller舉辦的為期兩天的研討會。他已經在Github repo上上傳了該課程和其他課程的材料。其中包括幻燈片、課程筆記等,強烈建議大家閱讀這些材料(Github地址:https://amueller.github.io/

此外,我還建議你閱讀scikit-learn文檔中獲取一些教程,接著,我建議你可以構建一些實際的機器學習應用程式,並學習模型背後的理論。(scikit-learn文檔地址:https://scikit-learn.org/stable/tutorial/basic/tutorial.html

SQL



如果你想成為一名數據科學家,那麼SQL是一項重要的技能,因為數據建模的基本過程之一就是提取數據。這通常涉及到資料庫運行SQL查詢,如果你還沒有選擇上Dataquest課程,這裡也有一些免費的資源來學習這項技能。

Codeacamdemy有一個免費的SQL入門課程。(課程地址:https://www.codecademy.com/learn/learn-sql)這在整個瀏覽器編程中都是非常實用的,如果你還想了解基於雲的資料庫查詢,那麼谷歌Cloud BigQuery就是不錯的選擇,BigQuery是Google提供的一種Web服務,用於處理或分析大數據它有一個免費的版本,你可以免費嘗試查詢,查看各種公共數據集以及非常好的文檔。

Codeacademy SQL課程

R語言



要想成為一名全能的數據科學家,嘗試Python以外的程式語言也是一種不錯的選擇,因此我建議你在Codeacademy參加R語言入門課程,(課程地址:https://www.codecademy.com/learn/learn-r)和Dataquest類似,Codeacademy也提供了完整的數據科學課程,也有一些付費課程,具體還是取決於你的個人需要。

軟體工程



掌握軟體工程技能和實踐是一個很好的途徑,它可以讓你的代碼更具可讀性和可拓展性,此外,當你的模型投入到實際使用中的時候,你一定要學會編寫高質量的,經過良好測試的代碼,並使用版本控制之類的工具,這裡有兩個很好的免費資源,《Python like you mean it》就很不錯,它涵蓋了PEP8風格的指南文檔,也很好地涵蓋了面向對象編程。(書籍地址:https://www.pythonlikeyoumeanit.com/Module5_OddsAndEnds/Writing_Good_Code.html

scikit-learn的貢獻指南雖然是為了方便讀者貢獻而編寫的,但實際上很好地涉及到了最佳實踐。諸如Github、單元測試和調試等主題,並且都有數據科學應用程貫穿其中。(地址:https://scikit-learn.org/stable/developers/contributing.html

深度學習

對於深度學習的全面介紹,我認為沒有什麼比完全免費和無廣告的fast.ai更好的了。本課程包括機器學習,實用深度學習,線性代數的入門知識,以及自然語言處理的代碼入門,他們所有的課程都很實用,強烈推薦(地址:https://www.fast.ai/

Fast.ai平台

理論

在學習技術課程的時候,你也會遇到代碼背後的一些理論知識,建議你在學習實踐的同時也要學習理論,我採取的方式是,我學習的代碼能夠實現一種技術,以KMeans為例,一旦我可以實現一項技術時,我就開始深入研究概念,比如scikit-learn文檔包含的算法背後的所有數學概念。

khanacademy幾乎涵蓋了所有的概念,你註冊好了之後,就可以定製你想要學習的科目,然後你可以擁有一份為你量身定製的課程,選中你想學習的方框就可以學習其中的元素。(地址:http://www.khanacademy.org/

數學知識

維基百科將微積分定義為「對連續變化的數學研究」。換句話說,微積分可以找到函數之間的模式,例如在導數,它可以幫助你理解一個函數是如何隨時間變化的。

許多機器學習算法利用微積分優化模型的性能。如果你學過一點機器學習,你就應該聽過梯度下降法,梯度下降法是一個說明微積分在機器學習中應用的絕佳例子,這個函數通過疊代調整模型的參數值來找到最優值,從而最小化成本函數。

你需要知道以下知識:

  • 幾何定義
  • 計算一個函數的導數
  • 非線性函數

鏈式法則

  • 復合函數
  • 復合函數導數
  • 多重函數

梯度

  • 偏導數
  • 定嚮導數
  • 積分

線性代數

許多流行的機器學習方法,包括XGBOOST,都使用矩陣來存儲輸入和處理數據。矩陣與向量空間和線性方程一起構成了被稱為線性代數的數學分支。想要了解有多少機器學習方法是有效的,就有必要對這個領域有一定的了解,你需要學習的有:

空間和向量

  • 向量
  • 線性組合
  • 線性相關與線性無關
  • 向量的點乘(內積)和叉乘(外積)



矩陣的轉換

  • 函數與線性變換
  • 矩陣乘法
  • 逆函數
  • 矩陣的轉置

數據統計

以下你是你需要知道的關鍵概念:

描述性/匯總統計

  • 如何總結數據樣本
  • 不同類型的分布
  • 集中趨勢、偏態 、峰態(如平均值、中位數、模式)
  • 相關性的度量,以及變量之間的關係,如相關性和協方差

實驗設計

  • 假設檢驗
  • 抽樣
  • 測試的意義
  • 隨機性
  • 機率
  • 置信區間和雙樣本推理

機器學習

  • 推理對斜率
  • 線性和非線性回歸
  • 分類

實踐經驗

第三部分是關於實踐,如果掌握了上面的概念,你需要在一些實際應用程式中使用這些技能,通過這樣做,你也會遇到一些難題,比如數據丟失或者數據錯誤,你需要在該主題上學習更加深入的專業知識,並且尋找獲得實踐的好地方

Kaggle平台

機器學習競賽是一個練習建立機器學習模型的好地方。它們可以訪問範圍廣泛的數據集,每個數據集都有一個特定的問題需要解決,並且有一個排行榜。排行榜是一個很好的方法去衡量你在模型開發方面的水平如何,以及你在哪些方面需要進一步提高。

除了Kaggle,還有其他機器學習競賽平台,包括Analytics Vidhya和DrivenData。

Driven Data頁面

UCI機器學習數據集

UCI機器學習數據集是公共可用數據集的大型來源。你可以使用這些數據集來組合自己的數據項目,數據分析和機器學習模型,你甚至可以嘗試構建一個部署了Web前端的模型,此外,建議將你的項目存儲在公開的地方,比如Github,這樣可以讓你的勞動成果得到展示,有助於以後的工作申請。

UCI資料庫

對開源的貢獻

另一個可以考慮的選擇是為開源項目做貢獻。有許多Python庫依賴於社區來維護它們,還有各種黑客馬拉松,初學者都可以參加,參加些活動肯定會給你一些實際的經驗,你可以從別人那裡學習,同時回報一些東西。Numfocus就是一個很好的例子。(地址:https://numfocus.org/

在這篇文章中,我描述了一個完整的學習路徑,和一些免費的在線教程幫助你學習數據科學,用作品集的形式來展示你的能力是未來申請工作的一個很好的工具,它甚至可以代替資格證書,我認為教育應該對每個人都開放,當然,至少對數據科學而言,網際網路提供了這樣的機會。

文章來源: https://twgreatdaily.com/zh-tw/GV7IPm4BMH2_cNUgXo8F.html