機器學習即服務:將 Python 機器學習創意快速轉變為雲端 Web 應用程序 (Monetizing Machine Learning: Quickly Turn Python ML Ideas into Web Applications on the Serverless Cloud)
內容描述
本書由淺入深地介紹了一系列常見的Python數據科學問題。
書中介紹的實踐項目簡單明瞭,可作為模板快速啟動其他類似項目。
通過本書,你將學習如何構建一個Web應用程序以進行數值或分類預測,如何理解文本分析,
如何創建強大的交互界面,如何對數據訪問進行安全控制,
以及如何利用Web插件實現信用卡付款和捐贈。
每章都遵循三個步驟:以正確的方式建模,設計和開發本地Web應用程序,
部署到流行且可靠的無服務器計算雲平臺(亞馬遜、微軟、谷歌和PythonAnywhere)上。
本書各章之間是獨立的,你可以根據需求跳轉至特定主題。
你還可以訪問Jupyter Notebook和代碼存儲庫GitHub,以獲取本書代碼。
通過閱讀本書,你將能夠:
使用簡單的技術擴展你的機器學習模型,以創建引人註目的交互式Web儀表板。
利用Flask Web框架快速地構建Python模型和創意的原型。
創建由回歸系數、邏輯回歸、梯度提升、貝葉斯分類等驅動的動態內容。
通過將訓練好的模型導入Web應用程序來利用TensorFlow的強大功能。
創建內容豐富的Web界面,使用JavaScript和Ajax處理復雜的實時用戶輸入,以生成交互式和定製的內容。
在界面中使用付費牆以提供基於訂閱的訪問。
訪問API數據,如谷歌地圖、OpenWeather等。
使用各種方法來理解文本數據並定製智能系統。
構建一個直觀且實用的推薦網站,為用戶增值,並吸引他們成為回頭客。
利用Google Analytics的免費增值服務來分析結果。
通過頂級公有雲供應商將你的創意呈現給客戶。
目錄大綱
譯者序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
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
作者介紹
曼紐爾·阿米納特吉(Manuel Amunategui)
曼紐爾·阿米納特吉(Manuel Amunategui) 是SpringML(谷歌云和Salesforce的優選合作夥伴)的數據科學副總裁,
擁有預測分析和國際管理碩士學位。
在過去20年中,他在科技行業內實施了數百種端到端客戶解決方案。
在機器學習、醫療健康建模等方面有著豐富的諮詢經驗。
他在華爾街金融行業工作了6年,在微軟工作了4年,
這些經歷使他意識到應用數據科學教育和培訓材料的缺乏。
為了幫助緩解這一問題,他一直在通過文字博客、視頻博客和教育材料傳播應用數據科學知識。
邁赫迪·洛佩伊(Mehdi Roopaei)
邁赫迪·洛佩伊(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多篇備受同行好評的技術論文,在多個會議上擔任項目委員會成員,並擔任多個期刊的技術審稿人。