都說作一件事情最好的時機就是「如今」,可是從何開始每每會難倒一大批人,更不用說是想要入門數據科學和機器學習的朋友了。本文是一篇科普掃盲文章,做者以初學者的視角,爲一樣想「入坑」的讀者們提供了一些建議,還有一些能夠得到的學習資源。html
選自towardsdatascience,做者:Daniel Bourke,機器之心編譯,參與:韓放、一鳴。
python
從這裏開始。git
兩年前,我開始在網上自學機器學習,而且經過 YouTube 和博客分享了個人學習過程。我並不知道我在作什麼,在決定開始學習機器學習以前我從沒寫過代碼。
github
有人告訴我他已經開始學習 Python 並打算學習機器學習了,但不知道下一步該作什麼。算法
「我已經學習了 Python,下一步該作什麼?」編程
我回復了一系列學習的步驟,而且複製到了這裏。若是你想成爲一個機器學習從業者,殊不知道怎麼寫代碼的話,能夠把本文看成一個大綱。個人學習風格是代碼優先:先把代碼運行起來,再根據須要學習理論、數學、統計以及機率等方面的東西,而不是一開始就學理論。網絡
學習 Python、數據科學工具和機器學習概念app
問我問題的那些郵件做者們說他們已經學了一些 Python。但這一步也一樣適用於新手。花幾個月的時間學習 Python 編程和不一樣的機器學習概念。這兩部分知識你都會須要。
框架
在學習 Python 編程的同時,練習使用 Jupyter 和 Anaconda 等數據科學工具。花幾個小時來研究一下,它們是用來作什麼的以及爲何要使用它們。
機器學習
學習資源
人工智能要素 (https://www.elementsofai.com/)—人工智能和機器學習主要概念概述。
Coursera 上的 Python 教程—(https://bit.ly/pythoneverybodycoursera) 從頭學習 Python。
經過 freeCodeCamp 學習 Python (https://youtu.be/rfscVS0vtbw)—一個視頻涵蓋了 Python 全部主要概念。
Corey Schafer 的 Anaconda 教程 (https://youtu.be/YJC6ldI3hWk)—一個視頻學會 Anaconda(數據科學和機器學習須要的配置環境)。
Dataquest 的新手 Jupyter Notebook 教程 (https://www.dataquest.io/blog/jupyter-notebook-tutorial/)—一篇文章學會啓動和運行 Jupyter Notebook。
Corey Schafer 的 Jupyter Note 教程 (https://www.youtube.com/watch?v=HW29067qVWk)—一個視頻學會使用 Jupyter Notebook。
學習經過 Pandas、Numpy 和 Matplotlib 進行數據分析、操做和可視化
一旦你已經掌握了一些 Python 技巧,就會開始想要學習如何處理和操做數據,爲了實現這一目的,你須要熟悉 Pandas、Numpy 和 Matplotlib。
Pandas 能夠幫助你處理二維數據,相似 Excel 文件裏的信息表,包含行和列。這類數據被稱爲結構化數據。
Numpy 能夠幫助你進行數值計算。機器學習把你能想到的全部東西都轉化成數字,進而在這些數字中尋找模式。
Matplotlib 能夠幫助你繪製圖形和可視化數據。理解表格中的一堆數字對人類來講可能很困難。咱們更喜歡看到有一條線穿過的圖。可視化能夠更好得傳達你的發現。
學習資源
Cousera 上的 Python 應用數據科學 (http://bit.ly/courseraDS)—開始打磨數據科學方向的 Python 技能。
10 分鐘入門 pandas (https://pandas.pydata.org/pandas-docs/stable/gettingstarted/10min.html)—快速概覽 pandas 庫及其部分最有用的函數。
Codebasics 的 Python pandas 教程 (https://youtu.be/CmorAWRsCAw)—該 YouTube 系列介紹了 pandas 的全部主要功能。
freeCodeCamp 的 NumPy 教程 (https://youtu.be/QUT1VHiLmmI)—一個 YouTube 視頻學會 NumPy。
Sentdex 的 Matplotlib 教程 (https://www.youtube.com/watch?v=q7Bo_J8x_dw&list=PLQVvvaa0QuDfefDfXb9Yf0la1fPDKluPF)—YouTube 系列助你學會 Matplotlib 全部最有用的功能。
藉助 scikit-learn 學習機器學習
重點在於學習都有什麼樣的機器學習問題,好比分類和迴歸,什麼樣的算法最適合解決這些問題。如今還不須要從頭開始理解每一個算法,先學習如何應用它們。
學習資源
Data School 的基於 scikit-learn 的 Python 機器學習 (https://www.youtube.com/watch?v=elojMnjn4kk&list=PL5-da3qGB5ICeMbQuqbbCOQWcS6OYBr5A)—一個 YouTube 播放列表教你 scikit-learn 的全部主要函數。
Daniel Bourke 對探索性數據分析的簡要介紹 (https://towardsdatascience.com/a-gentle-introduction-to-exploratory-data-analysis-f11d843b8184)—把你在上述兩個步驟中學到的知識融合在一個項目中。提供代碼和視頻,助你開始第一個 Kaggle 競賽。
Daniel Formosso 的基於 scikit-learn 的探索性數據分析筆記 (https://github.com/dformoso/sklearn-classification)—以上資源的更深刻版本,附帶了一個實踐上述內容的端到端項目。
學習深度學習神經網絡
小貼士:在大多數狀況下,你會想對結構化數據使用一組決策樹(隨機森林或 XGBoost 之類的算法),而對於非結構化數據,你會想使用深度學習或遷移學習(使用預先訓練的神經網絡並將其用於你的問題)。
學習資源
Cousera 上 Andrew Ng 的 deeplearning.ai (https://bit.ly/courseradl) (https://bit.ly/courseradl)—商業上最成功的從業者之一講授的深度學習課程。
Jeremy Howard 的 fast.ai 深度學習課程 (https://course.fast.ai/) (https://bit.ly/courseradl)—工業界最好的實踐者之一講授的深度學習實際操做方法。
其餘課程和書籍
在你熟悉瞭如何使用不一樣的機器學習和深度學習框架以後,你能夠嘗試經過從頭開始構建它們來鞏固你的知識。你沒必要老是在生產或從事機器學習時這樣作,可是從內部瞭解事情是如何工做的將有助於你創建本身的工做。
學習資源
Daniel Bourke 的如何開始你本身的機器學習工程 (https://towardsdatascience.com/how-to-start-your-own-machine-learning-projects-4872a41e4e9c)—開始你本身的工程可能會很難,這篇文章能夠給你一些指引。
Jeremy Howard 的 fast.ai 深度學習基礎 (https://course.fast.ai/part2)—自上而下學習後,本課程將幫助你從下往上填補空白。
Andrew Trask 的 Grokking Deep Learning (https://amzn.to/2H497My)—這本書將教你如何從頭開始構建神經網絡,以及爲何你應該知道如何構建。
Daniel Bourke 推薦的機器學習書籍 (https://www.youtube.com/watch?v=7R08MPXxiFQ)—該 YouTube 視頻整理了一些機器學習最佳書籍。
答疑
你可能會花 6 個月或更長的時間。彆着急,學習新事物須要時間。做爲一名數據科學家或機器學習工程師,你正在培養的主要技能是如何針對數據提出好的問題,而後使用你的工具來嘗試尋找答案。
有時候你會以爲本身什麼都沒學到。甚至倒退。忽略它。不要以天爲單位來衡量,看看你一年後有什麼樣的進步。
我在哪裏能夠學到這些技能?
我在上面列出了一些資源,它們都是在線的,並且大部分都是免費的,相似的資源還有不少。
記住,做爲數據科學家或機器學習工程師,很大一部分工做是要解決問題。經過你的第一個做業探索這裏的每個步驟,並建立你本身的課程來幫助學習。
統計怎麼辦?數學怎麼辦?機率呢?
實踐過程當中你會學到這些東西的。先從代碼開始。把代碼運行起來。在運行代碼以前,嘗試學習全部的統計、數學、機率知識,就像是在試圖煮沸大海。它會讓你退縮。
證書?
證書很好,但你不是爲了證書而學習,而是爲了提升技能。不要和我犯一樣的錯誤,不要認爲證書越多表明技能越多,並非這樣的。經過上述課程和資源創建知識基礎,而後經過本身的項目完善專業知識(這些是課程沒法傳授的知識)。