数据科学与机器学习相关的Python工具有哪些?

1 NumPy

NumPy(Numerical Python)是Python的一个扩展程序库,目前已经成为Python中用于科学计算的基础包。NumPy提供了高性能的向量、矩阵以及多维数据结构及计算方法。

NumPy包的核心是ndarray对象。它封装了与Python原生的数据类型相同的n维数组,其中有许多操作以C语言及Fortran语言编写并编译来实现,从而提供了极佳的性能。

由于NumPy封装了大量的复杂计算方法,因此使代码变得极为简洁、高效。例如,对于两个数组a和b的加法操作,如果用C语言实现,则需要通过两层循环求和,代码如下:

for (i = 0; i < rows; i++){
    for (j = 0; j < columns; J++){
        c[j][j] = a[i][j] + b[i][j];
    }
}

而用NumPy实现,只需要写作:

c = a + b

代码非常简洁、易读,且性能高效。当然,计算机进行c = a + b的数组求和操作,本质上还是由上述C语言的循环方式完成的,只是NumPy已经在内部实现了这些复杂的操作,我们只需引用而已。

使用NumPy前,首先需要安装和导入NumPy。本书的读者按前文所述安装Anaconda,即默认已经安装了NumPy,只需引用即可。

图4-1给出了几个简单的概念与操作,包括arange()、reshape()、数组转置等。

数据科学与机器学习相关的Python工具有哪些?

图4-1

数组的标量运算,例如求平方等操作,是对各元素进行操作的。同维度大小的数组求和等操作,是按各对应元素进行操作的。NumPy还提供了各对应位置元素的乘法操作,表达式为a*b。

但大家知道,矩阵乘法并不是指对应位置元素相乘,其定义如图4-2中的单元格11下的注释所示。读者可以想象,如果直接用C语言写出矩阵乘法的代码,需要写多少行。但使用NumPy,只需要写a @ b即可。

关于NumPy中数组及矩阵的运算举例,如图4-2所示。

数据科学与机器学习相关的Python工具有哪些?

图4-2

上述示例代码参见本书配套源代码中的NumPyDemo.ipynb文档。

2 Pandas

Pandas是Python的一个用于数据分析与处理的包。Pandas提供了灵活、高效、易于表述的关系型及标签化的数据结构,以及高效地操作大型数据集所需的函数与方法。

Pandas提供了两个重要的数据结构:Series和DataFrame。Series是一维标签化同类型数组。DataFrame是二维标签化表格型数据结构。图4-3中的示例简要展示了DataFrame的标签化数据结构特点。

数据科学与机器学习相关的Python工具有哪些?

图4-3

从这个示例中可以看到,DataFrame类似于二维表,列名dept、qty即数据的标签(label)。而每一行都有一个索引,从图4-3的Out[2]中可以看到,索引从0开始一直到6。定义DataFrame类似于定义字典,DataFrame的列名(标签)相当于字典的键。有了Pandas中的上述数据结构,就可以非常方便、高效地进行数据处理了。

3 Matplotlib

Matplotlib是非常方便、实用的用于科学计算的可视化包。Matplotlib是一个Python 2D绘图库,以多种格式和跨平台交互环境生成高质量的图形。

在Matplotlib中可以用非常简洁的代码生成直方图、条形图、散点图等。Matplotlib官网给出了大量的案例,这些案例有助于我们理解和使用Matplotlib。

图4-4演示了Matplotlib的简洁性。也就是说,在import matplotlib后,对于4.1.2节Pandas中DataFrame的数据,只需单元格8中的一行代码即可画出其折线图。

数据科学与机器学习相关的Python工具有哪些?

图4-4

图4-5所示为利用Matplotlib画出正弦曲线。

数据科学与机器学习相关的Python工具有哪些?

图4-5

关于Matplotlib的更多内容,读者可参考Matplotlib官网或相关资源。

基于Matplotlib,有一个更强大的图形可视化工具seaborn。seaborn在Matplotlib的基础上进行了更高级的封装,使我们可以更方便地绘制出更具感染力的图形。关于seaborn的具体内容,请读者参考其官网及相关资源。

4 SciPy

SciPy(Scientific Python)是基于NumPy的用于科学计算的函数集合包。SciPy最早是Python封装的常用数学计算Fortran库,并基于此逐步发展为强大的用于科学计算的工具包。以下是SciPy的一些子模块。

  • scipy.constants:物理常量和数学常量。
  • scipy.fftpack:快速傅里叶变换。
  • scipy.integrate:积分。
  • scipy.interpolate:插值。
  • scipy.linalg:线性代数。
  • scipy.ndimage:n维图像包。
  • scipy.signal:信号处理。
  • scipy.spatial:空间数据结构。
  • scipy.stats:统计。

在图4-6所示的示例中,我们根据给定的几个点通过插值函数得到一条平滑曲线。

数据科学与机器学习相关的Python工具有哪些?

图4-6

在这个示例中,第6行和第7行在一条正弦曲线上取8个点。第10行创建了一个插值函数,其类型为三次插值。第13行取出x轴上的100个点。第14行根据第10行得到的插值函数,计算这100个点的y轴坐标。第17行和第18行画出初始的8个点。第19行和第20行根据插值得到的100个点画出曲线。

我们可以看到,scipy.interpolate封装了插值计算的复杂过程,我们可以方便、简洁地直接调用这些函数。

本文摘自《Jupyter入门与实战》

数据科学与机器学习相关的Python工具有哪些?

本书全面讲解Jupyter的功能、应用、体系架构、配置和部署等内容。全书共8章,前4章面向希望学习Python、数据科学及人工智能相关知识,但尚无软件开发基础的读者,以零起点的方式讲述Jupyter的功能与操作,并以Jupyter Notebook为工具,讲述Python的基础知识,以及使用Python开展数据科学工作的入门内容;后4章深入讲述Jupyter的高级应用、配置、管理,以及JupyterLab和JupyterHub等相关内容。本书尽量涵盖Jupyter各方面的内容,致力于成为一本Jupyter完全手册。

本书适合Jupyter及Python初学者阅读学习,也适合Python程序员,有Jupyter使用基础的软件开发人员、数据科学及人工智能的从业人员,配置和部署Jupyter系统的IT管理员阅读。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值