都说作一件事情最好的时机就是「如今」,可是从何开始每每会难倒一大批人,更不用说是想要入门数据科学和机器学习的朋友了。本文是一篇科普扫盲文章,做者以初学者的视角,为一样想「入坑」的读者们提供了一些建议,还有一些能够得到的学习资源。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 个月或更长的时间。别着急,学习新事物须要时间。做为一名数据科学家或机器学习工程师,你正在培养的主要技能是如何针对数据提出好的问题,而后使用你的工具来尝试寻找答案。
有时候你会以为本身什么都没学到。甚至倒退。忽略它。不要以天为单位来衡量,看看你一年后有什么样的进步。
我在哪里能够学到这些技能?
我在上面列出了一些资源,它们都是在线的,并且大部分都是免费的,相似的资源还有不少。
记住,做为数据科学家或机器学习工程师,很大一部分工做是要解决问题。经过你的第一个做业探索这里的每个步骤,并建立你本身的课程来帮助学习。
统计怎么办?数学怎么办?几率呢?
实践过程当中你会学到这些东西的。先从代码开始。把代码运行起来。在运行代码以前,尝试学习全部的统计、数学、几率知识,就像是在试图煮沸大海。它会让你退缩。
证书?
证书很好,但你不是为了证书而学习,而是为了提升技能。不要和我犯一样的错误,不要认为证书越多表明技能越多,并非这样的。经过上述课程和资源创建知识基础,而后经过本身的项目完善专业知识(这些是课程没法传授的知识)。