热门搜索: 中考 高考 考试 开卷17
服务电话 024-23945002/96192
 

机器学习即服务:将PYTHON机器学习创意快速转变为云端WEB应用程序

编号:
wx1201893189
销售价:
¥87.12
(市场价: ¥99.00)
赠送积分:
87
商品介绍

近几年来,人工智能(AI)一直在飞速发展着,它正在开启一个全新的创新时代。从智能音箱到各种机器人,从人脸识别到语言翻译,从智能推荐到自动驾驶,人工智能在各行各业应用得越来越广泛。人工智能技术是引领未来的创新性技术,它将拥有很好光明的前景。译者对这一点深信不疑。于是,大概半年前,为了学习AI,译者买来了大学时期曾经学过的《概率论》《微积分》《线性代数》等数学书籍,以及几本讲述各种算法和模型的大部头。尽管很努力地学习,但是自我感觉效果不太理想。一来要学习的内容很好多,二来各种算法很好枯燥,三来没有太多使用机会,因此很难在短时间内就理解得比较透彻,有时甚至有了打退堂鼓的念头。直至看到Apress出版的《Monetizing Machine Learning》,我才知道学习AI还有如此轻松有趣的方法。书中实现了多个包含AI能力的完整Web应用程序,包括利用Python、Flask、Google Analytics、Google Maps、PythonAnywhere、Memberful等编程工具和云服务,在GCP上实现一个交互式画布并利用TensorFlow来对手写数字进行预测,在GCP上使用奇异值分解算法来向用户推荐电影,在AWS上使用朴素贝叶斯算法来为高尔夫球手实时预测天气,在Azure上利用云端回归系数来预测共享单车租赁需求等。从这些例子可以看出,本书另辟蹊径,不从各种算法和模型推理入手,而是一步一步从产品设计开始,到代码实现,再到云上部署,让读者学习如何利用AI来实现这些Web应用程序中的智能能力。

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》的兼职编辑,出版了《Applied Cloud Deep Semantic Recognition: Advanced Anomaly Detection》(CRC Press, 2018)一书。他于2018年1月至7月在圣安东尼奥担任IEEE联合通信和信号处理社区分会主席。他发表了60多篇备受同行好评的技术论文,在多个会议上担任项目委员会成员,并担任多个期刊的技术审稿人。About the Technical reviewers关于技术审校者Rafal Buch是一名生活和工作在纽约的金融系统架构师,也是一名技术专家。他有20余年的软件工程经历,大部分空闲时间都是在咖啡店里钻研新技术。其博客为rafalbuch.com。Matt Katz自2001年以来一直在金融科技行业工作,他总是对新事物充满兴趣。他维护着www.morelight.com网站,在纽约生活,有两个可爱的孩子和一位迷人且有耐心的妻子。

