(特价书)机器学习即服务:将Python机器学习创意快速转变为云端Web应用程序
基本信息
- 原书名:Monetizing Machine Learning: Quickly Turn Python ML Ideas into Web Applications on the Serverless Cloud

编辑推荐
将机器学习、统计、通过Web应用程序进行原型设计三种不同的知识组合在一起,并与云服务提供商合作;提供了一个简单的、云相关的、技术无限的指南,帮助你尽可能快地将Python建模工作推广到世界各地;讨论了在Web上快速进行统计和建模工作原型设计的艺术。
内容简介
计算机书籍
本书涵盖Kubernetes架构、部署、核心资源类型、系统扩缩容、存储卷、网络插件与网络本书由浅入深地介绍了一系列常见的Python数据科学问题。书中介绍的实践项目简单明了,可作为模板快速启动其他类似项目。通过本书,你将学习如何构建一个Web应用程序以进行数值或分类预测,如何理解文本分析,如何创建强大的交互界面,如何对数据访问进行安全控制,以及如何利用Web插件实现信用卡付款和捐赠。
每章都遵循三个步骤:以正确的方式建模,设计和开发本地Web应用程序,部署到流行且可靠的无服务器计算云平台(亚马逊、微软、谷歌和PythonAnywhere)上。本书各章之间是独立的,你可以根据需求跳转至特定主题。
作译者
Mehdi Roopaei是IEEE、AIAA和ISA的高级成员。2011年获Shiraz大学计算机工程博士学位,研究方向为动态系统的智能控制。2012年至2018年夏季,他在得克萨斯大学圣安东尼奥分校从事博士后研究工作;2018年秋季,他在威斯康星大学普拉特维尔分校担任助理教授。他的研究兴趣包括人工智能驱动的控制系统、数据驱动决策、机器学习和物联网(IoT),以及沉浸式分析。他是IEEE Access的副主编,也是IoT Elsevier杂志的编委会成员。他还是IoT Elsevier特刊《IoT Analytics for Data Streams》的兼职编辑,出版了《Applied Cloud Deep Semantic Recognition: Advanced Anomaly Detection》(CRC Press, 2018)一书。他于2018年1月至7月在圣安东尼奥担任IEEE联合通信和信号处理社区分会主席。他发表了60多篇备受同行好评的技术论文,在多个会议上担任项目委员会成员,并担任多个期刊的技术审稿人。
目录
译者序2
译者序3
关于作者
关于技术审校者
前言
第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
译者序
近几年来,人工智能(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学习奇妙之旅。
刘世民(Sammy Liu)
译者序2
人工智能的崛起经历了半个多世纪,从20世纪五六十年代AI概念的提出,到近些年AI热潮的此起彼伏,都与基础设施的进步和技术的革新密不可分。回顾半个多世纪,与其说AI技术在兴起,不如说AI在复兴!在信息技术领域,硬件架构经历了大型机、小型机、X86和云计算,软件架构经历了单体、多层、分布式集群、微服务和无服务器计算。历史上,没有任何一个时代计算资源的获取如此便利,应用软件的实现如此简单,而这一切,都意味着AI复兴的时代已然到来!
从技术层面来看,AI的复兴取决于两大要素:一是计算力,二是数据量。计算力越强,数据量越大,AI的发展时机就越成熟。分布式云计算技术解决了AI对计算力的需求,移动互联网让数据不断自我繁衍,大数据技术解决了海量数据的处理问题,AI复兴的道路已经铺平。相比云计算和大数据技术,AI更多表现为算法的最终呈现,或者说是机器学习在不同领域的应用,而机器学习是AI的核心和基础。提到机器学习或者算法,多数人的第一反应就是深奥难懂的数学知识和高深莫测的函数模型。必须承认,在提出AI概念后的半个多世纪,其一直难以在实际场景中得以应用的原因,除了基础设施和场景数据的匮乏外,还有就是其脱离技术领域的理论难度。译者曾经从事过计算机视觉和模式识别领域的研究工作,深知在算法理论和应用场景之间存在着巨大差距。如何把机器学习和人工智能应用到实际场景中,从而解决特定领域的问题,也是译者一直在思索的问题,因为即使我们花费大量时间来学习并理解算法背后的实际意义,但如果没有相应的实验数据,那么我们对于机器学习的研究也仅仅是停留在理论阶段。
当再次决定迈向机器学习的旅途时,译者有幸接触了Apress出版的《Monetizing Machine Learning》一书,这是一本完全从应用场景出发,讲解如何将各种机器学习算法以一种简单明了的方式应用到不同领域以解决特定问题的书籍。书中不仅有实现各种机器学习算法的代码,还提供了相应的实验数据集以供读者进行算法验证,更难能可贵的是这些代码完全可复现作者在书中的结论!与机器学习和人工智能相关的理论书籍很多,但正如我们一直强调的,把机器学习和算法理论应用到实际场景中,进而解决特定领域问题,才是我们学习的最终目的,我相信这也是机器学习和人工智能的最终目的。
在此,我们把这本书翻译并推荐给各位读者,希望本书能为大家带来一个轻松愉快的机器学习之旅,能让大家发现机器学习原来也是件很有趣的事情!有志者,事竟成,祝各位朋友心想事成!
山金孝
译者序3
近年来人工智能的发展正处在黄金时期,随着这个行业的持续升温,也引发了一波又一波的学习和创业热潮。但是目前市面上存在的与人工智能和机器学习相关的书籍或者在线学习课程,其内容往往侧重理论知识,实践内容则相对偏少,或者缺少场景化示例。但实际上,在读过本书原著后,我发现作者写作时非常用心,尽可能地结合理论和实践,为读者呈现出一个“平易近人、和蔼可亲”的人工智能。
本书的核心是帮助读者快速实现人工智能和机器学习工程化、产品化,简单、高效地推向市场,每章都会实现一个机器学习的创意项目(基于经典的数据科学问题),解决一个实际问题,并在开始时先进行活泼生动的项目结果展示,然后再循序渐进地指导读者完成项目的每个步骤。
本书的另一个特色是充分利用AWS等公有云资源,几乎每个章节都会先实现一个本地版本的Flask应用程序,然后再将这个应用程序部署到云端,并且尽可能选用托管解决方案。这里补充说明下,本书中提到的Serverless概念和目前流行的诸如AWSLambda等无服务器框架有些不同,其介绍的内容更贴近PaaS(平台即服务),但作者的主要意图是建议大家充分利用公有云的资源优势,尽量释放诸如弹性伸缩、负载均衡、持续部署等的运维工作压力,将更多的精力投入到机器学习的目标上来,这一点希望大家能够理解。
本书翻译的完成是团队协作的成果,翻译过程中团队针对每个细节进行在线会议的讨论和研究,精益求精,希望能尽量为读者呈现出原著的核心和灵魂。这里,感谢世民兄、今孝兄和力哥的支持和鼓励,他们的态度和专业性持续引领着整个团队。感谢编辑们的悉心指导,他们对本书做了大量的校对和编辑工作,保证了本书的顺利出版。最后,感谢我的家人,是他们在背后给予我默默的支持,让我可以专心地投入到本书的翻译工作中。由于本人水平有限,书中难免会出现错误或者不妥之处,欢迎批评指正,谢谢。
史天
前言
进入门槛降低,市场变化加快
本书将指导你完成各种各样的项目,这些项目探索不同的Python机器学习创意,以及将这些创意转化为Web应用程序的各种方法。每一章都以一个无服务器计算的Web应用程序结尾,全世界任何人都可以通过Internet连接并访问该应用程序。这些项目基于经典和流行的Python数据科学问题,难度逐步增加。本书研究和设计了一个建模方案,有趣的是,最后该方案会被实现为交互式和诱人的Web应用程序。
数据科学家是一个了不起的职业,但在人们试图成长为一名数据科学家时,他们的学习材料千差万别。数据科学不是关于统计和建模的,而是用于满足人类需求和解决实际问题的。
我们不会把“成为一名数据科学家”作为本书的最终目标,关于这个主题的书籍已经很多了。相反,我们将专注于把机器学习产品快速、简单地推向市场,并始终关注客户!这是职业教育大纲所缺少的。如果先构建,然后再与客户沟通,那么你的解决方案将无法满足他们的要求。我重新绘制了Drew Conway的数据科学维恩图,将倾听客户的声音作为首要任务(图1)。
图1经典的数据科学维恩图,右边是我更新的版本
我们为写作本书倾尽全力。我们花时间开发概念,确保它们对读者有实际价值(读者即我们的客户,应始终关注他们)。我撰写了初稿,然后Mehdi再修改它。这是一本涉猎广泛的书。工具在不断变化,当你阅读本书时,一些内容可能过时,但这永远不是问题(你可以去GitHub仓库查看更新)。毕竟,一切都在变化,但往往都是变得更好!因此,学习新技巧通常意味着学到更好、更快、更强大的方法来做事。本书不仅向你展示如何构建Web应用程序,还将为你指明正确的方向,以便你更深入地学习感兴趣领域的知识。
建议你通读本书,理解工具,然后复制它们,把它们变成你自己的。这些模板可以帮助你快速启动其他类似项目,为你的客户构建有效的工具。
什么是无服务器云计算
云提供商一直在努力改进Web托管解决方案并降低成本。最近出现的“无服务器计算”(serverless)服务抽象了大部分的配置过程,本书提到的四大云提供商中有三个提供这种服务。这意味着你可以在完全托管的平台上启动和运行项目,实现自动负载均衡、根据吞吐量弹性伸缩、快速部署等,而无须选择、配置和担心任何事情。你可自行决定架构上的定制程度和监控项。你可选择哪些自己控制,哪些由提供商控制。有一件事是可以保证的:网站将自动调整流量,并提供无与伦比的正常运行时间。
这使我们能专注于更重要的事情,而不会陷入实现目标时可能的陷阱之中。这些所谓的“陷阱”至关重要,需要我们认真对待。这就是我们找了这四家信誉良好的云提供商的原因,它们将让我们完全专注于Web应用程序,而不用担心网站崩溃或提供商倒闭。让我们专注于重要的事情,开始工作吧!
Web应用开发中的关键路径
如此多的机器学习模型在其最初编码阶段就让人停滞不前:这些模型很难理解,没有简单方法让人从其洞察中受益。这些模型注定要被遗忘,即使是那些设法摆脱集成开发接口限制的开发人员,在简化静态图表或为建模评分时,也无法发挥其潜力。本书旨在将扩展机器学习模型到通用的Web应用程序这一过程进行分解来避免这种陷阱。每一章都遵循以下三个关键步骤:
1. 以正确的方式建模。我们从最后的成果开始,首先理解用户想要看到什么,并将时间和精力投入到最终目标和用户体验上。我们使用适当的建模方法,以便快速且毫不意外地实现Web应用程序的目标(图2)。
图2在构建之前,始终检查你的想法是否有受众(来源:Lucas Amunategui)
2. 设计和开发本地Web应用程序。此步骤需利用各种Web前端技术来实现所需的交互性和动态性,以突出模型的洞察力,从而让用户感兴趣。此阶段的最终产品与下一阶段的产品是完全一样的,只是它托管在你的本地计算机上,而不是云上。
3. 部署到流行且可靠的无服务器计算云平台上。每个云提供商都有独特的要求、优点和缺点,需要充分理解这些问题。这是全世界享受和学习你的工作成果的最后一个环节。
我们从提供智能交互性的简单方法入手(比如调整模型的系数或利用保存好的训练过的模型),然后转向复杂方法(比如使用数据库跟踪参与性,或依赖开放源码的训练过的模型进行图像识别)。案例研究1是一个关于股票市场预测的虚构案例,它在后面的章节中会被反复提及,并添加新功能,直到它最终成为一个带有付费使用门槛的复杂仪表板,为付费用户提供可定制的智能化功能。
通过关注经典的数据科学问题,再加上流行的开源技术(如Python、Flask、Ajax、Bootstrap、JavaScript和HTML),你会发现自己已经了解了一些基础知识;即使你还不了解,你的学习曲线也会大大缩短。我们专注于使用简单的工具和简单的技术,去可靠、快速地将机器学习创意付诸实践。工具和方法在每一章都会被重新提及,所以如果你对某些东西一开始还不太清楚,也不用担心,只要继续下去,事情就会越来越清晰。
我们还在每章中轮流提到云提供商,因此你将接触到最受欢迎的云提供商。这将为“给未来项目选择提供商”提供丰富经验。建议仔细阅读所有章节,因为每个章节都会展示不同的项目及其实现方式,在强调提供商优势的同时,也展示快速完成工作的独特技巧。
媒体评论
每章都遵循三个步骤:以正确的方式建模,设计和开发本地Web应用程序,部署到流行且可靠的无服务器计算云平台(亚马逊、微软、谷歌和PythonAnywhere)上。本书各章之间是独立的,你可以根据需求跳转至特定主题。你还可以访问Jupyter Notebook和代码存储库GitHub,以获取本书代码。
通过阅读本书,你将能够:
使用简单的技术扩展你的机器学习模型,以创建引人注目的交互式Web仪表板。
利用Flask Web框架快速地构建Python模型和创意的原型。
创建由回归系数、逻辑回归、梯度提升、贝叶斯分类等驱动的动态内容。
通过将训练好的模型导入Web应用程序来利用TensorFlow的强大功能。
创建内容丰富的Web界面,使用JavaScript和Ajax处理复杂的实时用户输入,以生成交互式和定制的内容。
在界面中使用付费墙以提供基于订阅的访问。
访问API数据,如谷歌地图、OpenWeather等。
使用各种方法来理解文本数据并定制智能系统。
构建一个直观且实用的推荐网站,为用户增值,并吸引他们成为回头客。
利用Google Analytics的免费增值服务来分析结果。
通过顶级公有云供应商将你的创意呈现给客户。