Python 機器學習, 3/e (Python Machine Learning: Machine Learning and Deep Learning with Python, scikit-learn, and TensorFlow 2, 3/e)

Sebastian Raschka,Vahid Mirjalili 譯 陳斌譯

買這商品的人也買了...

商品描述

本書自第1版出版以來,備受廣大讀者歡迎。
與同類書相比,本書除了介紹如何用Python和基於Python的機器學習軟件庫進行實踐外,
還對機器學習概念的必要細節進行討論,同時對機器學習算法的工作原理、
使用方法以及如何避免掉入常見的陷阱提供直觀且翔實的解釋,是Python機器學習入門必讀之作。
它的內容涵蓋了眾多高效Python庫,包括scikit-learn、Keras和TensorFlow等,
系統性地梳理和分析了各種經典算法,並通過Python語言以具體代碼示例的方式深入淺出地介紹了各種算法的應用,
還給出了從情感分析到神經網絡的一些實踐技巧,這些內容能使你快速解決你和你的團隊面臨的一些重要問題。

作者簡介

塞巴斯蒂安·拉施卡(Sebastian Raschka)從密歇根州立大學獲得博士學位,在此期間他主要關注計算生物學和機器學習交叉領域的方法研究。
他在2018年夏季加入威斯康星-麥迪遜大學,擔任統計學助理教授。
他的主要研究活動包括開發新的深度學習體系結構來解決生物統計學領域的問題。
Sebastian在Python編程方面擁有多年經驗,多年來針對數據科學、機器學習和深度學習的實際應用組織過多次研討會,並在SciPy(重要的Python科學計算會議)上發布過機器學習教程。
本書是Sebastian的主要學術成就之一,也是Packt和Amazon.com的暢銷書之一,曾獲《ACM計算評論》2016年度最佳獎,並被翻譯成包括德文、韓文、中文、日文、俄文、波蘭文和意大利文在內的多種語言。
在閒暇時間裡,Sebastian熱衷於為開源項目做貢獻,他所實現的方法現已成功用於像Kaggle這樣的機器學習競賽。

目錄大綱

目錄
譯者序
前言
作者簡介
審校者簡介
第1章賦予計算機從數據中學習的能力1
1.1構建能把數據轉換為知識的智能機器1
1.2三種不同類型的機器學習1
1.2.1用監督學習預測未來2
1.2.2用強化學習解決交互問題3
1.2.3用無監督學習發現隱藏的結構4
1.3基本術語與符號4
1.3.1本書中使用的符號和約定5
1.3.2機器學習的術語6
1.4構建機器學習系統的路線圖6
1.4.1預處理——整理數據6
1.4.2訓練和選擇預測模型7
1.4.3評估模型並對未曾謀面的數據進行預測8
1.5將Python用於機器學習8
1.5.1利用Python Package Index安裝Python及其他軟件包8
1.5.2採用Anaconda Python發行版和軟件包管理器8
1.5.3用於科學計算、數據科學和機器學習的軟件包9
1.6本章小結9

第2章訓練簡單的機器學習分類算法10
2.1人工神經元——機器學習的早期歷史10
2.1.1人工神經元的正式定義11
2.1.2感知器學習規則12
2.2用Python實現感知器學習算法14
2.2 .1面向對象的感知器API14
2.2.2在鳶尾花數據集上訓練感知器模型16
2.3自適應線性神經元和學習收斂20
2.3.1通過梯度下降最小化代價函數21
2.3.2用Python實現Adaline22
2.3.3通過特徵縮放改善梯度下降26
2.3.4大規模機器學習與隨機梯度下降27
2.4本章小結31

第3章scikit-learn機器學習分類器32
3.1選擇分類算法32
3.2了解scikit-learn的第一步——訓練感知器32
3.3基於邏輯回歸的分類概率建模37
3.3.1邏輯回歸與條件概率37
3.3.2學習邏輯代價函數的權重39
3.3.3將Adaline實現轉換為一個邏輯回歸算法41
3.3.4用scikit-learn訓練邏輯回歸模型44
3.3.5通過正則化解決過擬合問題46
3.4使用支持向量機*化分類間隔48
3.4.1對分類間隔*化的直觀認識48
3.4.2用鬆弛變量解決非線性可分問題50
3.4.3其他的scikit-learn實現51
3.5用核支持向量機求解非線性問題51
3.5.1處理線性不可分數據的核方法52
3.5.2利用核技巧發現高維空間的分離超平面53
3.6決策樹學習56
3.6.1 *化信息增益——獲得*收益56
3.6.2構建決策樹59
3.6.3多個決策樹的隨機森林組合62
3.7 k-近鄰——一種惰性學習算法64
3.8本章小結66

