五個給機器學習和數據科學入門者的學習建議

都說作一件事情最好的時機就是「如今」,可是從何開始每每會難倒一大批人,更不用說是想要入門數據科學和機器學習的朋友了。本文是一篇科普掃盲文章,做者以初學者的視角,爲一樣想「入坑」的讀者們提供了一些建議,還有一些能夠得到的學習資源。html

選自towardsdatascience,做者:Daniel Bourke,機器之心編譯,參與:韓放、一鳴。
python

「我想學習機器學習和人工智能,該從哪開始呢?」

從這裏開始。git


兩年前,我開始在網上自學機器學習,而且經過 YouTube 和博客分享了個人學習過程。我並不知道我在作什麼,在決定開始學習機器學習以前我從沒寫過代碼。
github

當人們發現個人做品,他們一般會私信並提問。我不必定知道全部的答案,但我會盡可能回覆。人們最常問的問題是:「該從哪開始?」,其次是:「我須要多少數學基礎?」
今天早上我就回答了一堆這樣的問題。

有人告訴我他已經開始學習 Python 並打算學習機器學習了,但不知道下一步該作什麼。算法

「我已經學習了 Python,下一步該作什麼?」編程

我回復了一系列學習的步驟,而且複製到了這裏。若是你想成爲一個機器學習從業者,殊不知道怎麼寫代碼的話,能夠把本文看成一個大綱。個人學習風格是代碼優先:先把代碼運行起來,再根據須要學習理論、數學、統計以及機率等方面的東西,而不是一開始就學理論。網絡

記住,開始學習機器學習你會面臨不少阻礙。別急,慢慢來。把這篇文章添加到收藏夾,以便隨時參考。

我傾向於使用 Python,由於我是從 Python 開始的,而且一直在持續使用它。你也能夠用其餘語言,但本文的全部步驟都是基於 Python 的。

學習 Python、數據科學工具和機器學習概念app

問我問題的那些郵件做者們說他們已經學了一些 Python。但這一步也一樣適用於新手。花幾個月的時間學習 Python 編程和不一樣的機器學習概念。這兩部分知識你都會須要。
框架

在學習 Python 編程的同時,練習使用 Jupyter 和 Anaconda 等數據科學工具。花幾個小時來研究一下,它們是用來作什麼的以及爲何要使用它們。
機器學習

