如何利用免费课程/书籍资源学习数据科学

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/

在这篇文章中,我描述了一个完整的学习路径,和一些免费的在线教程帮助你学习数据科学,用作品集的形式来展示你的能力是未来申请工作的一个很好的工具,它甚至可以代替资格证书,我认为教育应该对每个人都开放,当然,至少对数据科学而言,互联网提供了这样的机会。