第4章構建良好的訓練數據集——數據預處理67
4.1處理缺失數據67
4.1.1識別數據中的缺失值67
4.1.2刪除有缺失值的訓練樣本或特徵68
4.1.3填補缺失值69
4.1.4了解scikit-learn估計器API69
4.2處理類別數據70
4.2.1用pandas實現類別數據的編碼70
4.2.2映射序數特徵71
4.2.3為分類標籤編碼71
4.2.4為名義特徵做獨熱編碼72
4.3把數據集劃分為獨立的訓練數據集和測試數據集74
4.4保持相同的特徵縮放76
4.5選擇有意義的特徵78
4.5.1 L1和L2正則化對模型複雜度的懲罰78
4.5.2 L2正則化的幾何解釋78
4.5.3 L1正則化的稀疏解決方案79
4.5.4序列特徵選擇算法82
4.6用隨機森林評估特徵的重要性86
4.7本章小結88

第5章通過降維壓縮數據89
5.1用主成分分析實現無監督降維89
5.1.1主成分分析的主要步驟89
5.1.2逐步提取主成分90
5.1.3總方差和解釋方差92
5.1.4特徵變換93
5.1.5用scikit-learn實現主成分分析95
5.2基於線性判別分析的監督數據壓縮97
5.2.1主成分分析與線性判別分析97
5.2. 2線性判別分析的內部工作原理98
5.2.3計算散佈矩陣98
5.2.4為新特徵子空間選擇線性判別100
5.2.5將樣本投影到新的特徵空間102
5.2.6用scikit-learn實現LDA103
5.3非線性映射的核主成分分析104
5.3.1核函數與核技巧104
5.3.2用Python實現核主成分分析107
5.3.3投影新的數據點112
5.3.4 scikit-learn的核主成分分析115
5.4本章小結116

第6章模型評估和超參數調優的*實踐117
6.1用流水線方法簡化工作流117
6.1.1加載威斯康星乳腺癌數據集117
6.1.2在流水線中集成轉換器和估計器118
6.2使用k折交叉驗證評估模型性能120
6.2.1 holdout方法120
6.2.2 k折交叉驗證121
6.3用學習和驗證曲線調試算法123
6.3.1用學習曲線診斷偏差和方差問題124
6.3.2用驗證曲線解決過擬合和欠擬合問題126
6.4通過網格搜索調優機器學習模型127
6.4.1通過網格搜索調優超參數128
6.4.2通過嵌套式交叉驗證選擇算法129
6.5了解不同的性能評估指標130
6.5.1分析混淆矩陣130
6.5.2優化分類模型的精度和召回率131
6.5.3繪製ROC曲線133
6.5.4多元分類評分指標135
6.5.5處理類不均衡問題135
6.6本章小結137

第7章組合不同模型的集成學習138
7.1集成學習138
7.2通過多數票機制組合分類器140
7.2.1實現一個簡單的多數票分類器141
7.2.2用多數票原則進行預測145
7.2.3評估和優化集成分類器147
7.3 bagging——基於bootstrap樣本構建集成分類器151
7.3.1 bagging簡介151
7.3.2應用bagging對葡萄酒數據集中的樣本分類152
7.4通過自適應boosting提高弱學習機的性能155
7.4.1 boosting的工作原理156
7.4.2用scikit-learn實現AdaBoost158
7.5本章小結161

第8章用機器學習進行情感分析162
8.1為文本處理預備好IMDb電影評論數據162
8.1.1獲取電影評論數據集162
8.1.2把電影評論數據集預處理成更方便的格式163
8.2詞袋模型介紹164
8.2.1把單詞轉換成特徵向量164
8.2.2通過詞頻-逆文檔頻率評估單詞相關性166
8.2.3清洗文本數據167
8.2.4把文檔處理成令牌168
8.3訓練用於文檔分類的邏輯回歸模型170
8.4處理更大的數據集——在線算法和核外學習172
8.5用潛在狄利克雷分配實現主題建模174
8.5.1使用LDA分解文本文檔175
8.5.2 scikit-learn中的LDA175
8.6本章小結178

