譯者序
序
前言
審校者簡介
第1章 品味機器學習 1
1.1 初步瞭解機器學習 1
1.2 機器學習可以解決的事情 3
1.3 初步瞭解 Python 4
1.4 初步瞭解 OpenCV 4
1.5 安裝 5
1.5.1 獲取本書最新的代碼 5
1.5.2 掌握 Python Anaconda 6
1.5.3 在 conda 環境中安裝OpenCV 8
1.5.4 驗證安裝結果 9
1.5.5 一睹 OpenCV ML 模塊 11
1.6 總結 11
第2章 使用 OpenCV 和 Python處理數據 12
2.1 理解機器學習流程 12
2.2 使用 OpenCV 和 Python 處理數據 14
2.2.1 創建一個新的 IPython 或 Jupyter 會話 15
2.2.2 使用 Python 的 NumPy包處理數據 16
2.2.3 在 Python 中載入外部數據集 20
2.2.4 使用 Matplotlib 進行數據可視化 21
2.2.5 使用C++ 中 OpenCV 的 TrainData 容器處理數據 26
2.3 總結 27
第3章 監督學習的第一步 28
3.1 理解監督學習 28
3.1.1 瞭解 OpenCV 中的監督學習 29
3.1.2 使用評分函數評估模型性能 30
3.2 使用分類模型預測類彆 35
3.2.1 理解 k-NN 算法 37
3.2.2 使用 OpenCV實現 k-NN 37
3.3 使用迴歸模型預測連續結果 43
3.3.1 理解綫性迴歸 43
3.3.2 使用綫性迴歸預測波士頓房價 44
3.3.3 應用 Lasso 迴歸和ridge 迴歸 48
3.4 使用邏輯迴歸對鳶尾花種類進行分類 48
3.5 總結 53
第4 數據錶示與特徵工程 54
4.1 理解特徵工程 54
4.2 數據預處理 55
4.2.1 特徵標準化 56
4.2.2 特徵歸一化 57
4.2.3 特徵縮放到一定的範圍 57
4.2.4 特徵二值化 58
4.2.5 缺失數據處理 58
4.3 理解降維 59
4.3.1 在OpenCV 中實現主成分分析 61
4.3.2 實現獨立成分分析 64
4.3.3 實現非負矩陣分解 65
4.4 類彆變量錶示 66
4.5 文本特徵錶示 68
4.6 圖像錶示 69
4.6.1 使用色彩空間 69
4.6.2 圖像角點檢測 71
4.6.3 使用尺度不變特徵變換 72
4.6.4 使用加速健壯特徵 74
4.7 總結 75
第5章 使用決策樹進行醫療診斷 76
5.1 理解決策樹 76
5.1.1 構建第一個決策樹 79
5.1.2 可視化訓練得到的決策樹 85
5.1.3 深入瞭解決策樹的內部工作機製 87
5.1.4 特徵重要性評分 88
5.1.5 理解決策規則 89
5.1.6 控製決策樹的復雜度 90
5.2 使用決策樹進行乳腺癌的診斷 90
5.2.1 載入數據集 91
5.2.2 構建決策樹 92
5.3 使用決策樹進行迴歸 96
5.4 總結 99
第6章 使用支持嚮量機檢測行人 100
6.1 理解綫性支持嚮量機 100
6.1.1 學習最優決策邊界 101
6.1.2 實現我們的第一個支持嚮量機 102
6.2 處理非綫性決策邊界 107
6.2.1 理解核機製 108
6.2.2 認識我們的核 109
6.2.3 實現非綫性支持嚮量機 109
6.3 自然環境下的行人檢測 110
6.3.1 獲取數據集 111
6.3.2 初窺方嚮梯度直方圖 113
6.3.3 生成負樣本 114
6.3.4 實現支持嚮量機 116
6.3.5 模型自舉 116
6.3.6 在更大的圖像中檢測行人 118
6.3.7 進一步優化模型 120
6.4 總結 121
第7章 使用貝葉斯學習實現垃圾郵件過濾 122
7.1 理解貝葉斯推斷 122
7.1.1 概率論的短暫之旅 123
7.1.2 理解貝葉斯定理 124
7.1.3 理解樸素貝葉斯分類器 126
7.2 實現第一個貝葉斯分類器 127
7.2.1 創建一個練習數據集 127
7.2.2 使用一個正態貝葉斯分類器對數據分類 128
7.2.3 使用一個樸素貝葉斯分類器對數據分類 131
7.2.4 條件概率的可視化 132
7.3 使用樸素貝葉斯分類器對郵件分類 134
7.3.1 載入數據集 134
7.3.2 使用Pandas構建數據矩陣 136
7.3.3 數據預處理 137
7.3.4 訓練正態貝葉斯分類器 138
7.3.5 使用完整的數據集進行訓練 139
7.3.6 使用n-gram提升結果 139
7.3.7 使用TD-IDF提升結果 140
7.4 總結 141
第8章 使用非監督學習發現隱藏結構 142
8.1 理解非監督學習 142
8.2 理解k均值聚類 143
8.3 理解期望最大化 145
8.3.1 實現期望最大化解決方案 146
8.3.2 瞭解期望最大化的局限 148
8.4 使用k均值壓縮色彩空間 154
8.4.1 真彩色調色闆的可視化 154
8.4.2 使用k均值減少調色闆 157
8.5 使用k均值對手寫數字分類 159
8.5.1 載入數據集 159
8.5.2 運行k均值 159
8.6 把聚類組織成層次樹 161
8.6.1 理解層次聚類 161
8.6.2 實現凝聚層次聚類 162
8.7 總結 163
第9章 使用深度學習對手寫數字分類 164
9.1 理解McCulloch-Pitts神經元 164
9.2 理解感知器 167
9.3 實現第一個感知器 169
9.3.1 生成練習數據集 170
9.3.2 使用數據擬閤感知器 171
9.3.3 評估感知器分類器 171
9.3.4 把感知器應用到綫性不可分的數據上 173
9.4 理解多層感知器 174
9.4.1 理解梯度下降 175
9.4.2 使用反嚮傳播訓練多層感知器 178
9.4.3 在OpenCV中實現多層感知器 179
9.5 瞭解深度學習 183
9.6 手寫數字分類 186
9.6.1 載入MNIST數據集 187
9.6.2 MNIST數據集預處理 188
9.6.3 使用OpenCV訓練一個MLP 189
9.6.4 使用Keras訓練一個深度神經網絡 190
9.7 總結 192
第10章 組閤不同算法為一個整體 193
10.1 理解集成方法 193
10.1.1 理解平均集成 195
10.1.2 理解提升集成 197
10.1.3 理解堆疊集成 200
10.2 組閤決策樹為隨機森林 200
10.2.1 理解決策樹的不足 200
10.2.2 實現第一個隨機森林 204
10.2.3 使用scikit-learn實現一個隨機森林 205
10.2.4 實現極端隨機樹 206
10.3 使用隨機森林進行人臉識彆 208
10.3.1 載入數據集 208
10.3.2 預處理數據集 209
10.3.3 訓練和測試隨機森林 210
10.4 實現AdaBoost 212
10.4.1 使用OpenCV實現AdaBoost 212
10.4.2 使用scikit-learn實現AdaBoost 213
10.5 組閤不同模型為一個投票分類器 214
10.5.1 理解不同的投票機製 214
10.5.2 實現一個投票分類器 215
10.6 總結 217
第11章 通過超參數調優選擇閤適的模型 218
11.1 評估一個模型 218
11.1.1 評估模型錯誤的方法 219
11.1.2 評估模型正確的方法 220
11.1.3 選擇最好的模型 221
11.2 理解交叉驗證 223
11.2.1 使用OpenCV手動實現交叉驗證 225
11.2.2 使用scikit-learn進行k摺交叉驗證 226
11.2.3 實現留一法交叉驗證 227
11.3 使用自舉評估魯棒性 228
11.4 評估結果的重要性 230
11.4.1 實現T檢驗 230
11.4.2 實現配對卡方檢驗 232
11.5 使用網格搜索進行超參數調優 233
11.5.1 實現一個簡單的網格搜索 234
11.5.2 理解驗證集的價值 235
11.5.3 網格搜索結閤交叉驗證 236
11.5.4 網格搜索結閤嵌套交叉驗證 238
11.6 使用不同評估指標來對模型評分 239
11.6.1 選擇正確的分類指標 239
11.6.2 選擇正確的迴歸指標 240
11.7 鏈接算法形成一個管道 240
11.7.1 用 scikit-learn 實現管道 241
11.7.2 在網格搜索中使用管道 242
11.8 總結 243
第12章 綜閤 244
12.1 著手處理一個機器學習問題 244
12.2 構建自己的估計器 245
12.2.1 使用C++編寫自己的基於OpenCV的分類器 245
12.2.2 使用Python 編寫自己的基於scikit-learn的分類器 247
12.3 今後的方嚮 249
12.4 總結 251
· · · · · · (
收起)