《机器学习系统设计:Python语言实现》一2.7 SciPy

简介:

.本节书摘来自华章出版社《机器学习系统设计:Python语言实现》一书中的第2章,第2.7节,作者 [美] 戴维·朱利安(David Julian),更多章节内容可以访问云栖社区“华章计算机”公众号查看

2.7 SciPy

SciPy对NumPy增加了一层,在NumPy更为纯粹的数学构造之上,封装了常用的科学和统计应用。SciPy为数据的操作和可视化提供了更高级的函数,并且特别适用于交互式地使用Python。SciPy由覆盖了不同科学计算应用的子包组成。下面列出了与机器学习最为相关的包及其功能:
image

NumPy和SciPy包中有很多名字相同且功能类似的模块,其中SciPy中的大部分模块都是从NumPy导入的,并进行了功能扩展。然而需要注意的是,虽然SciPy中有些函数的名字和NumPy完全一样,但是其功能却稍有不同。还需要提示的是,SciPy的很多类在scikit-learn包中都有便利性的封装,有时这些封装更容易使用。
每个包都需要显式导入,如以下代码所示:
image

我们可以从SciPy的网站(scipy.org)或控制台获得其文档,例如,help(scipy.cluster)。
正如我们所见,优化是不同机器学习环境中的常见任务。在上一章,我们考察了单纯形法的数学原理,这里,我们使用SciPy对其进行实现。我们使用单纯形法对线性方程组进行了优化,问题如下:
在约束方程中,2x1 + x2≤4和x1 + 2x2≤3,求x1 + x2的最大值。
linprog可能是解决此问题最简单的对象,它是最小化算法,因此我们需要反转目标的符号。
首先从scipy.optimize导入linprog:
image

我们可以观察到如下输出:
image

这里还有个对象是optimisation.minimize,适于解决稍微复杂一些的问题。此对象需要一个求解器作为参数,而目前有十几个可用的求解器,如果需要更为特殊的求解器,则可以自己实现一个。最常用的,适于大多数问题的求解器是nelder-mead。这一特殊的求解器使用了下降单纯形法(downhill simplex),这基本上是一种启发式搜索,即用所有剩余点的质心点来替换误差最高的测试点,并不断迭代这一过程,直到收敛为最小。
在下面的例子中,我们使用Rosenbrock函数作为测试问题。这是个非凸函数,常用来检验优化问题。该函数的全局极小值在一个长的抛物线波谷,因此,要在一个大的、相对平坦的波谷中找到极小值,对于算法来说是具有挑战的。该函数示例如下:
image

image

上面代码的输出如下:
image

上例中的minimize函数有两个强制性参数,即目标函数和初始值x0。此外还需要一个可选参数,即求解器方法,此例中我们使用nelder-mead方法。字典options是特定于求解器的一组键值对。这里,xtol是对收敛可接受的相对误差,disp用于设置消息打印。对于机器学习应用极为有用的另一个包是scipy.linalg。这个包增加了执行诸如逆矩阵、特征值计算,以及矩阵分解等任务的能力。

相关文章
|
24天前
|
存储 Python
SciPy 教程 之 SciPy 稀疏矩阵 4
SciPy 教程之 SciPy 稀疏矩阵 4:介绍稀疏矩阵的概念、类型及其在科学计算中的应用。SciPy 的 `scipy.sparse` 模块提供了处理稀疏矩阵的工具,重点讲解了 CSC 和 CSR 两种格式,并通过示例演示了如何创建和操作 CSR 矩阵。
42 3
|
10天前
|
Python
SciPy 教程 之 Scipy 显著性检验 9
SciPy 教程之显著性检验:介绍显著性检验的基本概念、目的及在SciPy中的实现方法。通过scipy.stats模块进行显著性检验,包括正态性检验(使用偏度和峰度),并提供代码示例展示如何计算数据集的偏度和峰度。
19 2
|
13天前
|
Python
SciPy 教程 之 Scipy 显著性检验 3
本教程介绍Scipy显著性检验,包括其基本概念、原理及应用。显著性检验用于判断样本与总体假设间的差异是否显著,是统计学中的重要工具。Scipy通过`scipy.stats`模块提供了相关功能,支持双边检验等方法。
23 1
|
15天前
|
机器学习/深度学习 Python
SciPy 教程 之 SciPy 插值 2
SciPy插值教程:介绍插值概念及其在数值分析中的应用,特别是在处理数据缺失时的插补和平滑数据集。SciPy的`scipy.interpolate`模块提供了强大的插值功能,如一维插值和样条插值。通过`UnivariateSpline()`函数,可以轻松实现单变量插值,示例代码展示了如何对非线性点进行插值计算。
19 3
|
18天前
|
机器学习/深度学习 数据处理 Python
SciPy 教程 之 SciPy 空间数据 4
本教程介绍了SciPy的空间数据处理功能,主要通过scipy.spatial模块实现。内容涵盖空间数据的基本概念、距离矩阵的定义及其在生物信息学中的应用,以及如何计算欧几里得距离。示例代码展示了如何使用SciPy计算两点间的欧几里得距离。
31 5
|
17天前
|
机器学习/深度学习 Python
SciPy 教程 之 SciPy 空间数据 6
本教程介绍了SciPy处理空间数据的方法,包括使用scipy.spatial模块进行点位置判断、最近点计算等内容。还详细讲解了距离矩阵的概念及其应用,如在生物信息学中表示蛋白质结构等。最后,通过实例演示了如何计算两点间的余弦距离。
26 3
|
16天前
|
机器学习/深度学习 数据处理 Python
SciPy 教程 之 SciPy 空间数据 7
本教程介绍了SciPy的空间数据处理功能,涵盖如何使用`scipy.spatial`模块进行点的位置判断、最近点计算等操作。还详细解释了距离矩阵的概念及其在生物信息学中的应用,以及汉明距离的定义和计算方法。示例代码展示了如何计算两个点之间的汉明距离。
25 1
|
19天前
|
图形学 Python
SciPy 空间数据2
凸包(Convex Hull)是计算几何中的概念,指包含给定点集的所有凸集的交集。可以通过 `ConvexHull()` 方法创建凸包。示例代码展示了如何使用 `scipy` 库和 `matplotlib` 绘制给定点集的凸包。
25 1
|
20天前
|
Python
SciPy 教程 之 SciPy 图结构 7
《SciPy 教程 之 SciPy 图结构 7》介绍了 SciPy 中处理图结构的方法。图是由节点和边组成的集合,用于表示对象及其之间的关系。scipy.sparse.csgraph 模块提供了多种图处理功能,如 `breadth_first_order()` 方法可按广度优先顺序遍历图。示例代码展示了如何使用该方法从给定的邻接矩阵中获取广度优先遍历的顺序。
27 2
|
21天前
|
算法 Python
SciPy 教程 之 SciPy 图结构 5
SciPy 图结构教程,介绍图的基本概念和SciPy中处理图结构的模块scipy.sparse.csgraph。重点讲解贝尔曼-福特算法,用于求解任意两点间最短路径,支持有向图和负权边。通过示例演示如何使用bellman_ford()方法计算最短路径。
28 3

热门文章

最新文章

下一篇
无影云桌面