《Python機器學習項目實戰(zhàn)》引領大家在構建實際項目的過程中,掌握關鍵的機器學習概念!使用機器學習,我們可完成客戶行為分析、價格趨勢預測、風險評估等任務。要想掌握機器學習,需要有優(yōu)質的范例、清晰的講解和大量的練習。本書完全滿足這三點! 本書展示了現(xiàn)實、實用的機器學習場景,并全面、清晰地介紹了機器學習的關鍵概念。在學習本書的過程中,讀者將會完成一些引人入勝的項目,比如使用線性回歸預測汽車價格,部署客戶流失預測服務等。讀者將**算法,學習在無服務器系統(tǒng)上部署機器學習應用,以及使用Kubernetes和Kubeflow服務模型等重要技術。大家埋頭苦學,親自動手,享受掌握機器學習技能的樂趣! 主要內容 ●收集和清理訓練模型的數(shù)據(jù) ●使用流行的Python工具,包括NumPy、Scikit-Learn和TensorFlow ●將機器學習模型部署到生產(chǎn)環(huán)境中 閱讀門檻 讀者需要有Python編程技能,不需要具備機器學習知識。
隨著大數(shù)據(jù)時代的到來以及計算機算力的提升,機器學習進入一個新時代。以最近火熱的ChatGPT為例,它是美國人工智能研究實驗室OpenAI開發(fā)的一種全新聊天機器 人模型,它能夠通過學習和理解人類的語言來進行對話,還能根據(jù)聊天的上下文進行互動并協(xié)助人類完成一系列任務。它的發(fā)展可謂是機器學習的巨大飛躍,甚至可以視為人類邁向真人工智能的巨大跨越。隨著機器學習技術的發(fā)展以及在各行各業(yè)的應用,可以說機器學習現(xiàn)在與我們每個人都息息相關。
作為一名大學教師,我的主要研究領域為人工智能和深度學習,目前為研究生講授《模式識別》等課程;同時也參與了多個與機器學習相關的科研項目,對機器學習的工程應用有豐富的經(jīng)驗。當看到《Python機器學習項目實戰(zhàn)》時,我感覺非常有必要將其翻譯出來并讓更多的人學習到其中的內容。本書是一本針對機器學習與聚焦實踐經(jīng)驗的實用指南,適用于對數(shù)據(jù)科學感興趣并需要快速獲得有用和可重用經(jīng)驗(針對數(shù)據(jù)和數(shù)據(jù)問題)的相關開發(fā)人員。建議大家在學習本書時,除了逐字逐句地認真閱讀外,還必須要付諸實踐。衷心希望讀者能夠通過本書成為機器學習的高手和大師。
本書讀者對象
本書是為能夠編程并能快速掌握Python基本知識的人編寫的。讀者不需要有任何機器學習的經(jīng)驗。理想讀者是愿意從事機器學習工作的軟件工程師。然而,需要為學習和業(yè)余項目編寫代碼的積極向上的大學生閱讀本書后同樣會受益匪淺。
此外,那些已經(jīng)在使用機器學習但想了解更多的人也會發(fā)現(xiàn)本書很有幫助。許多已經(jīng)擔任數(shù)據(jù)科學家和數(shù)據(jù)分析師的人都表示,本書對他們很有幫助,特別是關于部署的章節(jié)。
本書組織結構
本書一共包含9章內容,共研究了4個不同的項目。
● 第1章討論傳統(tǒng)軟件工程與機器學習的區(qū)別;介紹組織機器學習項目的過程,涵蓋從最初了解業(yè)務需求到最后部署模型的步驟;還詳細地介紹過程中的建模步驟并討論應該如何評估模型和選擇最好的模型。為說明該章中的概念,運用了垃圾郵件檢測案例。
● 第2章給出第一個項目預測一輛汽車的價格。我們將學習如何對其使用線性回歸。首先準備一個數(shù)據(jù)集并做一些數(shù)據(jù)清理。接下來,進行探索性數(shù)據(jù)分析,以更好地理解數(shù)據(jù)。然后用NumPy建立一個線性回歸模型,以了解機器學習模型內部運轉機制。最后討論正則化和模型質量評估等話題。
● 第3章解決客戶流失預測問題。該章假設我們在一家電信公司工作,想要確定哪些客戶可能很快停止使用我們的服務。這是一個用邏輯回歸來解決的分類問題。我們從特征重要性分析入手,了解哪些因素對這個問題最為重要。然后討論作為處理分類變量(性別、合同類型等因素)方式的獨熱編碼。最后,用Scikit-Learn訓練一個邏輯回歸模型,以了解哪些客戶即將流失。
● 第4章采用第3章建立的模型并對其性能進行評估。該章涵蓋最重要的分類評估指標:準確度、查準率和查全率。我們討論了混淆矩陣,然后具體講述ROC分析和AUC計算。該章最后討論K折交叉驗證。
● 第5章將客戶流失預測模型作為一個Web服務進行部署。這是整個過程中的一個重要步驟,因為如果不使模型變得可用,那么它對任何人都沒有用處。首先介紹用于創(chuàng)建Web服務的Python框架Flask。然后用Pipenv和Docker進行依賴項管理并在AWS上完成服務的部署。
● 第6章介紹一個關于風險評分的項目。我們想了解銀行的客戶是否會有還貸問題。為此,我們學習決策樹的工作原理并用Scikit-learn訓練一個簡單的模型。然后,轉向更復雜的基于樹的模型,如隨機森林和梯度提升。
● 第7章構建一個圖像分類項目。我們將訓練一個模型,將服裝圖像分為T恤、衣服、褲子等10個類別。我們使用TensorFlow和Keras來訓練模型,此外介紹遷移學習的內容,因為它能夠用相對較小的數(shù)據(jù)集訓練模型。
● 第8章采用第7章中訓練的服裝分類模型,并且用TensorFlow Lite和AWS Lambda進行部署。
● 第9章部署服裝分類模型,但在第一部分使用Kubernetes和TensorFlow Serving,在第二部分使用Kubeflow和Kubeflow Serving。
為幫助你更好地閱讀本書以及了解Python和它的庫,我們提供了5個附錄。
● 附錄A介紹如何設置針對本書的環(huán)境,展示如何安裝Anaconda和Python、如何運行Jupyter Notebook、如何安裝Docker以及如何創(chuàng)建AWS賬戶。
● 附錄B介紹Python的基礎知識。
● 附錄C涵蓋NumPy的基本知識,并且簡要介紹機器學習所需的最重要的線性代數(shù)概念:矩陣乘法和矩陣求逆。
● 附錄D介紹Pandas。
● 附錄E解釋如何在AWS SageMaker上獲得帶有GPU的Jupyter Notebook。
這些附錄是選讀的,但它們都很有幫助,尤其是若你之前沒使用過Python或AWS。
你不必從頭至尾地閱讀本書。為幫助你導航,可以使用下列指南。
其中第2、3章的內容最重要,其余章節(jié)的內容都基于這兩章。閱讀完第2、3章的內容后,可以跳到第5章學習模型部署、到第6章學習基于樹的模型或者到第7章學習圖像分類。第4章講解的評估指標基于第3章的內容:評估第3章的客戶流失預測模型的質量。第8、9章將部署圖像分類模型,因此在此之前先閱讀第7章是很有幫助的。
每一章幾乎都包括練習。做這些練習很重要,它們會幫助你更好地記住相關內容。
Alexey Grigorev與家人居住在柏林。他是一名經(jīng)驗豐富的軟件工程師,專注于機器學習。他在OLX集團擔任首席數(shù)據(jù)科學家,幫助同事們將機器學習應用于生產(chǎn)。
工作之余,Alexey還運營著DataTalks.Club一個由喜歡數(shù)據(jù)科學和機器學習的愛好者組成的社區(qū)。他還出版過另外兩本著作:Mastering Java for Data Science和TensorFlow Deep Learning Projects。
第1章 機器學習簡介 1
1.1 機器學習 1
1.1.1 機器學習與基于規(guī)則的方法 3
1.1.2 當機器學習不起作用時 6
1.1.3 監(jiān)督機器學習 6
1.2 機器學習過程 7
1.2.1 問題理解 8
1.2.2 數(shù)據(jù)理解 9
1.2.3 數(shù)據(jù)準備 9
1.2.4 建模 9
1.2.5 評估 9
1.2.6 部署 10
1.2.7 迭代 10
1.3 建模和模型驗證 10
1.4 本章小結 14
第2章 用于回歸的機器學習 15
2.1 汽車價格預測項目 15
2.2 探索性數(shù)據(jù)分析 17
2.2.1 探索性數(shù)據(jù)分析工具箱 17
2.2.2 讀取和準備數(shù)據(jù) 19
2.2.3 目標變量分析 21
2.2.4 檢查缺失值 23
2.2.5 驗證框架 24
2.3 機器學習之回歸 27
2.3.1 線性回歸 27
2.3.2 訓練線性回歸模型 33
2.4 預測價格 35
2.4.1 基本解決方案 35
2.4.2 RMSE:評估模型質量 37
2.4.3 驗證模型 40
2.4.4 簡單的特征工程 41
2.4.5 處理分類變量 43
2.4.6 正則化 47
2.4.7 使用模型 50
2.5 后續(xù)步驟 51
2.5.1 練習 51
2.5.2 其他項目 52
2.6 本章小結 52
2.7 習題答案 53
第3章 用于分類的機器學習 55
3.1 客戶流失預測項目 55
3.1.1 電信客戶流失數(shù)據(jù)集 56
3.1.2 初始數(shù)據(jù)準備 56
3.1.3 探索性數(shù)據(jù)分析 63
3.1.4 特征重要性 66
3.2 特征工程 73
3.3 機器學習之分類 76
3.3.1 邏輯回歸 76
3.3.2 訓練邏輯回歸 79
3.3.3 模型解釋 82
3.3.4 使用模型 88
3.4 后續(xù)步驟 90
3.4.1 練習 90
3.4.2 其他項目 90
3.5 本章小結 90
3.6 習題答案 91
第4章 分類的評估指標 93
4.1 評估指標 93
4.1.1 分類準確度 94
4.1.2 虛擬基線 96
4.2 混淆矩陣 97
4.2.1 混淆矩陣介紹 97
4.2.2 用NumPy計算混淆矩陣 99
4.2.3 查準率和查全率 103
4.3 ROC曲線和AUC分數(shù) 105
4.3.1 真正例率和假正例率 106
4.3.2 在多個閾值下評估模型 107
4.3.3 隨機基線模型 109
4.3.4 理想模型 111
4.3.5 ROC曲線 114
4.3.6 AUC 118
4.4 參數(shù)調優(yōu) 120
4.4.1 K折交叉驗證 120
4.4.2 尋找最佳參數(shù) 122
4.5 后續(xù)步驟 124
4.5.1 練習 124
4.5.2 其他項目 125
4.6 本章小結 125
4.7 習題答案 126
第5章 部署機器學習模型 127
5.1 客戶流失預測模型 127
5.1.1 使用模型 127
5.1.2 使用Pickle保存和加載模型 129
5.2 模型服務化 132
5.2.1 Web服務 132
5.2.2 Flask 133
5.2.3 使用Flask將流失模型服務化 135
5.3 管理依賴項 137
5.3.1 Pipenv 137
5.3.2 Docker 141
5.4 部署 144
5.5 后續(xù)步驟 148
5.5.1 練習 148
5.5.2 其他項目 148
5.6 本章小結 148
第6章 決策樹與集成學習 149
6.1 信用風險評分項目 149
6.1.1 信用評分數(shù)據(jù)集 150
6.1.2 數(shù)據(jù)清理 150
6.1.3 準備數(shù)據(jù)集 155
6.2 決策樹 157
6.2.1 決策樹分類器 158
6.2.2 決策樹學習算法 160
6.2.3 決策樹的參數(shù)調優(yōu) 166
6.3 隨機森林 168
6.3.1 訓練隨機森林 170
6.3.2 隨機森林的參數(shù)調優(yōu) 171
6.4 梯度提升 174
6.4.1 XGBoost:極限梯度提升 175
6.4.2 模型性能監(jiān)控 176
6.4.3 XGBoost的參數(shù)調優(yōu) 178
6.4.4 測試最終模型 183
6.5 后續(xù)步驟 184
6.5.1 練習 184
6.5.2 其他項目 185
6.6 本章小結 185
6.7 習題答案 185
第7章 神經(jīng)網(wǎng)絡與深度學習 187
7.1 服裝分類 187
7.1.1 GPU與CPU 188
7.1.2 下載服裝數(shù)據(jù)集 188
7.1.3 TensorFlow和Keras 190
7.1.4 加載圖像 191
7.2 卷積神經(jīng)網(wǎng)絡 192
7.2.1 使用預訓練模型 192
7.2.2 獲得預測 195
7.3 模型的內部結構 195
7.3.1 卷積層 196
7.3.2 致密層 198
7.4 訓練模型 201
7.4.1 遷移學習 201
7.4.2 加載數(shù)據(jù) 201
7.4.3 創(chuàng)建模型 202
7.4.4 訓練模型 205
7.4.5 調整學習速率 207
7.4.6 保存模型和設置檢查點 210
7.4.7 添加更多的層 211
7.4.8 正則化和dropout 213
7.4.9 數(shù)據(jù)增強 216
7.4.10 訓練更大的模型 220
7.5 使用模型 221
7.5.1 加載模型 221
7.5.2 評估模型 222
7.5.3 獲得預測 223
7.6 后續(xù)步驟 224
7.6.1 練習 225
7.6.2 其他項目 225
7.7 本章小結 225
7.8 習題答案 226
第8章 無服務器深度學習 227
8.1 AWS Lambda 227
8.1.1 TensorFlow Lite 228
8.1.2 將模型轉換為TF Lite格式 229
8.1.3 準備圖像 229
8.1.4 使用TensorFlow Lite模型 231
8.1.5 lambda函數(shù)的代碼 232
8.1.6 準備Docker鏡像 234
8.1.7 將鏡像推送到AWS ECR 235
8.1.8 創(chuàng)建lambda函數(shù) 236
8.1.9 創(chuàng)建API Gateway 239
8.2 后續(xù)步驟 243
8.2.1 練習 243
8.2.2 其他項目 244
8.3 本章小結 244
第9章 使用Kubernetes和Kubeflow
將模型服務化 245
9.1 Kubernetes和Kubeflow 245
9.2 使用TensorFlow Serving來
服務模型 246
9.2.1 服務架構概述 246
9.2.2 saved_model格式 247
9.2.3 本地運行TensorFlow Serving 248
9.2.4 從Jupyter調用TF Serving
模型 249
9.2.5 創(chuàng)建Gateway服務 252
9.3 使用Kubernetes部署模型 255
9.3.1 Kubernetes簡介 255
9.3.2 在AWS上創(chuàng)建Kubernetes
集群 256
9.3.3 準備Docker鏡像 258
9.3.4 部署到 Kubernetes 260
9.3.5 測試服務 265
9.4 使用Kubeflow部署模型 266
9.4.1 準備模型:上傳到S3 267
9.4.2 使用KFServing部署TensorFlow
模型 267
9.4.3 訪問模型 268
9.4.4 KFServing轉換器 270
9.4.5 測試轉換器 271
9.4.6 刪除EKS集群 272
9.5 后續(xù)步驟 272
9.5.1 練習 272
9.5.2 其他項目 273
9.6 本章小結 273
附錄A 環(huán)境準備 275
附錄B Python簡介 301
附錄C Numpy簡介 315
附錄D Pandas簡介 339
附錄E AWS SageMaker 359