第9章將機器學習模型嵌入Web應用179
9.1序列化擬合的scikit-learn估計器179
9.2搭建SQLite數據庫存儲數據181
9.3用Flask開發Web應用183
9.3.1第一個Flask Web應用183
9.3.2表單驗證與渲染185
9.4將電影評論分類器轉換為Web應用189
9.4 .1文件與文件夾——研究目錄樹190
9.4.2實現主應用app.py190
9.4.3建立評論表單192
9.4.4創建結果頁面模板193
9.5在公共服務器上部署Web應用195
9.5.1創建PythonAnywhere賬戶195
9.5.2上傳電影分類器應用195
9.5.3更新電影分類器196
9.6本章小結198

第10章用回歸分析預測連續目標變量199
10.1線性回歸簡介199
10.1.1簡單線性回歸199
10.1.2多元線性回歸200
10.2探索住房數據集200
10.2.1加載住房數據200
10.2.2可視化數據集的重要特點202
10.2.3用相關矩陣查看關係203
10.3普通最小二乘線性回歸模型的實現205
10.3.1用梯度下降方法求解回歸參數205
10.3.2通過scikit-learn估計回歸模型的係數207
10.4利用RANSAC擬合魯棒回歸模型209
10.5評估線性回歸模型的性能211
10.6用正則化方法進行回歸213
10.7將線性回歸模型轉換為曲線——多項式回歸214
10.7.1用scikit-learn增加多項式項214
10.7.2為住房數據集中的非線性關係建模216
10.8用隨機森林處理非線性關係218
10.8. 1決策樹回歸218
10.8.2隨機森林回歸219
10.9本章小結221

第11章用聚類分析處理無標籤數據223
11.1用k-均值進行相似性分組223
11.1.1用scikit-learn實現k-均值聚類223
11.1.2 k-均值++——更聰明地設置初始集群質心的方法226
11.1.3硬聚類與軟聚類227
11.1.4用肘部方法求解*集群數228
11.1.5通過輪廓圖量化聚類質量229
11.2把集群組織成層次樹233
11.2.1以自下而上的方式聚類233
11.2 .2在距離矩陣上進行層次聚類234
11.2.3熱度圖附加樹狀圖236
11.2.4通過scikit-learn進行凝聚聚類238
11.3通過DBSCAN定位高密度區域238
11.4本章小結242

第12章從零開始實現多層人工神經網絡243
12.1用人工神經網絡建立復雜函數模型243
12.1.1單層神經網絡回顧244
12.1.2多層神經網絡體系結構簡介245
12.1.3利用正向傳播激活神經網絡247
12.2識別手寫數字249
12.2.1獲取並準備MNIST數據集249
12.2.2實現一個多層感知器254
12.3訓練人工神經網絡262
12.3.1邏輯代價函數的計算262
12.3.2理解反向傳播264
12.3.3通過反向傳播訓練神經網絡265
12.4關於神經網絡的收斂性267
12.5關於神經網絡實現的最後幾句話268
12.6本章小結268

第13章用TensorFlow並行訓練神經網絡269
13.1 TensorFlow與模型訓練的性能269
13.1.1性能挑戰269
13.1.2什麼是TensorFlow270
13.1.3如何學習TensorFlow271
13.2學習TensorFlow的第一步271
13.2.1安裝TensorFlow271
13.2.2在TensorFlow中創建張量272
13.2.3對張量形狀和數據類型進行操作273
13.2.4對張量進行數學運算273
13.2.5拆分、堆疊和連接張量275
13.3用TensorFlow的Dataset API構建輸入流水線276
13.3.1用現存張量創建TensorFlow的數據集276
13.3.2把兩個張量整合成一個聯合數據集277
13.3.3洗牌、批處理和重複278
13.3.4從本地磁盤的文件創建數據集280
13.3.5從tensorflow_datasets獲取可用的數據集282
13.4在TensorFlow中構建神經網絡模型286
13.4. 1 TensorFlow Keras API(tf.keras)287
13.4.2構建線性回歸模型287
13.4.3通過.compile()和.fit()方法訓練模型291
13.4.4在鳶尾花數據集上構建多層分類感知器291
13.4.5在測試數據集上評估訓練後的模型294
13.4.6保存並重新加載訓練後的模型294
13.5選擇多層神經網絡的激活函數295
13.5.1關於邏輯函數的回顧295
13.5.2在多元分類中調用softmax函數評估分類概率296
13.5.3利用雙曲正切拓寬輸出範圍297
13.5.4修正線性單元激活函數299
13.6本章小結300

