开发者社区> 华章计算机> 正文

《机器学习系统设计: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。这个包增加了执行诸如逆矩阵、特征值计算,以及矩阵分解等任务的能力。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
《构建实时机器学习系统》一1.7 案例:Netflix在机器学习竞赛中学到的经验
本节书摘来自华章出版社《构建实时机器学习系统》一 书中的第1章,第1.7节,作者:彭河森 汪涵,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1624 0
22、Python与设计模式--状态模式
#一、电梯控制器 电梯在我们周边随处可见,电梯的控制逻辑中心是由电梯控制器实现的。电梯的控制逻辑,即使简单点设计,把状态分成开门状态,停止状态和运行状态,操作分成开门、关门、运行、停止,那流程也是很复杂的。首先,开门状态不能开门、运行、停止;停止状态不能关门,停止;运行状态不能开门、关门、运行。要用一个一个if…else…实现,首先代码混乱,不易维护;二是不易扩展。至于各种设计原则什么的……
4223 0
《构建实时机器学习系统》一第2章 实时监督式机器学习 2.1 什么是监督式机器学习
本节书摘来自华章出版社《构建实时机器学习系统》一 书中的第2章,第2.1节,作者:彭河森 汪涵,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1554 0
C语言及程序设计进阶例程-21 银行储蓄系统(第五版)开发
贺老师教学链接  C语言及程序设计进阶 本课讲解 可以直接下载完整的项目文件bank.zip运行(点击打开链接,解压后打开项目,或者自建项目后加入源文件和头文件)下面的代码,分别展示各个头文件、源文件:Bank.h #ifndef BANK_H_INCLUDED #define BANK_H_INCLUDED #define upNum 2000 //系统最多容纳的用户数 struct
1126 0
《构建实时机器学习系统》一1.6 实时应用对机器学习的要求
本节书摘来自华章出版社《构建实时机器学习系统》一 书中的第1章,第1.6节,作者:彭河森 汪涵,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1008 0
23、Python与设计模式--设计原则
#一、六大设计原则 在法理学中,法律规则与法律原则都是法律规范的重要构成。但二者也会有些不同:法律规则是指采取一定的结构形式具体规定人们的法律权利、法律义务以及相应的法律后果的行为规范,内容比较明确,比如,交通法规中规定,禁止闯红灯;法律原则是指在一定法律体系中作为法律规则的指导思想,基本或本原的、综合的、稳定的原理和准则,内容上只包含“大方针”,而并未有具体规则,比如,如果车上有马上临产的孕妇
3358 0
使用OpenApi弹性释放和设置云服务器ECS释放
云服务器ECS的一个重要特性就是按需创建资源。您可以在业务高峰期按需弹性的自定义规则进行资源创建,在完成业务计算的时候释放资源。本篇将提供几个Tips帮助您更加容易和自动化的完成云服务器的释放和弹性设置。
20936 0
《精通python设计模式》读书笔记之——结构型设计模式
结构型设计模式: 结构型设计模式处理一个系统中不同实体(比如,类和对象)之间的关系,关注的是提供一种简单的对象组合方式来创造新功能。可用于实现不兼容软件之间的接口兼容。
2008 0
一文解析统计学在机器学习中的重要性
本文介绍为什么统计对于通用应用和机器学习如此重要,并大致了解各种可用的方法。
1194 0
10057
文章
0
问答
来源圈子
更多
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载