目录译者序1译者序2译者序3关于作者关于技术审校者前言章  无服务器计算介绍11.1  一个简单的本地Flask应用程序11.2  在微软Azure上使用无服务器计算41.2.1  操作步骤51.2.2  结论和附加信息121.3  在谷歌云上使用无服务器计算121.3.1  操作步骤131.3.2  结论和附加信息181.4  在Amazon AWS上使用无服务器计算191.4.1  操作步骤191.4.2  结论和附加信息241.5  在PythonAnywhere上托管应用程序241.5.1  操作步骤251.5.2  结论和附加信息261.6  本章小结26第2章  在Azure上进行共享单车回归模型智能预测272.1  共享单车租赁需求回归系数分析282.2  探索共享单车原始数据集282.2.1  下载UCI机器学习库数据集292.2.2  Jupyter Notebook配置使用292.2.3  数据集探索312.2.4  预测结果变量分析332.2.5  量化特征与租赁统计342.2.6  分类特征研究352.3  数据建模准备工作362.3.1  回归建模372.3.2  简单线性回归372.3.3  简单线性回归模型372.4  特征工程试验392.4.1  多项式建模392.4.2  创建分类数据虚拟特征402.4.3  非线性模型试验412.4.4  使用时间序列复杂特征422.5  简约模型442.5.1  简单模型中的回归系数提取442.5.2  R-Squared442.5.3  基于回归系数的新数据预测462.6  共享单车租赁需求交互式Web应用设计482.6.1  代码可读性与扩展性摘要482.6.2  构建本地Flask应用492.6.3  下载运行GitHub共享单车代码502.6.4  Web应用程序调试最佳实践512.7  在微软Azure上运行Web应用程序542.7.1  使用Git托管项目代码542.7.2  微软Azure命令行接口工具使用562.7.3  资源清理592.7.4  故障排查602.7.5  步骤回顾622.8  Web应用程序脚本及技术分析622.8.1  main.py文件分析632.8.2  /static/文件夹分析642.8.3  /templates/index.html文件及脚本分析642.9  本章小结662.10  附加资源66第3章  在GCP上基于逻辑回归实现实时智能673.1  规划Web应用683.2  数据处理683.2.1  处理分类型数据713.2.2  从分类型数据创建虚拟特征753.3  建模753.3.1  训练和测试数据集拆分763.3.2  逻辑回归773.3.3  预测幸存率783.4  准备上云783.4.1  函数startup()793.4.2  函数submit_new_profile()793.4.3  使用HTML表单实现交互793.4.4  创建动态图像803.4.5  下载Titanic代码813.5  部署到谷歌云上823.5.1  Google App Engine823.5.2  在Google App Engine上进行部署833.5.3  问题排查863.5.4  收尾工作873.6  代码回顾873.6.1  main.py873.6.2  app.yaml883.6.3  appengine_config.py文件与lib文件夹893.6.4  requirements.txt893.7  步骤回顾903.8  本章小结90第4章  在AWS上使用Gradient Boosting Machine进行预训练914.1  Web应用程序规划924.2  探索葡萄酒品质数据集924.3  处理不平衡的类别954.4  使用Gradient Boosting Classifier974.4.1  评估模型984.4.2  持久化模型1014.4.3  新数据预测1014.5  设计Web应用程序以交互评估葡萄酒品质1034.6  Ajax—服务器端动态Web渲染1044.7  在虚拟环境中工作:一个方便实验、更加安全和纯净的沙箱1044.8  AWS Elastic Beanstalk1054.8.1  为Elastic Beanstalk创建一个访问账户1064.8.2  Elastic Beanstalk1084.8.3  EB Command Line Interface1084.8.4  修复WSGIApplication-Group1104.8.5  创建EB应用程序1114.8.6  查看应用程序1114.9  资源清理1124.10  步骤回顾1144.11  故障排查1154.11.1  查看日志1154.11.2  SSH登录到实例1154.12  本章小结116第5章  案例研究1:在Web和移动浏览器上预测股票市场1175.1  配对交易策略1185.2  下载和准备数据1195.2.1  准备数据1205.2.2  股票代码透视1215.3  价格市场数据扩展1215.4  绘制价差1225.5  交易理念1235.5.1  寻找极端案例1235.5.2  提供交易建议1245.6  计算交易股数1255.7  设计一个移动友好的Web应用程序提供交易建议1275.8  运行本地Flask应用程序1285.9  表单验证1305.10  在PythonAnywhere上运行应用程序1305.11  修复WSGI文件1335.11.1  源代码1335.11.2  WSGI配置1335.11.3  重新加载网站1345.12  PythonAnywhere故障排查1355.13  本章小结136第6章  基于Azure和Google地图的犯罪行为预测1376.1  Web应用程序规划1386.2  探索旧金山犯罪热图数据集1386.2.1  数据清洗1396.2.2  数据重分布1406.2.3  周数据探索1426.3  数据特征工程1426.3.1  创建年度月份汇总数据特征1436.3.2  创建时段数据特征1446.3.3  时段特征数据集探索1456.4  地理数据可视化1466.4.1  地理坐标位置绘制1466.4.2  地理坐标近似值区块创建1476.5  基于历史数据的犯罪预测1496.6  Google地图1526.7  热力图层1536.8  犯罪数据在Google地图上的应用1546.9  犯罪预测数据自定义提取1556.10  设计Web应用程序1566.10.1  添加Google API密钥1576.10.2  本地运行Web应用程序1576.10.3  Azure公有云Git准备1576.10.4  Azure命令行接口工具1606.10.5  故障排查1646.10.6  资源清理1666.11  本章小结166第7章  在AWS上使用朴素贝叶斯和OpenWeather进行预测1677.1  探索数据集1677.2  朴素贝叶斯1697.3  Sklearn中的GaussianNB1707.4  实时天气预报OpenWeatherMap1717.4.1  使用天气预测服务1737.4.2  数据转换1747.5  设计Web应用程序1777.6  在AWS Elastic Beanstalk上运行应用程序1797.6.1  修复WSGIApplication-Group1807.6.2  查看应用程序1817.6.3  记得终止实例1827.7  本章小结1847.7.1  访问OpenWeatherMap数据1847.7.2  捕获异常1847.7.3  处理用户输入的数据185第8章  在GCP上基于TensorFlow实现交互式绘画和数字预测1868.1  MNIST数据集1868.2  TensorFlow1898.3  使用TensorFlow和卷积网络建模1898.3.1  构建建模层1908.3.2  损益函数1918.3.3  实例化会话1918.3.4  训练1918.3.5  准确度1918.3.6  运行脚本1928.4  准备上云1938.4.1  运行一个保存的TensorFlow模型1938.4.2  保存模型1948.4.3  画布1948.4.4  从画布到TensorFlow1958.4.5  测试新的手写数字1958.4.6  设计Web应用程序1968.4.7  下载Web应用程序1978.5  部署到谷歌云上1988.5.1  谷歌云Flexible App Engine1988.5.2  在Google App Engine上部署1998.5.3  问题排查2018.5.4  收尾工作2028.6  本章小结2038.6.1  HTML5 标签2038.6.2  TensorFlow2038.6.3  设计203第9章   案例研究2:动态股票图表显示2059.1  使用Matplotlib创建股票图表2059.2  探索配对交易图表2079.3  设计Web应用程序2109.4  具有移动友好性的表格2119.5  上传Web应用程序到PythonAnywhere2139.6  本章小结2150章  在GCP上使用奇异值分解实现推荐系统21610.1  规划Web应用21610.2  推荐系统简介21710.3  探索MovieLens数据集21710.3.1  MovieLens数据集概况21810.3.2  探索ratings.csv和movies.csv21910.3.3  理解评级和评级文化22110.3.4  给出推荐22410.4  协同过滤22610.4.1  相似性和距离测量工具22710.4.2  欧几里得距离22710.4.3  余弦相似距离22810.5  奇异值分解22810.5.1  将电影评级集中到零周围22910.5.2  观察SVD的行为22910.6  准备上云23210.6.1  下载并在本地运行“下一部电影看什么?”23210.6.2  代码解释23410.7  部署到谷歌云上23610.7.1  在Google App Engine上部署23610.7.2  问题排查24010.7.3  收尾工作24010.8  本章小结2411章  在Azure上使用NLP和可视化技术简化复杂概念24211.1  Web应用规划24211.2  数据探索24311.3  文本清理24411.4  基于文本的特征工程24511.5  TFIDF文本数据清理24711.6  NLP与正则表达式24711.7  使用外部垃圾邮件关键字列表24811.8  使用Sklearn库TfidfVectorizer提取特征25011.9  输出变量准备25011.10  使用Sklearn库随机森林分类器建模25111.10.1  模型性能测量25211.10.2  模型阈值交互25511.11  Web图形化交互25611.12  构建本地Flask Web应用25711.13  将应用程序部署到Azure公有云25911.13.1  在Azure上部署Git25911.13.2  Azure命令行接口工具26211.13.3  资源清理26511.13.4  故障排查26611.14  本章小结与附加资源2682章  案例研究3:使用基础财务信息使内容更丰富26912.1  访问股票上市公司名单26912.2  使用维基百科API获取公司信息27112.3  构建动态FinViz链接27212.4  基础消息探索27312.5  设计Web应用程序27412.6  上传Web应用程序到PythonAnywhere27612.7  本章小结2813章  使用Google Analytics28213.1  创建Google Analytics账户28213.2  JavaScript跟踪器28313.3  阅读分析报告28413.4  流量来源28613.5  页面28613.6  本章小结与附加资源2874章  在PythonAnywhere上使用A/B测试和MySQL数据库28814.1  A/B测试28914.1.1  用户跟踪29014.1.2  通用唯一标识符29014.2  MySQL29014.2.1  使用命令行启动和停止服务29214.2.2  MySQL命令行监视器29314.2.3  创建数据库29314.2.4  创建数据表29414.2.5  创建数据库用户29514.3  Python库:mysql.connector29514.3.1  SELECT SQL语句29614.3.2  INSERT SQL语句29614.3.3  UPDATE SQL语句29714.4  将代码抽象为函数29814.5  设计Web应用程序30014.6  在PythonAnywhere上设置MySQL30014.7  在PythonAnywhere上进行A/B测试30214.8  A/B测试结果30414.9  本章小结3045章  从访问者到订阅者30615.1  基于文本的身份验证30615.1.1  Flask-HTTPAuth硬编码账户30715.1.2  摘要式身份验证示例30815.1.3  使用外部文本文件的摘要式身份验证示例30915.2  简单订阅插件系统31115.2.1  用Memberful进行销售31115.2.2  用PayPal进行捐赠31515.2

    章无服务器计算介绍本章中,我们将创建一个很好简单的Flask Web应用程序(图1-1)。在后面章节中,当我们在亚马逊AWS、谷歌云、微软Azure和PythonAnywhere上探索基于公有云的Web服务时,会不断地用到这个应用程序。Flask Web1-1AWSAzurePythonAnywhereWeb图1-1  Flask在开始云端之旅之前,很好先在本地计算机上使用本地版本的网站。提示  请访问www.apress.com/9781484238721,单击“Download source code”按钮,跳转至GitHub网站,下载章所需文件。推荐使用Jupyter Notebook打开chapter1.ipynb文件,以配合阅读本章内容。1.1  一个简单的本地Flask应用程序本节中的代码很好简单,你可以从头开始编写代码,也可以使用simple-local-flask-application文件夹中的文件。步:基本的“Hello World!”示例让我们直接从官方的Flask帮助文档创建一个很好简单的Flask脚本(代码清单1-1)。代码清单1-1  简单Flask脚本就是这样子!尽管这并没有太多内容,但它代表了使Flask网站启动和运行所需的大力度优惠要求,实际上这是一个真正的Web应用程序。将脚本保存为本地计算机上的main.py(你可以将其命名为任何名称)。第2步:启动虚拟环境使用虚拟环境来隔离开发工作总是一个好主意(这在构建requirements.txt文件时也很方便—请参阅“前言”中的“创建requirements.txt文件”)。让我们启动一个虚拟环境(代码清单1-2)。代码清单1-2  启动虚拟环境第3步:安装Flask这里假设你可以运行“pip3”来安装库文件,或者使用你通常用于Python 3.x的任何安装工具或查看官方Flask文档,参见代码清单1-3。代码清单1-3  安装Flask第4步:运行Web应用程序打开命令/终端窗口并在Mac或Windows上输入以下命令(代码清单1-4和代码清单1-5)。代码清单1-4  在Mac系统上代码清单1-5  在Windows系统上第5步:在浏览器中查看你应该在命令窗口中看到以下消息,提供要运行的本地HTTP地址。复制它并将其放入浏览器的地址栏中(代码清单1-6)。代码清单1-6  Flask应用程序在本地计算机上成功运行然后打开浏览器并复制/粘贴(或输入)列出的本地地址(图1-2)。图1-2  本地Flask应用程序按预期运行第6步:更快一点的方式这就是由服务器生成网页。通过在main.py脚本的末尾添加以下两行,你就可更轻松地在本地启动Flask应用程序。这仅适用于本地模式,但允许脚本本身运行实例化的Flask应用程序,并允许你跳过设置环境变量的步骤(代码清单1-7)。代码清单1-7  在本地模式下自动启动Flask脚本保存添加了新代码的main.py脚本,现在它是代码清单1-8的样子了。代码清单1-8  完整Flask脚本返回指向修改后脚本的命令/终端窗口,并输入以下简化命令(代码清单1-9)。代码清单1-9  启动本地Flask脚本的简化命令第7步:全部应用程序要停止Web应用程序提供“Hello World!”页面,请在终端窗口中输入ctrl-c。我们在脚本的很后一行设置debug标志为true。这会使脚本将任何Flask错误直接打印到浏览器中。这是快速开发和调试脚本的一个很好特征,但请记住在移至云之前将其变为false。很后,终止你的虚拟环境(代码清单1-10)。代码清单1-10  关闭虚拟环境1.2  在微软Azure上使用无服务器计算Azure云为Web应用程序提供了易于使用的、支持无服务器计算的、接近托管的平台,以及大量可自定义的选项,涉及从存储到数据库、监控和分析(图1-3)。让我们看看如何在微软Azure的无服务器计算Web应用程序上运行基本Flask应用程序。在这里,我们将尽可能简化步骤,因为后续章节中将深入探讨此程序。提示  请访问www.apress.com/9781484238721,单击“Download source code”按钮,请下载章所需文件,然后打开serverless-hosting-on-microsoft-azure文件夹。1.2.1  操作步骤步:获取微软Azure上的账户你需要一个微软Azure账户。在撰写本书时,微软针对所有服务提供了价值200美元为期30天的试用,并可以在接下来的12个月中免费访问这些服务。有关详细信息,请参阅https://azure.microsoft.com/en-us/free/。第2步:下载源文件将本章所需文件下载到本地计算机上,然后切换到名为serverless-hosting-on-microsoft-azure的文件夹。你的本地文件夹结构应如下所示(请注意Flask脚本的名称main.py,这是Azure上的默认设置,见代码清单1-11)。代码清单1-11  Azure上的Web应用程序所需的所有文件支持性文件requirements.txt文件包含Web应用程序所需的Python库名称,并在应用程序部署期间被无服务器计算使用。你可以创建自己的requirements.txt,并将其存放在与Flask脚本main.py相同的文件夹中。在这种情况下,它只包含一个库和一个版本要求(代码清单1-12)。代码清单1-12  我们的Web应用程序需要的所有文件web.3.4.config是Web服务器的配置文件。我们将使用Python 3.4版本并使用默认值。如果你决定进一步探索此云提供商,那么一定要打开它并查看其中的内容。第3步:安装Git对于此项目,你需要在本地计算机上安装Git(可以在www.git-scm.com/downloads上找到二进制安装文件)。如前所述,Git是一个源代码版本控制工具,是一个接近就绪的Git包,支持将代码推送到微软Azure上(参见“前言”中关于Git的简介)。在大多数章节中,我们将创建一个虚拟环境来运行以下步骤,但由于这已经是一个大项目,为简单起见我们跳过它。打开终端/命令行窗口,并将其指向本章的serverless-hosting-on-microsoft-azure文件夹,初始化Git会话(代码清单1-13)。代码清单1-13  初始化Git会话接下来,添加serverless-hosting-on-microsoft-azure文件夹中的所有Web应用程序文件并检查其状态(代码清单1-14和图1-4)。代码清单1-14  将文件夹中的所有文件添加到Git并检查状态图1-4  显示准备提交的Web应用程序文件构建一个本地Git提交并添加一个有意义的注释,以防将来需要重新访问过去的操作(代码清单1-15)。代码清单1-15  将文件提交到Git所需文件都在本地存储库中。有关Git部署到Azure应用服务的更多信息,请访问https://docs.microsoft.com/en-us/azure/app-service/app-service-deploy-local-git。第4步:打开Azure云Shell登录微软Azure仪表板,单击“>_”打开Azure云Shell(图1-5)。图1-5  启动Azure云Shell系统将提示你创建Linux或Power Shell窗口,这里选择Linux,因为这些命令将与你在本地终端窗口中使用的命令类似(图1-6)。图1-6  在Bash(Linux)或PowerShell(Windows)之间进行选择,这里使用熟悉的Linux它还会提示你创建存储库,以便托管应用程序(图1-7)。如果这是你次操作,可能会在下拉列表中看到“Free Trial”选项。无论哪种方式,请使用它并创建存储库。图1-7  需要创建存储库第5步:创建部署用户你现在应该在Azure云Shell中了。该用户将拥有使用FTP和本地Git的适当权限。这里,将用户名设置为“flaskuser11”,密码设置为“flask123”。创建你自己的用户名并记住它,因为将来会用到它(代码清单1-16)。代码清单1-16  创建用户该命令和大多数后续命令的输出都将与下面的屏幕截图类似。仔细查看任何错误或问题并进行针对性修复(代码清单1-17)。代码清单1-17  Azure的“webapp”命令的响应格式你的输出JSON应该是空的。如果你看到“conflict”(冲突),说明你所输入的“user-name”与已有用户名冲突了;如果你看到“bad request”(错误的请求),说明你的密码不符合规范(它很少需包含8个字符,由多个字符、数字和符号组成)。第6步:创建资源组这一步需要在靠近你所在位置的某个区域中创建一个资源组—在这里的例子中为“West US”(有关区域,请参阅https://azure.microsoft.com/en-us/regions/或使用命令“az appservice list-location --sku FREE”—参见代码清单1-18)。代码清单1-18  创建资源组和响应输入:输出:第7步:创建Azure服务计划创建Azure服务计划,并将其名称设置为“myAppServicePlan”(你可以任意设置,见代码清单1-19)。代码清单1-19  创建服务计划和成功响应输入:截取的相关输出:第8步:创建Web应用程序接下来,创建一个Web应用程序并设置其名称(它必须是专享的)。这里通过name参数将应用程序名称设置为AmunateguiIntroWebApp,并通过deployment参数设置代码部署方式为通过本地Git部署代码(代码清单1-20)。代码清单1-20  创建Web应用程序(将其替换为你的应用程序名称)查看“az webapp create”命令返回的长字符串,复制“Local git is configured with url of…”后的链接,或者直接使用“deploymentLocalGitUrl”,因为两者是相同的,你可以任选其一。将Flask文件推送到Azure时,将需要这个链接(代码清单1-21)。代码清单1-21  复制你的Git URL(随后需要)提取Azure项目的本地Git配置URL(代码清单1-22和代码清单1-23)。代码清单1-22  我的案例中提取的Git URL代码清单1-23  你所获得的Git URL应该类似于下面这个例子检查你的网站如果一切正常,现在你应该可以访问网站了。使用你在az webapp create命令中所设置的应用程序名称来替换<>部分,并将其复制到浏览器中(代码清单1-24和图1-8)。代码清单1-24  检查你的Web网站图1-8  确认你的网站已创建并正在运行如果你看到的不是这样子,就需要再次检查每个步骤,确保你没有错过任何一个错误。第9步:发布Web应用程序现在我们回到本地计算机上的本地终端/命令窗口,确认它指向正确的目录,以及Git会话已经被初始化了。将我们之前保存的URL与Git存储库的位置附加到“add azure”命令(代码清单1-25)。代码清单1-25  很终代码推送到Azure它可能会提示你输入密码,使用你在“az webapp development user”步骤中所创建的密码(这里的例子中是“flask123”,见代码清单1-26)。代码清单1-26  很终代码推送到Azure0步:在浏览器中查看现在是很后一步了!返回浏览器窗口并点击刷新(或打开新的浏览器窗口并输入http://<>.azurewebsites.net),你将看到“Hello World!”(图1-9)。图1-9  Flask应用程序在Amazon Azure上成功运行如果没有看到“Hello World!”,你可以直接在命令窗口中查看日志—只需更换网站名称(这里的例子中为amunateguiintroapp)和组(这里的例子中为myResourceGroup),参见代码清单1-27。代码清单1-27  很终代码推送到Azure1步:不要忘记删除你的Web应用程序!如果你不再使用Web应用程序,请不要忘记删除它。如果不这么做,计费将一直持续。删除所有内容的很简单方法是登录Azure仪表板并在搜索栏中输入“All resources”,然后删除你创建的所有内容(图1-10)。图1-10  删除你的应用以便不产生额外费用1.2.2  结论和附加信息微软Azure是一个功能强大的云提供商,提供丰富多彩的云产品。它可以运行简单的Flask应用程序并快速部署。如果需要加载更复杂的库,需要Python wheels的支持(https://pythonwheels.com/)。有关其他信息,请参阅微软Azure文档上标题为“Create a Python web app in Azure”的很好帖子,本节参考了此文章:https://docs.microsoft.com/en-us/azure/app-service/app-service- web-get-started-python。1.3  在谷歌云上使用无服务器计算谷歌云是一个用于构建、管理和部署Web应用程序的强大平台。它可以与TensorFlow及其分布式图机制无缝集成(图1-11)。图1-11  谷歌云我们看看如何在谷歌云的无服务器计算App Engine上运行基本Flask应用程序。这里尽可能简化步骤,因为后续章节中将进行深入探讨。提示  请访问www.apress.com/9781484238721,单击“Download source code”按钮,下载章所需文件,然后打开serverless-hosting-on-google-cloud文件夹。1.3.1  操作步骤步:获取谷歌云账户在撰写本书时,Google正提供一个为期12个月价值300美元的免费试用配额,以帮助你入门。有关详细信息,请参阅https://console.cloud.google.com/start。你可以选择两种类型的App Engine:标准环境(Standard Environment),它简单但定制性不强;灵活环境(Flexible Environment),可以处理或多或少的任意内容。在本节我们将使用更简单的引擎,即标准环境。第2步:下载源文件将本章的文件下载到本地计算机上,然后切换到名为serverless-hosting-on-google-cloud的文件夹(代码清单1-28)。代码清单1-28  我们在谷歌云上的Web应用所需要的所有文件app.yaml声明Flask Python应用程序(在本例中为main)与static和templates在相同的文件夹下(代码清单1-29)。代码清单1-29  查看app.yamlappengine_config.py指向lib文件夹,以在部署期间保存其他Python库(代码清单1-30)。代码清单1-30  查看appengine_config.pyrequirements.txt文件包含将被安装和添加到lib文件夹的Python库的名称和版本(代码清单1-31)。代码清单1-31  requirements.txt文件的内容main.py是控制Flask Python应用的“大脑”,它包含每个HTML页面的所有Python代码和指令(代码清单1-32)。代码清单1-32   main.py的内容第3步:打开谷歌云Shell登录你的谷歌云实例,然后选择App Engine所在的项目(如果还没有,请参阅创建和管理项目文档:https://cloud.google.com/resource-manager/docs/creating-managing-projects)。单击右上角的按钮来启动云Shell命令行工具,这将在GCP仪表板的下半部分打开一个熟悉的命令行窗口(图1-12)。图1-12  启动谷歌云Shell在GCP仪表板终端中,创建一个名为GoogleCloudFlaskIntro的新文件夹(代码清单1-33)。代码清单1-33  在GCP中创建目录第4步:将Flask文件上传到谷歌云上传有很多方法,可以逐个上传文件,或克隆GitHub存储库,或将它们压缩到一个存档文件中再一次性上传所有文件。我们选择很后一种方法。将app.yaml、appengine_config.py、main.py和requirements.txt这四个文件压缩到一个存档文件中(图1-13)。图1-13  压缩Web应用程序文件以上传到谷歌云使用Upload file选项上传它(可在Shell窗口的右上角找到三个垂直点,图1-14)。图1-14  通过谷歌云Shell上传文件它会将文件(这里的例子中为Archive.zip)上传到根目录,因此你需要将其移动到GoogleCloudFlaskIntro文件夹并解压缩(代码清单1-34)。代码清单1-34  移动和解压缩Web应用程序文件运行pip install -t lib命令,以安装在requirements. txt文件中所定义的所有库(代码清单1-35)。这将创建必要的lib文件夹,其中包含任何所需的Python库。(如果不使用sudo,可能会收到一些提示,sudo会给你root权限,但请不要滥用它!)代码清单1-35  安装必要的Python库到lib目录此时,若运行“ls”命令,则云中的文件夹目录应如下所示(代码清单1-36)。代码清单1-36  检查GCP上GoogleCloudFlaskIntro文件夹的内容输入:输出:第5步:将Web应用程序部署到谷歌云上现在我们来部署Hello World站点。在仪表板Shell窗口中的GoogleCloudFlaskIntro文件夹下,运行gcloud app deploy命令。它会要求你进行确认,我们选择“Y”(代码清单1-37)。代码清单1-37  部署Web应用程序输入:截取的相关输出:如果一切顺利,你可以方便地运行gcloud app browse命令来获取网站的完整URL(代码清单1-38)。代码清单1-38  获取Web应用程序的URL地址输入:输出:点击谷歌云Shell中的链接或将其粘贴到浏览器中(图1-15)。图1-15  Flask应用程序在谷歌云上成功运行第6步:不要忘记删除你的Web应用程序!如果你不再使用Web应用程序,请不要忘记删除它。如果不这样做,费用将持续增加。如果它是你专享的应用程序(你需要有默认应用程序),则不能仅仅删除App Engine应用程序,而是将流量重定向到空白应用程序。在谷歌云Shell中,使用“vi”命令启动Linux文本编辑器(代码清单1-39)。代码清单1-39  编辑app.yaml文件这将打开一个小型命令行编辑器,然后按下“i”键插入或编辑文件(代码清单1-40和代码清单1-41)。代码清单1-40  替换main.app代码清单1-41  替换为“blank.app”你需要将app.yaml文件的url句柄指向blank.app。因为blank.app是不存在的,所以应用不会提供任何服务,而且计费将被停止(代码清单1-42)。代码清单1-42  将Yaml文件指向Blank脚本按下Esc键退出插入模式,输入“wq”进行写入并退出。然后重新部署Web应用程序(代码清单1-43)。代码清单1-43  重新部署Blank Web应用部署操作在App Engine上生效后,URL应该显示错误而不再是“Hello World”了(图1-16)。图1-16  此错误确认你的站点已关闭1.3.2  结论和附加信息GCP提供了许多特征,并与其他Google产品(如https://cloud.google.com/apis/上的云API)和TensorFlow紧密集成。如果你需要使用更强大的Python库,则可以从标准App Engine切换到Flexible引擎。有关其他信息,请参阅谷歌云文档上标题为“Quickstart for Python App Engine Standard Environment”的文章:https://cloud.google.com/appengine/docs/standard/python/quickstart。顺便说一句,如果你的谷歌云App Engine出现任何问题,可以使用以下命令查看日志(代码清单1-44)。代码清单1-44  查看部署日志章无服务器计算介绍本章中,我们将创建一个很好简单的Flask Web应用程序(图1-1)。在后面章节中,当我们在亚马逊AWS、谷歌云、微软Azure和PythonAnywhere上探索基于公有云的Web服务时,会不断地用到这个应用程序。Flask Web1-1AWSAzurePythonAnywhereWeb图1-1  Flask在开始云端之旅之前,很好先在本地计算机上使用本地版本的网站。提示  请访问www.apress.com/9781484238721,单击“Download source code”按钮,跳转至GitHub网站,下载章所需文件。推荐使用Jupyter Notebook打开chapter1.ipynb文件,以配合阅读本章内容。1.1  一个简单的本地Flask应用程序本节中的代码很好简单,你可以从头开始编写代码,也可以使用simple-local-flask-application文件夹中的文件。步:基本的“Hello World!”示例让我们直接从官方的Flask帮助文档创建一个很好简单的Flask脚本(代码清单1-1)。代码清单1-1  简单Flask脚本就是这样子!尽管这并没有太多内容,但它代表了使Flask网站启动和运行所需的大力度优惠要求,实际上这是一个真正的Web应用程序。将脚本保存为本地计算机上的main.py(你可以将其命名为任何名称)。第2步:启动虚拟环境使用虚拟环境来隔离开发工作总是一个好主意(这在构建requirements.txt文件时也很方便—请参阅“前言”中的“创建requirements.txt文件”)。让我们启动一个虚拟环境(代码清单1-2)。代码清单1-2  启动虚拟环境第3步:安装Flask这里假设你可以运行“pip3”来安装库文件,或者使用你通常用于Python 3.x的任何安装工具或查看官方Flask文档,参见代码清单1-3。代码清单1-3  安装Flask第4步:运行Web应用程序打开命令/终端窗口并在Mac或Windows上输入以下命令(代码清单1-4和代码清单1-5)。代码清单1-4  在Mac系统上代码清单1-5  在Windows系统上第5步:在浏览器中查看你应该在命令窗口中看到以下消息,提供要运行的本地HTTP地址。复制它并将其放入浏览器的地址栏中(代码清单1-6)。代码清单1-6  Flask应用程序在本地计算机上成功运行然后打开浏览器并复制/粘贴(或输入)列出的本地地址(图1-2)。图1-2  本地Flask应用程序按预期运行第6步:更快一点的方式这就是由服务器生成网页。通过在main.py脚本的末尾添加以下两行,你就可更轻松地在本地启动Flask应用程序。这仅适用于本地模式,但允许脚本本身运行实例化的Flask应用程序,并允许你跳过设置环境变量的步骤(代码清单1-7)。代码清单1-7  在本地模式下自动启动Flask脚本保存添加了新代码的main.py脚本,现在它是代码清单1-8的样子了。代码清单1-8  完整Flask脚本返回指向修改后脚本的命令/终端窗口,并输入以下简化命令(代码清单1-9)。代码清单1-9  启动本地Flask脚本的简化命令第7步:全部应用程序要停止Web应用程序提供“Hello World!”页面,请在终端窗口中输入ctrl-c。我们在脚本的很后一行设置debug标志为true。这会使脚本将任何Flask错误直接打印到浏览器中。这是快速开发和调试脚本的一个很好特征,但请记住在移至云之前将其变为false。很后,终止你的虚拟环境(代码清单1-10)。代码清单1-10  关闭虚拟环境1.2  在微软Azure上使用无服务器计算Azure云为Web应用程序提供了易于使用的、支持无服务器计算的、接近托管的平台,以及大量可自定义的选项,涉及从存储到数据库、监控和分析(图1-3)。让我们看看如何在微软Azure的无服务器计算Web应用程序上运行基本Flask应用程序。在这里,我们将尽可能简化步骤,因为后续章节中将深入探讨此程序。提示  请访问www.apress.com/9781484238721,单击“Download source code”按钮,请下载章所需文件,然后打开serverless-hosting-on-microsoft-azure文件夹。1.2.1  操作步骤步:获取微软Azure上的账户你需要一个微软Azure账户。在撰写本书时,微软针对所有服务提供了价值200美元为期30天的试用,并可以在接下来的12个月中免费访问这些服务。有关详细信息,请参阅https://azure.microsoft.com/en-us/free/。第2步:下载源文件将本章所需文件下载到本地计算机上,然后切换到名为serverless-hosting-on-microsoft-azure的文件夹。你的本地文件夹结构应如下所示(请注意Flask脚本的名称main.py,这是Azure上的默认设置,见代码清单1-11)。代码清单1-11  Azure上的Web应用程序所需的所有文件支持性文件requirements.txt文件包含Web应用程序所需的Python库名称,并在应用程序部署期间被无服务器计算使用。你可以创建自己的requirements.txt,并将其存放在与Flask脚本main.py相同的文件夹中。在这种情况下,它只包含一个库和一个版本要求(代码清单1-12)。代码清单1-12  我们的Web应用程序需要的所有文件web.3.4.config是Web服务器的配置文件。我们将使用Python 3.4版本并使用默认值。如果你决定进一步探索此云提供商,那么一定要打开它并查看其中的内容。第3步:安装Git对于此项目,你需要在本地计算机上安装Git(可以在www.git-scm.com/downloads上找到二进制安装文件)。如前所述,Git是一个源代码版本控制工具,是一个接近就绪的Git包,支持将代码推送到微软Azure上(参见“前言”中关于Git的简介)。在大多数章节中,我们将创建一个虚拟环境来运行以下步骤,但由于这已经是一个大项目,为简单起见我们跳过它。打开终端/命令行窗口,并将其指向本章的serverless-hosting-on-microsoft-azure文件夹,初始化Git会话(代码清单1-13)。代码清单1-13  初始化Git会话接下来,添加serverless-hosting-on-microsoft-azure文件夹中的所有Web应用程序文件并检查其状态(代码清单1-14和图1-4)。代码清单1-14  将文件夹中的所有文件添加到Git并检查状态图1-4  显示准备提交的Web应用程序文件构建一个本地Git提交并添加一个有意义的注释,以防将来需要重新访问过去的操作(代码清单1-15)。代码清单1-15  将文件提交到Git所需文件都在本地存储库中。有关Git部署到Azure应用服务的更多信息,请访问https://docs.microsoft.com/en-us/azure/app-service/app-service-deploy-local-git。第4步:打开Azure云Shell登录微软Azure仪表板,单击“>_”打开Azure云Shell(图1-5)。图1-5  启动Azure云Shell系统将提示你创建Linux或Power Shell窗口,这里选择Linux,因为这些命令将与你在本地终端窗口中使用的命令类似(图1-6)。图1-6  在Bash(Linux)或PowerShell(Windows)之间进行选择,这里使用熟悉的Linux它还会提示你创建存储库,以便托管应用程序(图1-7)。如果这是你次操作,可能会在下拉列表中看到“Free Trial”选项。无论哪种方式,请使用它并创建存储库。图1-7  需要创建存储库第5步:创建部署用户你现在应该在Azure云Shell中了。该用户将拥有使用FTP和本地Git的适当权限。这里,将用户名设置为“flaskuser11”,密码设置为“flask123”。创建你自己的用户名并记住它,因为将来会用到它(代码清单1-16)。代码清单1-16  创建用户该命令和大多数后续命令的输出都将与下面的屏幕截图类似。仔细查看任何错误或问题并进行针对性修复(代码清单1-17)。代码清单1-17  Azure的“webapp”命令的响应格式你的输出JSON应该是空的。如果你看到“conflict”(冲突),说明你所输入的“user-name”与已有用户名冲突了;如果你看到“bad request”(错误的请求),说明你的密码不符合规范(它很少需包含8个字符,由多个字符、数字和符号组成)。第6步:创建资源组这一步需要在靠近你所在位置的某个区域中创建一个资源组—在这里的例子中为“West US”(有关区域,请参阅https://azure.microsoft.com/en-us/regions/或使用命令“az appservice list-location --sku FREE”—参见代码清单1-18)。代码清单1-18  创建资源组和响应输入:输出:第7步:创建Azure服务计划创建Azure服务计划,并将其名称设置为“myAppServicePlan”(你可以任意设置,见代码清单1-19)。代码清单1-19  创建服务计划和成功响应输入:截取的相关输出:第8步:创建Web应用程序接下来,创建一个Web应用程序并设置其名称(它必须是专享的)。这里通过name参数将应用程序名称设置为AmunateguiIntroWebApp,并通过deployment参数设置代码部署方式为通过本地Git部署代码(代码清单1-20)。代码清单1-20  创建Web应用程序(将其替换为你的应用程序名称)查看“az webapp create”命令返回的长字符串,复制“Local git is configured with url of…”后的链接,或者直接使用“deploymentLocalGitUrl”,因为两者是相同的,你可以任选其一。将Flask文件推送到Azure时,将需要这个链接(代码清单1-21)。代码清单1-21  复制你的Git URL(随后需要)提取Azure项目的本地Git配置URL(代码清单1-22和代码清单1-23)。代码清单1-22  我的案例中提取的Git URL代码清单1-23  你所获得的Git URL应该类似于下面这个例子检查你的网站如果一切正常,现在你应该可以访问网站了。使用你在az webapp create命令中所设置的应用程序名称来替换<>部分,并将其复制到浏览器中(代码清单1-24和图1-8)。代码清单1-24  检查你的Web网站图1-8  确认你的网站已创建并正在运行如果你看到的不是这样子,就需要再次检查每个步骤,确保你没有错过任何一个错误。第9步:发布Web应用程序现在我们回到本地计算机上的本地终端/命令窗口,确认它指向正确的目录,以及Git会话已经被初始化了。将我们之前保存的URL与Git存储库的位置附加到“add azure”命令(代码清单1-25)。代码清单1-25  很终代码推送到Azure它可能会提示你输入密码,使用你在“az webapp development user”步骤中所创建的密码(这里的例子中是“flask123”,见代码清单1-26)。代码清单1-26  很终代码推送到Azure0步:在浏览器中查看现在是很后一步了!返回浏览器窗口并点击刷新(或打开新的浏览器窗口并输入http://<>.azurewebsites.net),你将看到“Hello World!”(图1-9)。图1-9  Flask应用程序在Amazon Azure上成功运行如果没有看到“Hello World!”,你可以直接在命令窗口中查看日志—只需更换网站名称(这里的例子中为amunateguiintroapp)和组(这里的例子中为myResourceGroup),参见代码清单1-27。代码清单1-27  很终代码推送到Azure1步:不要忘记删除你的Web应用程序!如果你不再使用Web应用程序,请不要忘记删除它。如果不这么做,计费将一直持续。删除所有内容的很简单方法是登录Azure仪表板并在搜索栏中输入“All resources”,然后删除你创建的所有内容(图1-10)。图1-10  删除你的应用以便不产生额外费用1.2.2  结论和附加信息微软Azure是一个功能强大的云提供商,提供丰富多彩的云产品。它可以运行简单的Flask应用程序并快速部署。如果需要加载更复杂的库,需要Python wheels的支持(https://pythonwheels.com/)。有关其他信息,请参阅微软Azure文档上标题为“Create a Python web app in Azure”的很好帖子,本节参考了此文章:https://docs.microsoft.com/en-us/azure/app-service/app-service- web-get-started-python。1.3  在谷歌云上使用无服务器计算谷歌云是一个用于构建、管理和部署Web应用程序的强大平台。它可以与TensorFlow及其分布式图机制无缝集成(图1-11)。图1-11  谷歌云我们看看如何在谷歌云的无服务器计算App Engine上运行基本Flask应用程序。这里尽可能简化步骤,因为后续章节中将进行深入探讨。提示  请访问www.apress.com/9781484238721,单击“Download source code”按钮,下载章所需文件,然后打开serverless-hosting-on-google-cloud文件夹。1.3.1  操作步骤步:获取谷歌云账户在撰写本书时,Google正提供一个为期12个月价值300美元的免费试用配额,以帮助你入门。有关详细信息,请参阅https://console.cloud.google.com/start。你可以选择两种类型的App Engine:标准环境(Standard Environment),它简单但定制性不强;灵活环境(Flexible Environment),可以处理或多或少的任意内容。在本节我们将使用更简单的引擎,即标准环境。第2步:下载源文件将本章的文件下载到本地计算机上,然后切换到名为serverless-hosting-on-google-cloud的文件夹(代码清单1-28)。代码清单1-28  我们在谷歌云上的Web应用所需要的所有文件app.yaml声明Flask Python应用程序(在本例中为main)与static和templates在相同的文件夹下(代码清单1-29)。代码清单1-29  查看app.yamlappengine_config.py指向lib文件夹,以在部署期间保存其他Python库(代码清单1-30)。代码清单1-30  查看appengine_config.pyrequirements.txt文件包含将被安装和添加到lib文件夹的Python库的名称和版本(代码清单1-31)。代码清单1-31  requirements.txt文件的内容main.py是控制Flask Python应用的“大脑”,它包含每个HTML页面的所有Python代码和指令(代码清单1-32)。代码清单1-32   main.py的内容第3步:打开谷歌云Shell登录你的谷歌云实例,然后选择App Engine所在的项目(如果还没有,请参阅创建和管理项目文档:https://cloud.google.com/resource-manager/docs/creating-managing-projects)。单击右上角的按钮来启动云Shell命令行工具,这将在GCP仪表板的下半部分打开一个熟悉的命令行窗口(图1-12)。图1-12  启动谷歌云Shell在GCP仪表板终端中,创建一个名为GoogleCloudFlaskIntro的新文件夹(代码清单1-33)。代码清单1-33  在GCP中创建目录第4步:将Flask文件上传到谷歌云上传有很多方法,可以逐个上传文件,或克隆GitHub存储库,或将它们压缩到一个存档文件中再一次性上传所有文件。我们选择很后一种方法。将app.yaml、appengine_config.py、main.py和requirements.txt这四个文件压缩到一个存档文件中(图1-13)。图1-13  压缩Web应用程序文件以上传到谷歌云使用Upload file选项上传它(可在Shell窗口的右上角找到三个垂直点,图1-14)。图1-14  通过谷歌云Shell上传文件它会将文件(这里的例子中为Archive.zip)上传到根目录,因此你需要将其移动到GoogleCloudFlaskIntro文件夹并解压缩(代码清单1-34)。代码清单1-34  移动和解压缩Web应用程序文件运行pip install -t lib命令,以安装在requirements. txt文件中所定义的所有库(代码清单1-35)。这将创建必要的lib文件夹,其中包含任何所需的Python库。(如果不使用sudo,可能会收到一些提示,sudo会给你root权限,但请不要滥用它!)代码清单1-35  安装必要的Python库到lib目录此时,若运行“ls”命令,则云中的文件夹目录应如下所示(代码清单1-36)。代码清单1-36  检查GCP上GoogleCloudFlaskIntro文件夹的内容输入:输出:第5步:将Web应用程序部署到谷歌云上现在我们来部署Hello World站点。在仪表板Shell窗口中的GoogleCloudFlaskIntro文件夹下,运行gcloud app deploy命令。它会要求你进行确认,我们选择“Y”(代码清单1-37)。代码清单1-37  部署Web应用程序输入:截取的相关输出:如果一切顺利,你可以方便地运行gcloud app browse命令来获取网站的完整URL(代码清单1-38)。代码清单1-38  获取Web应用程序的URL地址输入:输出:点击谷歌云Shell中的链接或将其粘贴到浏览器中(图1-15)。图1-15  Flask应用程序在谷歌云上成功运行第6步:不要忘记删除你的Web应用程序!如果你不再使用Web应用程序,请不要忘记删除它。如果不这样做,费用将持续增加。如果它是你专享的应用程序(你需要有默认应用程序),则不能仅仅删除App Engine应用程序,而是将流量重定向到空白应用程序。在谷歌云Shell中,使用“vi”命令启动Linux文本编辑器(代码清单1-39)。代码清单1-39  编辑app.yaml文件这将打开一个小型命令行编辑器,然后按下“i”键插入或编辑文件(代码清单1-40和代码清单1-41)。代码清单1-40  替换main.app代码清单1-41  替换为“blank.app”你需要将app.yaml文件的url句柄指向blank.app。因为blank.app是不存在的,所以应用不会提供任何服务,而且计费将被停止(代码清单1-42)。代码清单1-42  将Yaml文件指向Blank脚本按下Esc键退出插入模式,输入“wq”进行写入并退出。然后重新部署Web应用程序(代码清单1-43)。代码清单1-43  重新部署Blank Web应用部署操作在App Engine上生效后,URL应该显示错误而不再是“Hello World”了(图1-16)。图1-16  此错误确认你的站点已关闭1.3.2  结论和附加信息GCP提供了许多特征,并与其他Google产品(如https://cloud.google.com/apis/上的云API)和TensorFlow紧密集成。如果你需要使用更强大的Python库,则可以从标准App Engine切换到Flexible引擎。有关其他信息,请参阅谷歌云文档上标题为“Quickstart for Python App Engine Standard Environment”的文章:https://cloud.google.com/appengine/docs/standard/python/quickstart。顺便说一句,如果你的谷歌云App Engine出现任何问题,可以使用以下命令查看日志(代码清单1-44)。代码清单1-44  查看部署日志

前言ASCIIApple IIGitHub是可下载的了,但我们还是在每一章的开头放了一个最终产品的屏幕截图,给你解决问题的动力并使你感受到完成后的兴奋之情。进入门槛降低,市场变化加快本书将指导你完成各种各样的项目,这些项目探索不同的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),你会发现自己已经了解了一些基础知识;即使你还不了解,你的学习曲线也会大大缩短。我们专注于使用简单的工具和简单的技术,去可靠、快速地将机器学习创意付诸实践。工具和方法在每一章都会被重新提及,所以如果你对某些东西一开始还不太清楚,也不用担心,只要继续下去,事情就会越来越清晰。我们还在每章中轮流

商品参数
基本信息
出版社 机械工业出版社
ISBN 9787111627036
条码 9787111627036
编者 [美]曼纽尔·阿米纳特吉(Manuel Amunategui)迈赫迪·洛佩伊
译者
出版年月 2018-06-01 00:00:00.0
开本 16开
装帧 平装
页数 343
字数 null千字
版次 1
印次 1
纸张
商品评论

暂无商品评论信息 [发表商品评论]

商品咨询

暂无商品咨询信息 [发表商品咨询]