學習資源

  1. 人工智能要素 (https://www.elementsofai.com/)—人工智能和機器學習主要概念概述。

  2. Coursera 上的 Python 教程—(https://bit.ly/pythoneverybodycoursera) 從頭學習 Python。

  3. 經過 freeCodeCamp 學習 Python (https://youtu.be/rfscVS0vtbw)—一個視頻涵蓋了 Python 全部主要概念。

  4. Corey Schafer 的 Anaconda 教程 (https://youtu.be/YJC6ldI3hWk)—一個視頻學會 Anaconda(數據科學和機器學習須要的配置環境)。

  5. Dataquest 的新手 Jupyter Notebook 教程 (https://www.dataquest.io/blog/jupyter-notebook-tutorial/)—一篇文章學會啓動和運行 Jupyter Notebook。

  6. Corey Schafer 的 Jupyter Note 教程 (https://www.youtube.com/watch?v=HW29067qVWk)—一個視頻學會使用 Jupyter Notebook。

學習經過 Pandas、Numpy 和 Matplotlib 進行數據分析、操做和可視化

一旦你已經掌握了一些 Python 技巧,就會開始想要學習如何處理和操做數據,爲了實現這一目的,你須要熟悉 Pandas、Numpy 和 Matplotlib。

  • Pandas 能夠幫助你處理二維數據,相似 Excel 文件裏的信息表,包含行和列。這類數據被稱爲結構化數據。

  • Numpy 能夠幫助你進行數值計算。機器學習把你能想到的全部東西都轉化成數字,進而在這些數字中尋找模式。

  • Matplotlib 能夠幫助你繪製圖形和可視化數據。理解表格中的一堆數字對人類來講可能很困難。咱們更喜歡看到有一條線穿過的圖。可視化能夠更好得傳達你的發現。

學習資源

  1. Cousera 上的 Python 應用數據科學 (http://bit.ly/courseraDS)—開始打磨數據科學方向的 Python 技能。

  2. 10 分鐘入門 pandas (https://pandas.pydata.org/pandas-docs/stable/gettingstarted/10min.html)—快速概覽 pandas 庫及其部分最有用的函數。

  3. Codebasics 的 Python pandas 教程 (https://youtu.be/CmorAWRsCAw)—該 YouTube 系列介紹了 pandas 的全部主要功能。

  4. freeCodeCamp 的 NumPy 教程 (https://youtu.be/QUT1VHiLmmI)—一個 YouTube 視頻學會 NumPy。

  5. Sentdex 的 Matplotlib 教程 (https://www.youtube.com/watch?v=q7Bo_J8x_dw&list=PLQVvvaa0QuDfefDfXb9Yf0la1fPDKluPF)—YouTube 系列助你學會 Matplotlib 全部最有用的功能。

藉助 scikit-learn 學習機器學習


如今你已經掌握了操做和可視化數據的技能,是時候學習在數據中尋找模式了。scikit-learn 是一個 Python 庫,它內置了許多有用的機器學習算法供你使用,它還提供了許多其餘有用的函數來探究學習算法的學習效果。

重點在於學習都有什麼樣的機器學習問題,好比分類和迴歸,什麼樣的算法最適合解決這些問題。如今還不須要從頭開始理解每一個算法,先學習如何應用它們。

學習資源

  1. Data School 的基於 scikit-learn 的 Python 機器學習 (https://www.youtube.com/watch?v=elojMnjn4kk&list=PL5-da3qGB5ICeMbQuqbbCOQWcS6OYBr5A)—一個 YouTube 播放列表教你 scikit-learn 的全部主要函數。

  2. Daniel Bourke 對探索性數據分析的簡要介紹 (https://towardsdatascience.com/a-gentle-introduction-to-exploratory-data-analysis-f11d843b8184)—把你在上述兩個步驟中學到的知識融合在一個項目中。提供代碼和視頻,助你開始第一個 Kaggle 競賽。

  3. Daniel Formosso 的基於 scikit-learn 的探索性數據分析筆記 (https://github.com/dformoso/sklearn-classification)—以上資源的更深刻版本,附帶了一個實踐上述內容的端到端項目。

學習深度學習神經網絡

深度學習和神經網絡在沒有太多結構的數據上最有效。二維數據雖然有結構,圖像、視頻、音頻文件和天然語言文本也有,但不會太多。

小貼士:在大多數狀況下,你會想對結構化數據使用一組決策樹(隨機森林或 XGBoost 之類的算法),而對於非結構化數據,你會想使用深度學習或遷移學習(使用預先訓練的神經網絡並將其用於你的問題)。

你能夠開始把這樣的小貼士用一張便條記錄,而後邊學習邊收集這些信息。

學習資源

  1. Cousera 上 Andrew Ng 的 deeplearning.ai (https://bit.ly/courseradl) (https://bit.ly/courseradl)—商業上最成功的從業者之一講授的深度學習課程。

  2. Jeremy Howard 的 fast.ai 深度學習課程 (https://course.fast.ai/) (https://bit.ly/courseradl)—工業界最好的實踐者之一講授的深度學習實際操做方法。

其餘課程和書籍

在學習過程當中,最理想的狀況是你能夠用本身的小項目來練習所學的東西。這沒必要是複雜的,須要改變世界的事情,但你能夠說「我用 X 作了這個」。而後經過 github 或博客分享你的工做。github 用於展現你的代碼,博客文章用於展現你如何表達本身所作的工做。你應該爲每一個項目都發布一下這些內容。申請一份工做的最好方法是你已經作完了工做要求作的事情。分享你的工做是向將來的潛在僱主展現你能力的好方法。

在你熟悉瞭如何使用不一樣的機器學習和深度學習框架以後,你能夠嘗試經過從頭開始構建它們來鞏固你的知識。你沒必要老是在生產或從事機器學習時這樣作,可是從內部瞭解事情是如何工做的將有助於你創建本身的工做。

學習資源

  1. Daniel Bourke 的如何開始你本身的機器學習工程 (https://towardsdatascience.com/how-to-start-your-own-machine-learning-projects-4872a41e4e9c)—開始你本身的工程可能會很難,這篇文章能夠給你一些指引。

  2. Jeremy Howard 的 fast.ai 深度學習基礎 (https://course.fast.ai/part2)—自上而下學習後,本課程將幫助你從下往上填補空白。

  3. Andrew Trask 的 Grokking Deep Learning (https://amzn.to/2H497My)—這本書將教你如何從頭開始構建神經網絡,以及爲何你應該知道如何構建。

  4. Daniel Bourke 推薦的機器學習書籍 (https://www.youtube.com/watch?v=7R08MPXxiFQ)—該 YouTube 視頻整理了一些機器學習最佳書籍。

答疑

每一步須要多長時間?

你可能會花 6 個月或更長的時間。彆着急,學習新事物須要時間。做爲一名數據科學家或機器學習工程師,你正在培養的主要技能是如何針對數據提出好的問題,而後使用你的工具來嘗試尋找答案。

有時候你會以爲本身什麼都沒學到。甚至倒退。忽略它。不要以天爲單位來衡量,看看你一年後有什麼樣的進步。

我在哪裏能夠學到這些技能?

我在上面列出了一些資源,它們都是在線的,並且大部分都是免費的,相似的資源還有不少。

DataCamp (http://bit.ly/datacampmrdbourke) 是一個很好學習網站。另外,個人 Machine Learning and Artificial Intelligence resources database (https://bit.ly/AIMLresources) 整理了免費和付費的學習資料。

記住,做爲數據科學家或機器學習工程師,很大一部分工做是要解決問題。經過你的第一個做業探索這裏的每個步驟,並建立你本身的課程來幫助學習。

若是你想知道一個自我引導的機器學習課程的例子是什麼樣子的,看看個人 Self-Created AI Masters Degree (https://bit.ly/aimastersdegree)。這是我在過去 9 個月內從零編碼變成機器學習工程師的過程。它不是完美的,可是個人真實經歷,所以你能夠試試。

統計怎麼辦?數學怎麼辦?機率呢?

實踐過程當中你會學到這些東西的。先從代碼開始。把代碼運行起來。在運行代碼以前,嘗試學習全部的統計、數學、機率知識,就像是在試圖煮沸大海。它會讓你退縮。

若是代碼不運行,統計、數學和機率都不重要。先運行起來,而後用你的研究技巧來驗證它是否正確。

證書?

證書很好,但你不是爲了證書而學習,而是爲了提升技能。不要和我犯一樣的錯誤,不要認爲證書越多表明技能越多,並非這樣的。經過上述課程和資源創建知識基礎,而後經過本身的項目完善專業知識(這些是課程沒法傳授的知識)。

參考連接:towardsdatascience.com/5-beginner-…

相關文章
相關標籤/搜索