《Python機器學習(原書第3版)》是使用Python進行機器學習和深度學習的全面指南。
基本介紹
- 書名:Python機器學習(原書第3版)
- 作者:[美]塞巴斯蒂安·拉施卡(Sebastian Raschka)、[美]瓦希德·米爾賈利利(Vahid Mirjalili)
- 原作品:Python Machine Learning,Third Edition
- 譯者:陳 斌
- 出版社:機械工業出版社
- 出版時間:2021年6月
- 頁數:480 頁
- 定價:149.00 元
- 開本:16 開
- 裝幀:平裝
- ISBN:9787111681373
內容簡介,目錄,
內容簡介
本書是使用Python進行機器學習和深度學習的全面指南。它既可以用作清晰的分步教程,也可以作為構建機器學習系統時常用的參考手冊。本書包含清晰的解釋、圖表和工作示例,全面深入地介紹了機器學習的基本技術,並且給出了機器學習背後的原理,使你可以自己建立模型和應用程式。第3版結合TensorFlow 2和scikit-learn的新版本進行了更新,涵蓋強化學習和生成對抗網路(GAN)這兩種先進的機器學習技術。
機器學習將改變你解決問題的思路,並讓你看到如何釋放數據的力量來解決問題。無論你是Python機器學習的初學者還是想加深自己對前沿發展的了解,本書都是你不可或缺的好幫手。
目錄
譯者序
前言
作者簡介
審校者簡介
第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 訓練模型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
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 訓練模型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