安排上!数据科学中必须了解的Python基础库

 安排上!数据科学中必须了解的Python基础库

正在学习数据科学的你希望快刀斩乱麻解决其中的一些问题吗?那我们果断要把目光投向Python。

安排上!数据科学中必须了解的Python基础库

本文将介绍一些基础的数据科学库,学会之后你也可以6到飞起。

核心库

Python有三个核心数据科学库,在此基础上还创建了许多其他的库。这三个核心数据科学库分别为:

  • Numpy
  • Scipy
  • Matplotlib

简单起见,可以把Numpy视为首选数组。Numpy数组在许多方面都与标准Python列表不同,但有几点需要记住,那就是Numpy数组比标准Python列表运算速度更快、所占空间更少、功能更多。但同时也需注意,这些数组的大小和类型是固定的,可以在创建数组时进行定义。同时,它不像列表那样可以无限添加新值。

Scipy在Numpy的基础上,提供了许多优化、统计和线性代数处理等功能。虽然Numpy也有类似的功能,但个人更喜欢Scipy的功能。想要计算相关系数或创建一些正态分布数据吗?Scipy简直就是为你量身定制的。

和其他数据科学库相比,Matplotlib可能略逊一筹,但它是Python中绘图的核心库。功能强大,可以在需要时进行有效控制。

第二代库

核心库非常棒,也很常用。不过,还有三个基于核心库的第二代库,它们提供的功能更多,使用的代码更少。

如果你一直在学习数据科学却没听说过Scikit-learn,那我也无话可说。Scikit-learn是Python中的机器学习库。它拥有强大的社区支持、归档功能和一个统一且容易使用的API。该库专注于“核心”机器学习,包括结构化数据的回归、分类和聚类。但它并不能用于深度学习或贝叶斯机器学习等方面。

Pandas的创建是为了简化Python中的数据分析。Pandas让加载结构化数据、计算统计数据、切割数据变得非常容易。在数据挖掘和分析阶段,它是一个不可或缺的工具。但个人不建议在数据生成阶段使用Pandas,因为它通常无法很好地扩展到大型数据集。不过可以将Pandas代码转换为原始的Numpy数组,这可以显著提高数据生产的速度。

尽管Matplotlib不是可视化最好看的,但是Seaborn 可以很容易创建出漂亮的可视化数据。Seaborn是基于Matplotlib创建的,因此仍然可以使用Matplotlib功能增加或编辑Seaborn图表。它还使复杂图表类型的创建变得更加容易。看看下面的图片,可以找到一些灵感:

深度学习

随着深度学习的迅速发展,不说一说该领域中较好的Python包是不明智的。

本人是Pytorch的铁杆粉丝。如果想在学习数据科学库的同时开始深度学习,从而让很先进的深度学习算法变得相对容易,那么Pytorch是不二之选。Pytorch正逐渐成为研究和实现大量功能的标准深度学习库,使其在数据生成用例中愈加完善。这些实例也提供了许多很好的入门教程 。

个人看来,Keras 是第一个真正让深度学习变得触手可及的数据科学库。你可以用10行非常容易阅读和理解的代码来创建并训练一个深度学习模型。但它的缺点是,高层次的抽象很难实现Keras当前不支持的新研究(尽管他们正在该领域上不断改进)。它同时还支持多个后端,即Tensorflow和CNTK。

Tensorflow 是由谷歌创建的,为深度学习的生产提供了很强大的支持。个人看来,最初版本的Tensorflow相当笨拙,但是他们学到了很多东西,Tensorflow 2.0让深度学习的门槛变得越来越低。当Pytorch为深度学习提供更多的生产支持时,Tensorflow则大大提高了深度学习的可用性。

统计

我想以Python中的两大统计模型库结束全文。

如果你用过R,你可能会困惑为什么Scikit-learn没有在计算回归系数时给出p值。如果是这样,你需要看一下statsmodels。个人看来,statsmodels对统计模型和测试提供了很好的支持,甚至还支持很多R语法。

概率编程和建模非常有趣。如果你不熟悉这个领域,可以查看黑客的贝叶斯方法,也可以使用PyMC3。PyMC3让定义的概率模型变得非常直观,并给许多先进的模型提供许多支持。

相关推荐