我的第三本譯作《機器學習即服務》上架啦

轉載自Sammy Liu博客

 

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(平臺即服務),但作者的主要意圖是建議大家充分利用公有云的資源優勢,儘量釋放諸如彈性伸縮、負載均衡、持續部署等的運維工作壓力,將更多的精力投入到機器學習的目標上來,這一點希望大家能夠理解。 

本書翻譯的完成是團隊協作的成果,翻譯過程中團隊針對每個細節進行在線會議的討論和研究,精益求精,希望能儘量爲讀者呈現出原著的核心和靈魂。這裏,感謝世民兄、金孝兄和力哥的支持和鼓勵,他們的態度和專業性持續引領着整個團隊。感謝編輯們的悉心指導,他們對本書做了大量的校對和編輯工作,保證了本書的順利出版。 

最後,感謝我的家人,是他們在背後給予我默默的支持,讓我可以專心地投入到本書的翻譯工作中。由於本人水平有限,書中難免會出現錯誤或者不妥之處,歡迎批評指正,謝謝。

5 目錄

譯者序1

譯者序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

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樣章 即可獲得前三章試讀。 

7 購買

噹噹現貨:http://product.dangdang.com/27884991.html

京東現貨:https://item.jd.com/12628706.html

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章