1. 书籍简介

中文书名 :机器学习即服务 - 将Python机器学习创意快速转变为云端Web应用程序

英文书名 :MonetizingMachine Learning: Quickly Turn Python ML Ideas into Web Applications on theServerless Cloud

英文作者 :Manuel Amunategui,Mehdi Roopaei

中文译者 :刘世民、山金孝、史天、肖力

译作出版 :机械工业出版社,2019.06

豆瓣评论 https://book.douban.com/subject/34432066/ ,欢迎大家去豆瓣评论

2 作者简介

Manuel Amunategui 是SpringML(谷歌云和Salesforce的首选合作伙伴)的数据科学副总裁,拥有预测分析和国际管理硕士学位。在过去20年中,他在科技行业中实施了数百个端到端客户解决方案,在机器学习、医疗健康建模等方面有着丰富的咨询经验。他在华尔街金融行业工作了6年,在微软工作了4年,这些经历使他意识到应用数据科学教育和培训材料的匮乏。为了帮助缓解这一问题,他一直通过文字博客、视频博客和教育材料传播应用数据科学知识。他发展并策划了各种高度细分的社交媒体频道,包括YouTube频道(www.youtube.com/user/mamunate/videos)和一个广受欢迎的应用数据科学博客amunategui.github.io(http://amunategui.github.io)。

Mehdi Roopaei 是IEEE、AIAA和ISA的高级成员。2011年获Shiraz大学计算机工程博士学位,研究方向为动态系统的智能控制。2012年至2018年夏季,他在得克萨斯大学圣安东尼奥分校从事博士后研究工作;2018年秋季,他在威斯康星大学普拉特维尔分校担任助理教授。他的研究兴趣包括人工智能驱动的控制系统、数据驱动决策、机器学习和物联网(IoT),以及沉浸式分析。他是IEEE Access的副主编,也是IoT Elsevier杂志的编委会成员。他还是IoT Elsevier特刊《IoT Analytics for Data Streams》的兼职编辑,出版了《AppliedCloud Deep Semantic Recognition: Advanced Anomaly Detection》(CRC Press, 2018)一书。他于2018年1月至7月在圣安东尼奥担任IEEE联合通信和信号处理社区分会主席。他发表了60多篇备受同行好评的技术论文,在多个会议上担任项目委员会成员,并担任多个期刊的技术审稿人。

3 译者简介

刘世民(Sammy Liu) 现任易建科技云服务事业群总经理、易建科技技术委员会首席专家。十几年IT从业经验,曾先后就职于华为、IBM和EMC,担任过云计算创业公司CTO。云计算爱好者、实践者和推广者,乐于总结和分享,维护有『世民谈云计算』技术博客和微信公众号。译有《Ceph Cookbook 中文版》、《精通OpenStack》、《机器学习即服务》等书籍。

山金孝(Warrior) 现就职于招商银行,曾就职于IBM,在云计算、大数据、容器及其编排技术、机器学习和人工智能领域有丰富的研究和实践经验。国内较早接触OpenStack的一线技术专家,长期致力于OpenStack私有云的研究、实践和布道,OpenStack社区金融工作组成员,著有畅销书《OpenStack高可用集群(上、下册)》和《私有云建设指南》。

史天 ,AWS解决方案架构师。曾在世纪互联、惠普等知名公司任职,拥有丰富的云计算、大数据经验,目前致力于数据科学、机器学习、无服务器等领域的研究和实践。

肖力 新钛云服技术副总裁,云技术社区创始人,《深度实践KVM》作者,《运维前线》系列图书策划人,《Ceph Cookbook 中文版》译者。曾就职于盛大和金山,有19年运维经验。维护有订阅号『云技术』。

4 译者序

4.1 刘世民的译者序

近几年来,人工智能(AI)一直在飞速发展着,它正在开启一个全新的创新时代。从智能音箱到各种机器人,从人脸识别到语言翻译,从智能推荐到自动驾驶,人工智能在各行各业应用得越来越广泛。

人工智能技术是引领未来的创新性技术,它将拥有非常光明的前景。译者对这一点深信不疑。于是,大概半年前,为了学习AI,译者买来了大学时期曾经学过的《概率论》《微积分》《线性代数》等数学书籍,以及几本讲述各种算法和模型的大部头。尽管很努力地学习,但是自我感觉效果不太理想。一来要学习的内容非常多,二来各种算法非常枯燥,三来没有太多使用机会,因此很难在短时间内就理解得比较透彻,有时甚至有了打退堂鼓的念头。

直至看到Apress出版的《Monetizing Machine Learning》,我才知道学习AI还有如此轻松有趣的方法。书中实现了多个包含AI能力的完整Web应用程序,包括利用Python、Flask、Google Analytics、Google Maps、PythonAnywhere、Memberful等编程工具和云服务,在GCP上实现一个交互式画布并利用TensorFlow来对手写数字进行预测,在GCP上使用奇异值分解算法来向用户推荐电影,在AWS上使用朴素贝叶斯算法来为高尔夫球手实时预测天气,在Azure上利用云端回归系数来预测共享单车租赁需求等。从这些例子可以看出,本书另辟蹊径,不从各种算法和模型推理入手,而是一步一步从产品设计开始,到代码实现,再到云上部署,让读者学习如何利用AI来实现这些Web应用程序中的智能能力。

本书的顺利出版是各位编辑和我们四人翻译团队通力合作的结果。感谢机械工业出版社对我们的信任和支持,以及各位编辑的专业和细心,感谢四人小组的互相支持和鼓励。还要感谢我的妻子和儿子,谢谢你们对我的默默支持。

最后,由于本人水平有限,书中难免会出现错误或者不妥之处,欢迎批评指正。希望本书能给大家带来一个轻松、有趣、有成就感,甚至还能赚到钱的AI学习奇妙之旅。

4.2 山金孝的译者序

人工智能的崛起经历了半个多世纪,从20世纪五六十年代AI概念的提出,到近些年AI热潮的此起彼伏,都与基础设施的进步和技术的革新密不可分。回顾半个多世纪,与其说AI技术在兴起,不如说AI在复兴!在信息技术领域,硬件架构经历了大型机、小型机、X86和云计算,软件架构经历了单体、多层、分布式集群、微服务和无服务器计算。历史上,没有任何一个时代计算资源的获取如此便利,应用软件的实现如此简单,而这一切,都意味着AI复兴的时代已然到来!

从技术层面来看,AI的复兴取决于两大要素:一是计算力,二是数据量。计算力越强,数据量越大,AI的发展时机就越成熟。分布式云计算技术解决了AI对计算力的需求,移动互联网让数据不断自我繁衍,大数据技术解决了海量数据的处理问题,AI复兴的道路已经铺平。相比云计算和大数据技术,AI更多表现为算法的最终呈现,或者说是机器学习在不同领域的应用,而机器学习是AI的核心和基础。提到机器学习或者算法,多数人的第一反应就是深奥难懂的数学知识和高深莫测的函数模型。必须承认,在提出AI概念后的半个多世纪,其一直难以在实际场景中得以应用的原因,除了基础设施和场景数据的匮乏外,还有就是其脱离技术领域的理论难度。译者曾经从事过计算机视觉和模式识别领域的研究工作,深知在算法理论和应用场景之间存在着巨大差距。如何把机器学习和人工智能应用到实际场景中,从而解决特定领域的问题,也是译者一直在思索的问题,因为即使我们花费大量时间来学习并理解算法背后的实际意义,但如果没有相应的实验数据,那么我们对于机器学习的研究也仅仅是停留在理论阶段。

当再次决定迈向机器学习的旅途时,译者有幸接触了Apress出版的《Monetizing Machine Learning》一书,这是一本完全从应用场景出发,讲解如何将各种机器学习算法以一种简单明了的方式应用到不同领域以解决特定问题的书籍。书中不仅有实现各种机器学习算法的代码,还提供了相应的实验数据集以供读者进行算法验证,更难能可贵的是这些代码完全可复现作者在书中的结论!与机器学习和人工智能相关的理论书籍很多,但正如我们一直强调的,把机器学习和算法理论应用到实际场景中,进而解决特定领域问题,才是我们学习的最终目的,我相信这也是机器学习和人工智能的最终目的。

在此,我们把这本书翻译并推荐给各位读者,希望本书能为大家带来一个轻松愉快的机器学习之旅,能让大家发现机器学习原来也是件很有趣的事情!有志者,事竟成,祝各位朋友心想事成!

4.3 史天的译者序

近年来人工智能的发展正处在黄金时期,随着这个行业的持续升温,也引发了一波又一波的学习和创业热潮。但是目前市面上存在的与人工智能和机器学习相关的书籍或者在线学习课程,其内容往往侧重理论知识,实践内容则相对偏少,或者缺少场景化示例。但实际上,在读过本书原著后,我发现作者写作时非常用心,尽可能地结合理论和实践,为读者呈现出一个“平易近人、和蔼可亲”的人工智能。

本书的核心是帮助读者快速实现人工智能和机器学习工程化、产品化,简单、高效地推向市场,每章都会实现一个机器学习的创意项目(基于经典的数据科学问题),解决一个实际问题,并在开始时先进行活泼生动的项目结果展示,然后再循序渐进地指导读者完成项目的每个步骤。

本书的另一个特色是充分利用AWS等公有云资源,几乎每个章节都会先实现一个本地版本的Flask应用程序,然后再将这个应用程序部署到云端,并且尽可能选用托管解决方案。这里补充说明下,本书中提到的Serverless概念和目前流行的诸如AWSLambda等无服务器框架有些不同,其介绍的内容更贴近PaaS(平台即服务),但作者的主要意图是建议大家充分利用公有云的资源优势,尽量释放诸如弹性伸缩、负载均衡、持续部署等的运维工作压力,将更多的精力投入到机器学习的目标上来,这一点希望大家能够理解。

本书翻译的完成是团队协作的成果,翻译过程中团队针对每个细节进行在线会议的讨论和研究,精益求精,希望能尽量为读者呈现出原著的核心和灵魂。这里,感谢世民兄、金孝兄和力哥的支持和鼓励,他们的态度和专业性持续引领着整个团队。感谢编辑们的悉心指导,他们对本书做了大量的校对和编辑工作,保证了本书的顺利出版。

最后,感谢我的家人,是他们在背后给予我默默的支持,让我可以专心地投入到本书的翻译工作中。由于本人水平有限,书中难免会出现错误或者不妥之处,欢迎批评指正,谢谢。

关于技术审校者

第1章 无服务器计算介绍1

1.1 一个简单的本地Flask应用程序1

1.2 在微软Azure上使用无服务器计算4

1.2.1 操作步骤5

1.2.2 结论和附加信息12

1.3 在谷歌云上使用无服务器计算12

1.3.1 操作步骤13

1.3.2 结论和附加信息18

1.4 在Amazon AWS上使用无服务器计算19

1.4.1 操作步骤19

1.4.2 结论和附加信息24

1.5 在PythonAnywhere上托管应用程序24

1.5.1 操作步骤25

1.5.2 结论和附加信息26

1.6 本章小结26

第2章 在Azure上进行共享单车回归模型智能预测27

2.1 共享单车租赁需求回归系数分析28

2.2 探索共享单车原始数据集28

2.2.1 下载UCI机器学习库数据集29

2.2.2 Jupyter Notebook配置使用29

2.2.3 数据集探索31

2.2.4 预测结果变量分析33

2.2.5 量化特征与租赁统计34

2.2.6 分类特征研究35

2.3 数据建模准备工作36

2.3.1 回归建模37

2.3.2 简单线性回归37

2.3.3 简单线性回归模型37

2.4 特征工程试验39

2.4.1 多项式建模39

2.4.2 创建分类数据虚拟特征40

2.4.3 非线性模型试验41

2.4.4 使用时间序列复杂特征42

2.5 简约模型44

2.5.1 简单模型中的回归系数提取44

2.5.2 R-Squared44

2.5.3 基于回归系数的新数据预测46

2.6 共享单车租赁需求交互式Web应用设计48

2.6.1 代码可读性与扩展性摘要48

2.6.2 构建本地Flask应用49

2.6.3 下载运行GitHub共享单车代码50

2.6.4 Web应用程序调试最佳实践51

2.7 在微软Azure上运行Web应用程序54

2.7.1 使用Git托管项目代码54

2.7.2 微软Azure命令行接口工具使用56

2.7.3 资源清理59

2.7.4 故障排查60

2.7.5 步骤回顾62

2.8 Web应用程序脚本及技术分析62

2.8.1 main.py文件分析63

2.8.2 /static/文件夹分析64

2.8.3 /templates/index.html文件及脚本分析64

2.9 本章小结66

2.10 附加资源66

第3章 在GCP上基于逻辑回归实现实时智能67

3.1 规划Web应用68

3.2 数据处理68

3.2.1 处理分类型数据71

3.2.2 从分类型数据创建虚拟特征75

3.3 建模75

3.3.1 训练和测试数据集拆分76

3.3.2 逻辑回归77

3.3.3 预测幸存率78

3.4 准备上云78

3.4.1 函数startup()79

3.4.2 函数submit_new_profile()79

3.4.3 使用HTML表单实现交互79

3.4.4 创建动态图像80

3.4.5 下载Titanic代码81

3.5 部署到谷歌云上82

3.5.1 Google App Engine82

3.5.2 在Google App Engine上进行部署83

3.5.3 问题排查86

3.5.4 收尾工作87

3.6 代码回顾87

3.6.1 main.py87

3.6.2 app.yaml88

3.6.3 appengine_config.py文件与lib文件夹89

3.6.4 requirements.txt89

3.7 步骤回顾90

3.8 本章小结90

第4章 在AWS上使用Gradient Boosting Machine进行预训练91

4.1 Web应用程序规划92

4.2 探索葡萄酒品质数据集92

4.3 处理不平衡的类别95

4.4 使用Gradient Boosting Classifier97

4.4.1 评估模型98

4.4.2 持久化模型101

4.4.3 新数据预测101

4.5 设计Web应用程序以交互评估葡萄酒品质103

4.6 Ajax—服务器端动态Web渲染104

4.7 在虚拟环境中工作:一个方便实验、更加安全和纯净的沙箱104

4.8 AWS Elastic Beanstalk105

4.8.1 为Elastic Beanstalk创建一个访问账户106

4.8.2 Elastic Beanstalk108

4.8.3 EB Command Line Interface108

4.8.4 修复WSGIApplication-Group110

4.8.5 创建EB应用程序111

4.8.6 查看应用程序111

4.9 资源清理112

4.10 步骤回顾114

4.11 故障排查115

4.11.1 查看日志115

4.11.2 SSH登录到实例115

4.12 本章小结116

第5章 案例研究1:在Web和移动浏览器上预测股票市场117

5.1 配对交易策略118

5.2 下载和准备数据119

5.2.1 准备数据120

5.2.2 股票代码透视121

5.3 价格市场数据扩展121

5.4 绘制价差122

5.5 交易理念123

5.5.1 寻找极端案例123

5.5.2 提供交易建议124

5.6 计算交易股数125

5.7 设计一个移动友好的Web应用程序提供交易建议127

5.8 运行本地Flask应用程序128

5.9 表单验证130

5.10 在PythonAnywhere上运行应用程序130

5.11 修复WSGI文件133

5.11.1 源代码133

5.11.2 WSGI配置133

5.11.3 重新加载网站134

5.12 PythonAnywhere故障排查135

5.13 本章小结136

第6章 基于Azure和Google地图的犯罪行为预测137

6.1 Web应用程序规划138

6.2 探索旧金山犯罪热图数据集138

6.2.1 数据清洗139

6.2.2 数据重分布140

6.2.3 周数据探索142

6.3 数据特征工程142

6.3.1 创建年度月份汇总数据特征143

6.3.2 创建时段数据特征144

6.3.3 时段特征数据集探索145

6.4 地理数据可视化146

6.4.1 地理坐标位置绘制146

6.4.2 地理坐标近似值区块创建147

6.5 基于历史数据的犯罪预测149

6.6 Google地图152

6.7 热力图层153

6.8 犯罪数据在Google地图上的应用154

6.9 犯罪预测数据自定义提取155

6.10 设计Web应用程序156

6.10.1 添加Google API密钥157

6.10.2 本地运行Web应用程序157

6.10.3 Azure公有云Git准备157

6.10.4 Azure命令行接口工具160

6.10.5 故障排查164

6.10.6 资源清理166

6.11 本章小结166

第7章 在AWS上使用朴素贝叶斯和OpenWeather进行预测167

7.1 探索数据集167

7.2 朴素贝叶斯169

7.3 Sklearn中的GaussianNB170

7.4 实时天气预报OpenWeatherMap171

7.4.1 使用天气预测服务173

7.4.2 数据转换174

7.5 设计Web应用程序177

7.6 在AWS Elastic Beanstalk上运行应用程序179

7.6.1 修复WSGIApplication-Group180

7.6.2 查看应用程序181

7.6.3 记得终止实例182

7.7 本章小结184

7.7.1 访问OpenWeatherMap数据184

7.7.2 捕获异常184

7.7.3 处理用户输入的数据185

第8章 在GCP上基于TensorFlow实现交互式绘画和数字预测186

8.1 MNIST数据集186

8.2 TensorFlow189

8.3 使用TensorFlow和卷积网络建模189

8.3.1 构建建模层190

8.3.2 损益函数191

8.3.3 实例化会话191

8.3.4 训练191

8.3.5 准确度191

8.3.6 运行脚本192

8.4 准备上云193

8.4.1 运行一个保存的TensorFlow模型193

8.4.2 保存模型194

8.4.3 画布194

8.4.4 从画布到TensorFlow195

8.4.5 测试新的手写数字195

8.4.6 设计Web应用程序196

8.4.7 下载Web应用程序197

8.5 部署到谷歌云上198

8.5.1 谷歌云Flexible App Engine198

8.5.2 在Google App Engine上部署199

8.5.3 问题排查201

8.5.4 收尾工作202

8.6 本章小结203

8.6.1 HTML5 <canvas>标签203

8.6.2 TensorFlow203

8.6.3 设计203

第9章 案例研究2:动态股票图表显示205

9.1 使用Matplotlib创建股票图表205

9.2 探索配对交易图表207

9.3 设计Web应用程序210

9.4 具有移动友好性的表格211

9.5 上传Web应用程序到PythonAnywhere213

9.6 本章小结215

第10章 在GCP上使用奇异值分解实现推荐系统216

10.1 规划Web应用216

10.2 推荐系统简介217

10.3 探索MovieLens数据集217

10.3.1 MovieLens数据集概况218

10.3.2 探索ratings.csv和movies.csv219

10.3.3 理解评级和评级文化221

10.3.4 给出推荐224

10.4 协同过滤226

10.4.1 相似性和距离测量工具227

10.4.2 欧几里得距离227

10.4.3 余弦相似距离228

10.5 奇异值分解228

10.5.1 将电影评级集中到零周围229

10.5.2 观察SVD的行为229

10.6 准备上云232

10.6.1 下载并在本地运行“下一部电影看什么?”232

10.6.2 代码解释234

10.7 部署到谷歌云上236

10.7.1 在Google App Engine上部署236

10.7.2 问题排查240

10.7.3 收尾工作240

10.8 本章小结241

第11章 在Azure上使用NLP和可视化技术简化复杂概念242

11.1 Web应用规划242

11.2 数据探索243

11.3 文本清理244

11.4 基于文本的特征工程245

11.5 TFIDF文本数据清理247

11.6 NLP与正则表达式247

11.7 使用外部垃圾邮件关键字列表248

11.8 使用Sklearn库TfidfVectorizer提取特征250

11.9 输出变量准备250

11.10 使用Sklearn库随机森林分类器建模251

11.10.1 模型性能测量252

11.10.2 模型阈值交互255

11.11 Web图形化交互256

11.12 构建本地Flask Web应用257

11.13 将应用程序部署到Azure公有云259

11.13.1 在Azure上部署Git259

11.13.2 Azure命令行接口工具262

11.13.3 资源清理265

11.13.4 故障排查266

11.14 本章小结与附加资源268

第12章 案例研究3:使用基础财务信息使内容更丰富269

12.1 访问股票上市公司名单269

12.2 使用维基百科API获取公司信息271

12.3 构建动态FinViz链接272

12.4 基础消息探索273

12.5 设计Web应用程序274

12.6 上传Web应用程序到PythonAnywhere276

12.7 本章小结281

第13章 使用Google Analytics282

13.1 创建Google Analytics账户282

13.2 JavaScript跟踪器283

13.3 阅读分析报告284

13.4 流量来源286

13.5 页面286

13.6 本章小结与附加资源287

第14章 在PythonAnywhere上使用A/B测试和MySQL数据库288

14.1 A/B测试289

14.1.1 用户跟踪290

14.1.2 通用唯一标识符290

14.2 MySQL290

14.2.1 使用命令行启动和停止服务292

14.2.2 MySQL命令行监视器293

14.2.3 创建数据库293

14.2.4 创建数据表294

14.2.5 创建数据库用户295

14.3 Python库:mysql.connector295

14.3.1 SELECT SQL语句296

14.3.2 INSERT SQL语句296

14.3.3 UPDATE SQL语句297

14.4 将代码抽象为函数298

14.5 设计Web应用程序300

14.6 在PythonAnywhere上设置MySQL300

14.7 在PythonAnywhere上进行A/B测试302

14.8 A/B测试结果304

14.9 本章小结304

第15章 从访问者到订阅者306

15.1 基于文本的身份验证306

15.1.1 Flask-HTTPAuth硬编码账户307

15.1.2 摘要式身份验证示例308

15.1.3 使用外部文本文件的摘要式身份验证示例309

15.2 简单订阅插件系统311

15.2.1 用Memberful进行销售311

15.2.2 用PayPal进行捐赠315

15.2.3 用Stripe进行购买317

15.3 本章小结321

第16章 案例研究4:使用Memberful构建订阅付费墙322

16.1 升级Memberful和Python-Anywhere支付账户323

16.1.1 升级Memberful323

16.1.2 升级PythonAnywhere326

16.1.3 使用pip安装Flask-SSLify326

16.2 Memberful用户验证327

16.2.1 两步流程和Flask会话机制327

16.2.2 身份验证第1步328

16.2.3 身份验证第2步328

16.2.4 调用Memberful函数330

16.3 设计Web应用程序331

16.3.1 在Memberful.com上设计一个订阅计划331

16.3.2 将Web应用程序上传到PythonAnywhere333

16.3.3 在Memberful和MySQL中替换你自己的凭据335

16.4 代码解释336

16.4.1 main.py336

16.4.2 welcome.html336

16.4.3 index.html337

16.5 本章小结338

第17章 关闭所有资源339

6 样章下载

在『世民谈云计算』微信公众号后台回复 AI样章 即可获得前三章试读。

当当现货: http://product.dangdang.com/27884991.html

京东现货: https://item.jd.com/12628706.html

感谢您的阅读,欢迎关注我的微信公众号,欢迎有需要的朋友们购买书籍: