本書是機器學習入門書,以Python語言介紹。主要內容包括:機器學習的基本概念及其應用;實踐中常用的機器學習算法以及這些算法的優(yōu)缺點;在機器學習中待處理數(shù)據(jù)的呈現(xiàn)方式的重要性,以及應重點關注數(shù)據(jù)的哪些方面;模型評估和調參的方法,重點講解交叉驗證和網格搜索;管道的概念;如何將前面各章的方法應用到文本數(shù)據(jù)上,還介紹了一些文本特有的處理方法。
本書適合機器學習從業(yè)者或有志成為機器學習從業(yè)者的人閱讀。
機器學習已成為許多商業(yè)應用和研究項目不可或缺的一部分,海量數(shù)據(jù)使得機器學習的應用范圍遠超人們想象。本書將向所有對機器學習技術感興趣的初學者展示,自己動手構建機器學習解決方案并非難事!
書中重點討論機器學習算法的實踐而不是背后的數(shù)學,全面涵蓋在實踐中實現(xiàn)機器學習算法的所有重要內容,幫助讀者使用Python和scikit-learn庫一步一步構建一個有效的機器學習應用。
* 機器學習的基本概念及其應用
* 常用機器學習算法的優(yōu)缺點
* 機器學習所處理的數(shù)據(jù)的表示方法,包括重點關注數(shù)據(jù)的哪些方面
* 模型評估和調參的方法
* 管道的概念
* 處理文本數(shù)據(jù)的方法,包括文本特有的處理方法
* 進一步提高機器學習和數(shù)據(jù)科學技能的建議
Andreas C.Mller,scikit-learn庫維護者和核心貢獻者,F(xiàn)任哥倫比亞大學數(shù)據(jù)科學研究院講師,曾任紐約大學數(shù)據(jù)科學中心助理研究員、亞馬遜公司計算機視覺應用的機器學習研究員。在波恩大學獲得機器學習博士學位。
Sarah Guido,Mashable公司數(shù)據(jù)科學家,曾擔任Bitly公司數(shù)據(jù)科學家。
前言 ix
第 1 章 引言 1
1.1 為何選擇機器學習 1
1.1.1 機器學習能夠解決的問題 2
1.1.2 熟悉任務和數(shù)據(jù) 4
1.2 為何選擇Python 4
1.3 scikit-learn 4
1.4 必要的庫和工具 5
1.4.1 Jupyter Notebook 6
1.4.2 NumPy 6
1.4.3 SciPy 6
1.4.4 matplotlib 7
1.4.5 pandas 8
1.4.6 mglearn 9
1.5 Python 2 與Python 3 的對比 9
1.6 本書用到的版本 10
1.7 第 一個應用:鳶尾花分類 11
1.7.1 初識數(shù)據(jù) 12
1.7.2 衡量模型是否成功:訓練數(shù)據(jù)與測試數(shù)據(jù) 14
1.7.3 要事第 一:觀察數(shù)據(jù) 15
1.7.4 構建第 一個模型:k 近鄰算法 16
1.7.5 做出預測 17
1.7.6 評估模型 18
1.8 小結與展望 19
第 2 章 監(jiān)督學習 21
2.1 分類與回歸 21
2.2 泛化、過擬合與欠擬合 22
2.3 監(jiān)督學習算法 24
2.3.1 一些樣本數(shù)據(jù)集 25
2.3.2 k 近鄰 28
2.3.3 線性模型 35
2.3.4 樸素貝葉斯分類器 53
2.3.5 決策樹 54
2.3.6 決策樹集成 64
2.3.7 核支持向量機 71
2.3.8 神經網絡(深度學習) 80
2.4 分類器的不確定度估計 91
2.4.1 決策函數(shù) 91
2.4.2 預測概率 94
2.4.3 多分類問題的不確定度 96
2.5 小結與展望 98
第3 章 無監(jiān)督學習與預處理 100
3.1 無監(jiān)督學習的類型 100
3.2 無監(jiān)督學習的挑戰(zhàn) 101
3.3 預處理與縮放 101
3.3.1 不同類型的預處理 102
3.3.2 應用數(shù)據(jù)變換 102
3.3.3 對訓練數(shù)據(jù)和測試數(shù)據(jù)進行相同的縮放 104
3.3.4 預處理對監(jiān)督學習的作用 106
3.4 降維、特征提取與流形學習 107
3.4.1 主成分分析 107
3.4.2 非負矩陣分解 120
3.4.3 用t-SNE 進行流形學習 126
3.5 聚類 130
3.5.1 k 均值聚類 130
3.5.2 凝聚聚類 140
3.5.3 DBSCAN 143
3.5.4 聚類算法的對比與評估 147
3.5.5 聚類方法小結 159
3.6 小結與展望 159
第4 章 數(shù)據(jù)表示與特征工程 161
4.1 分類變量 161
4.1.1 One-Hot 編碼(虛擬變量) 162
4.1.2 數(shù)字可以編碼分類變量 166
4.2 分箱、離散化、線性模型與樹 168
4.3 交互特征與多項式特征 171
4.4 單變量非線性變換 178
4.5 自動化特征選擇 181
4.5.1 單變量統(tǒng)計 181
4.5.2 基于模型的特征選擇 183
4.5.3 迭代特征選擇 184
4.6 利用專家知識 185
4.7 小結與展望 192
第5 章 模型評估與改進 193
5.1 交叉驗證 194
5.1.1 scikit-learn 中的交叉驗證 194
5.1.2 交叉驗證的優(yōu)點 195
5.1.3 分層k 折交叉驗證和其他策略 196
5.2 網格搜索 200
5.2.1 簡單網格搜索 201
5.2.2 參數(shù)過擬合的風險與驗證集 202
5.2.3 帶交叉驗證的網格搜索 203
5.3 評估指標與評分 213
5.3.1 牢記目標 213
5.3.2 二分類指標 214
5.3.3 多分類指標 230
5.3.4 回歸指標 232
5.3.5 在模型選擇中使用評估指標 232
5.4 小結與展望 234
第6 章 算法鏈與管道 236
6.1 用預處理進行參數(shù)選擇 237
6.2 構建管道 238
6.3 在網格搜索中使用管道 239
6.4 通用的管道接口 242
6.4.1 用make_pipeline 方便地創(chuàng)建管道 243
6.4.2 訪問步驟屬性 244
6.4.3 訪問網格搜索管道中的屬性 244
6.5 網格搜索預處理步驟與模型參數(shù) 246
6.6 網格搜索選擇使用哪個模型 248
6.7 小結與展望 249
第7 章 處理文本數(shù)據(jù) 250
7.1 用字符串表示的數(shù)據(jù)類型 250
7.2 示例應用:電影評論的情感分析 252
7.3 將文本數(shù)據(jù)表示為詞袋 254
7.3.1 將詞袋應用于玩具數(shù)據(jù)集 255
7.3.2 將詞袋應用于電影評論 256
7.4 停用詞 259
7.5 用tf-idf 縮放數(shù)據(jù) 260
7.6 研究模型系數(shù) 263
7.7 多個單詞的詞袋(n 元分詞) 263
7.8 分詞、詞干提取與詞形還原 267
7.9 主題建模與文檔聚類 270
7.10 小結與展望 277
第8 章 全書總結 278
8.1 處理機器學習問題 278
8.2 從原型到生產 279
8.3 測試生產系統(tǒng) 280
8.4 構建你自己的估計器 280
8.5 下一步怎么走 281
8.5.1 理論 281
8.5.2 其他機器學習框架和包 281
8.5.3 排序、推薦系統(tǒng)與其他學習類型 282
8.5.4 概率建模、推斷與概率編程 282
8.5.5 神經網絡 283
8.5.6 推廣到更大的數(shù)據(jù)集 283
8.5.7 磨練你的技術 284
8.6 總結 284
關于作者 285
關于封面 285