第14章深入探討TensorFlow的工作原理301
14.1 TensorFlow的主要功能301
14.2 TensorFlow的計算圖:遷移到TensorFlow v2302
14.2.1了解TensorFlow的計算圖302
14.2.2在TensorFlow v1.x中創建計算圖302
14.2.3將計算圖遷移到TensorFlow v2303
14.2.4在TensorFlow v1.x中將輸入數據加載到模型304
14.2.5在TensorFlow v2中將輸入數據加載到模型304
14.2.6通過函數修飾器提高計算性能305
14.3用於存儲和更新模型參數的TensorFlow變量對象306
14.4通過自動微分和GradientTape計算梯度309
14.4.1針對可訓練變量計算損失的梯度309
14.4.2針對不可訓練張量計算梯度310
14.4.3保留用於多個梯度計算的資源311
14.5通過Keras API簡化通用體系結構的實現311
14.5.1解決XOR分類問題313
14.5.2用Keras的函數式API靈活建模317
14.5.3基於Keras的Model類建模318
14.5.4編寫自定義Keras層318
14.6 TensorFlow估計器321
14.6.1使用特徵列322
14.6.2帶預製估計器的機器學習325
14.6.3用估計器進行MNIST手寫數字分類328
14.6.4基於現有Keras模型創建自定義估計器329
14.7本章小結331

第15章用深度卷積神經網絡為圖像分類332
15.1構成捲積神經網絡的模塊332
15.1.1理解CNN與特徵層次332
15.1.2離散卷積計算334
15.1.3子採樣層340
15.2構建卷積神經網絡341
15.2.1處理多個輸入或者顏色通道341
15.2.2通過dropout正則化神經網絡344
15.2.3分類過程中的損失函數346
15.3用TensorFlow實現深度卷積神經網絡347
15.3.1多層卷積神經網絡的體系結構348
15.3.2數據加載和預處理348
15.3.3用TensorFlow的Keras API實現卷積神經網絡模型349
15.4用卷積神經網絡根據人臉圖像進行性別分類353
15.4.1加載CelebA數據集354
15.4.2圖像轉換和數據擴增354
15.4.3訓練基於卷積神經網絡的性別分類器359
15.5本章小結363

第16章用循環神經網絡為序列數據建模364
16.1序列數據介紹364
16.1.1序列數據建模——順序很重要364
16.1.2序列數據的表達365
16.1.3不同類別的序列建模365
16.2循環神經網絡序列建模366
16.2.1了解循環神經網絡的循環機制366
16.2.2在循環神經網絡中計算激活值367
16.2.3隱藏循環與輸出循環369
16.2.4學習長程交互面臨的挑戰371
16.2.5長短期記憶單元372
16.3用TensorFlow實現循環神經網絡序列建模374
16.3.1項目1:對IMDb電影評論進行情感分析374
16.3.2項目2:用TensorFlow實現字符級語言建模385
16.4用轉換器模型理解語言394
16.4.1了解自註意力機制394
16.4.2多頭注意力和轉換器塊396
16.5本章小結397

第17章用生成對抗網絡合成新數據398
17.1生成對抗網絡介紹398
17.1.1自編碼器398
17.1.2用於合成新數據的生成模型400
17.1.3用GAN生成新樣本401
17.1.4理解GAN模型中生成器和判別器網絡的損失函數402
17.2從零開始實現GAN403
17.2.1用谷歌Colab訓練GAN模型403
17.2.2實現生成器和判別器網絡405
17.2.3定義訓練數據集408
17.2.4訓練GAN模型409
17.3用卷積和Wasserstein GAN提高合成圖像的質量415
17.3.1轉置卷積416
17.3.2批歸一化417
17.3. 3實現生成器和判別器419
17.3.4兩個分佈之間相異度的度量423
17.3.5在GAN實踐中使用EM距離426
17.3.6梯度懲罰426
17.3.7實現WGAN-GP來訓練DCGAN模型427
17.3.8模式坍塌429
17.4其他的GAN應用431
17.5本章小結432

第18章用於復雜環境決策的強化學習433
18.1概述——從經驗中學習433
18.1.1了解強化學習433
18.1.2定義強化學習系統的智能體環境接口434
18.2 RL的理論基礎435
18.2.1馬爾可夫決策過程435
18.2.2馬爾可夫決策過程的數學公式436
18.2.3 RL術語:回報、策略和價值函數438
18.2.4用貝爾曼方程動態編程440
18.3強化學習算法441
18.3.1動態編程441
18.3.2蒙特卡羅強化學習443
18.3.3時序差分學習444
18.4實現第一個RL算法446
18.4.1介紹OpenAI Gym工具包446
18.4.2用Q學習解決網格世界問題453
18.4.3深度Q學習概覽456
18.5本章小結462