Python机器学习实践:测试驱动的开发方法 - (EPUB全文下载)
文件大小:0.45 mb。
文件格式:epub 格式。
书籍内容:
Python机器学习实践:测试驱动的开发方法
第1章 可能近似正确的软件
正确地编写软件
编写正确的软件
本书计划
第2章 快速介绍机器学习
什么是机器学习
有监督学习
无监督学习
强化学习
机器学习能完成什么
本书中使用的数学符号
结论
第3章 K最近邻算法
如何确定是否想购买一栋房子
房子的价格究竟几何
愉悦回归
什么是邻域
K最近邻算法简介
K先生最近的邻居
距离
维度灾难
如何选择K
给西雅图的房子估价
结论
第4章 朴素贝叶斯分类
通过贝叶斯定理来发现欺诈订单
条件概率
概率符号
反向条件概率(又名贝叶斯定理)
朴素贝叶斯分类器
贝叶斯推理之朴素
伪计数
垃圾邮件过滤器
标记化和上下文
结论
第5章 决策树和随机森林
蘑菇的细微差别
使用民间定理实现蘑菇分类
找到最佳切换点
修剪树
结论
第6章 隐马尔可夫模型
使用状态机来跟踪用户行为
输出/观测隐含状态
使用马尔可夫假设化简
隐马尔可夫模型
评估:前向-后向算法
通过维特比算法解码
学习问题
词性标注与布朗语库
结论
第7章 支持向量机
客户满意度作为语言的函数
SVM背后的理论
情绪分析器
聚合情绪
将情绪映射到底线
结论
第8章 神经网络
什么是神经网络
神经网络史
布尔逻辑
感知器
如何构建前馈神经网络
构建神经网络
使用神经网络来对语言分类
结论
第9章 聚类
无任何偏差的研究数据
用户群组
测试群集映射
K均值聚类
最大期望(EM)聚类
不可能性定理
案例:音乐归类
结论
第10章 模型改进与数据提取
辩论俱乐部
选择更好的数据
最小冗余最大相关性的特征选择
特征变换与矩阵分解
结论
第11章 将这些方法融合在一起:结论
机器学习算法回顾
如何使用这些信息来解决问题
下一步做什么
第1章 可能近似正确的软件
如果你曾乘飞机飞行,那你已经体验了世界上最安全的旅行方式之一。死于飞机事故的概率是2940万分之一,这意味着如果你想成为一名飞行员,可以在40年的职业生涯中,不遭遇一次坠机。考虑到飞机是如此复杂,那些概率真是惊人的。但也并非总是如此。
2014年对航空业来说是糟糕的一年,有824起航空相关的死亡,其中包括失联的马航飞机。而在1929年,有257起航空伤亡。我们的航空业看起来变差了,但是你要意识到仅在美国每年就有超过1000万次航班,而在1929年则少得多,大约5万到10万次航班。这意味着,从1929年到2014年,飞机失事遇难的概率从0.25%降到了0.00824%。
搭乘飞机旅行多年来变化很多,对于软件开发同样如此。我们知道在1929年的时候,软件开发尚不存在,在过去的85年中,我们有很多成功的软件项目,也有很多失败的软件项目。
最近的例子如healthcare.gov这个软件项目的推出,这是个财政灾难,因为它耗资约6亿3400万美元。更糟糕的是那些有着重大缺陷的软件项目。2013年由于软件故障而闭市的纳斯达克,被罚款1000万美元。2014年发现的Heartbleed bug感染,让许多使用SSL的网站容易受到攻击。后来CloudFlare撤销了10余万SSL证书,据说花费高达数百万美元。
软件和飞机有个共同点:它们都很复杂,而且一旦出了故障,都是公共性的和灾难性的。飞机已经能确保安全飞行,减少航空事故概率超过96%。遗憾的是,在软件行业并非如此,软件变得更加复杂。灾难性的缺陷时有发生,耗费数十亿美元。为什么飞机已经变得如此安全而软件却有如此多的缺陷?
正确地编写软件
从1929年到2014年,飞机变得日益复杂,庞大并且迅速发展。伴随这些成长而来的还有美国联邦航空局和国际机构的规范管理和飞行员之间的清单文化。
与此同时,计算机技术与硬件发展迅猛,而运行的软件却没有如此的发展。我们仍然主要使用面向过程和面向对象的代码,而这并没有充分利用到并行计算。但程序员已经取得了长足进步,提出了编写软件和创建测试文化的指导方针。从而开始采用SOLID和TDD。SOLID是指导我们写出更好的代码的一组原则,而TDD则是指测试驱动设计或测试驱动开发。我们将讨论这两种智慧的模型,因为它们关乎如何书写正确的软件,我们还将讨论以软件为中心的重构。
SOLID
SOLID是一个框架,用于帮助人们设计出更好的面向对象的代码。就如同美国联邦航空局规定一个航线或飞机应该做什么一样,SOLID告诉我们应该如何创建软件。违反美国联邦航空局规定的事偶有发生,其影响可能很小也可能是灾难性的。对于SOLID来说也是一样。这些原则有时候会造就很大的不同,但是多数时候只是指导准则。SOLID由Robert Martin作为五大原则引入,用以促进写出更好的代码,即可维护、易理解、稳定的代码。Michael Feathers提出助记符号SOLID用于帮助记忆。
SOLID代表的含义:
·单一职责原则(SRP)
·开/闭原则(OCP)
·Liskov替换原则(LSP)
·接口隔离原则(ISP)
·依赖倒置原则(DIP)
单一职责原则
SRP已经成为写好面向对象代码最盛行的部分之一。原因在于单一职责定义简单的类或对象。同样的思路可以应用于纯函数的函数式编程。但是理念是只关乎简单。让一片软件代码做一件事,并且只做这一件事情。多用途工具(见图1-1)就是一个违反单一职责原则的很好的例子。它们什么都能做,但是遗憾的是只有在不得已的时候才凑合用一下。
图1-1:这样的多功能工具拥有的职责太多了
开/闭原则
OCP有时也被称为封装,这个原则是指对象应该对扩展开放,对修改关闭。用一个计数器对象的例子说明一下,这个计数器对象有内部的计数方法。该对象有increment和decrement两个方法。这个对象不应该允许任何人改变内部计数方法,除非遵循预定义的API才可以扩展(例如,使用一个像Notifier这样的对象来通知计数方法的变化)。
Liskov替换原则
LSP是指任何子类型都应该能轻松地被同一对象树下的其他对象替代,而没有任何影响。例如,一个模型车的对象可以被一个真实车的对象替换。
接口隔 ............
以上为书籍内容预览,如需阅读全文内容请下载EPUB源文件,祝您阅读愉快。
书云 Open E-Library » Python机器学习实践:测试驱动的开发方法 - (EPUB全文下载)