本書對數(shù)據(jù)科學(xué)進(jìn)行了整體性介紹,涵蓋了掌握該學(xué)科所需的分析、編程和業(yè)務(wù)技能等方方面面。找到一個的數(shù)據(jù)科學(xué)家就像是尋找一只獨(dú)角獸:因為其所需要的技術(shù)及技能組合很難在一個人身上兼?zhèn)洹A硗猓己玫臄?shù)據(jù)科學(xué)素養(yǎng)不僅僅是對所訓(xùn)練技能的綜合應(yīng)用,還需要能夠靈活考慮所有這些領(lǐng)域,并理解它們之間的聯(lián)系。本書提供了數(shù)據(jù)科學(xué)的速成課程,將所有必要的技能結(jié)合到一個統(tǒng)一的學(xué)科體系中。與許多數(shù)據(jù)分析的書籍不同,本書涵蓋了關(guān)鍵的計算機(jī)科學(xué)和軟件工程相關(guān)內(nèi)容,因為它們在數(shù)據(jù)科學(xué)家的日常工作中發(fā)揮了極其重要的作用。本書還介紹了經(jīng)典的機(jī)器學(xué)習(xí)算法,從這些算法的數(shù)學(xué)基礎(chǔ)到實際應(yīng)用均有描述。本書對可視強(qiáng)調(diào)其在數(shù)據(jù)科學(xué)中的核心位置。引入古典統(tǒng)計學(xué)的目的是幫助讀者用批判性思維對數(shù)據(jù)進(jìn)行解釋,并指出常見的陷阱。對分析結(jié)果的清化工具進(jìn)行了綜述,并晰交流(這也許是數(shù)據(jù)科學(xué)技術(shù)中*為薄弱的一個環(huán)節(jié))有專門的章節(jié)進(jìn)行講解,本書對所有涉及的主題均是在解決實際問題的背景下加以解釋。
譯者序
原書前言
第1章 引言:成為獨(dú)角獸 1
1.1 數(shù)據(jù)科學(xué)家不僅僅是高薪統(tǒng)計人員 2
1.2 本書的內(nèi)容是怎樣組織的 2
1.3 如何使用本書 3
1.4 無論如何,為什么一切都在Python中 3
1.5 示例代碼及數(shù)據(jù)集 3
1.6 最后的話 4
第Ⅰ部分 必須掌握的基礎(chǔ)素材
第2章 數(shù)據(jù)科學(xué)路線圖 6
2.1 解決問題 7
2.2 理解數(shù)據(jù):基本問題 8
2.3 理解數(shù)據(jù):數(shù)據(jù)整理 9
2.4 理解數(shù)據(jù):探索性分析 9
2.5 提取特征 10
2.6 模型 10
2.7 呈現(xiàn)結(jié)果 11
2.8 部署代碼 11
2.9 迭代 12
2.10 術(shù)語 12
第3章 編程語言 13
3.1 為什么使用編程語言,有無其他選項 13
3.2 數(shù)據(jù)科學(xué)編程語言綜述 14
3.2.1 Python語言 14
3.2.2 R語言 14
3.2.3 MATLAB和Octave 14
3.2.4 SAS 15
3.2.5 Scala 15
3.3 Python語言速成班 15
3.3.1 版本注解 15
3.3.2 “hello world”腳本 16
3.3.3 更為復(fù)雜的腳本 17
3.3.4 數(shù)據(jù)類型 19
3.4 字符串 19
3.4.1 注釋與文檔注釋 21
3.4.2 復(fù)雜數(shù)據(jù)類型 21
3.4.3 列表 22
3.4.4 字符串與列表 22
3.4.5 元組 23
3.4.6 字典 24
3.4.7 集合 24
3.5 定義函數(shù) 24
3.5.1 循環(huán)與控制結(jié)構(gòu) 25
3.5.2 一些關(guān)鍵函數(shù) 26
3.5.3 異常處理 27
3.5.4 導(dǎo)入庫 27
3.5.5 類及對象 27
3.5.6 可哈希與不可哈希類型 28
3.6 Python語言技術(shù)庫 29
3.6.1 數(shù)據(jù)幀 29
3.6.2 序列 30
3.6.3 連接與分組 32
3.7 其他Python語言資源 33
3.8 延伸閱讀 33
3.9 術(shù)語 34
第4章 數(shù)據(jù)預(yù)處理:字符串操作、正則表達(dá)式和數(shù)據(jù)清理 36
4.1 世界上最糟糕的數(shù)據(jù)集 36
4.2 如何識別問題 37
4.3 數(shù)據(jù)內(nèi)容問題 37
4.3.1 重復(fù)條目 37
4.3.2 單實體的多個條目 37
4.3.3 丟失缺失值 38
4.3.4 NULL 38
4.3.5 巨大異常值 38
4.3.6 過期數(shù)據(jù) 39
4.3.7 人造數(shù)據(jù) 39
4.3.8 非正規(guī)空格 39
4.4 格式化問題 39
4.4.1 不同行列之間的不規(guī)則格式化 39
4.4.2 額外的空白 39
4.4.3 不規(guī)則大小寫 40
4.4.4 不一致分隔符 40
4.4.5 不規(guī)則NULL格式 40
4.4.6 非法字符 40
4.4.7 奇怪或不兼容的時間類型 40
4.4.8 操作系統(tǒng)不兼容 41
4.4.9 錯誤的軟件版本 41
4.5 格式化腳本實例 42
4.6 正則表達(dá)式 43
4.6.1 正則表達(dá)式語法 43
4.7 數(shù)據(jù)科學(xué)戰(zhàn)壕中的生活 46
4.8 術(shù)語 47
第5章 可視化與簡單度量 48
5.1 關(guān)于Python語言可視化工具的說明 48
5.2 示例代碼 49
5.3 餅圖 49
5.4 柱狀圖 51
5.5 直方圖 53
5.6 均值、標(biāo)準(zhǔn)差、中位數(shù)和分位數(shù) 55
5.7 箱式圖 56
5.8 散點(diǎn)圖 57
5.9 對數(shù)軸線散點(diǎn)圖 59
5.10 散點(diǎn)陣列圖 61
5.11 熱力圖 62
5.12 相關(guān)性 63
5.13 Anscombe四重奏與數(shù)字極限 64
5.14 時間序列 65
5.15 延伸閱讀 68
5.16 術(shù)語 69
第6章 機(jī)器學(xué)習(xí)概要 70
6.1 歷史背景 71
6.2 監(jiān)督與無監(jiān)督學(xué)習(xí) 71
6.3 訓(xùn)練數(shù)據(jù)、測試數(shù)據(jù)和過擬合 72
6.4 延伸閱讀 72
6.5 術(shù)語 73
第7章 插曲:特征提取思路 74
7.1 標(biāo)準(zhǔn)特征 74
7.2 有關(guān)分組的特征 75
7.3 預(yù)覽更復(fù)雜的特征 75
7.4 定義待預(yù)測功能 75
第8章 機(jī)器學(xué)習(xí)分類 77
8.1 什么是分類器,用它可以做什么 77
8.2 一些實用的關(guān)注點(diǎn) 78
8.3 二分類與多分類 78
8.4 實例腳本 79
8.5 特定分類器 80
8.5.1 決策樹 80
8.5.2 隨機(jī)森林 82
8.5.3 集成分類器 83
8.5.4 支持向量機(jī) 83
8.5.5 邏輯回歸 85
8.5.6 回歸 87
8.5.7 樸素貝葉斯分類器 88
8.5.8 神經(jīng)網(wǎng)絡(luò) 89
8.6 評價分類器 90
8.6.1 混淆矩陣 91
8.6.2 ROC曲線 91
8.6.3 ROC曲線之下的面積 93
8.7 選擇分類閾值 93
8.7.1 其他性能測量 94
8.7.2 升力曲線 94
8.8 延伸閱讀 94
8.9 術(shù)語 95
第9章 技術(shù)交流與文檔化 96
9.1 指導(dǎo)原則 96
9.1.1 了解觀眾 96
9.1.2 說明其重要性 97
9.1.3 使其具體化 97
9.1.4 一張圖片勝過千言萬語 98
9.1.5 不要對自己的技術(shù)知識感到驕傲 98
9.1.6 使其看起來美觀 98
9.2 幻燈片 99
9.2.1 C.R.A.P設(shè)計原則 99
9.2.2 一些提示和經(jīng)驗法則 101
9.3 書面報告 102
9.4 演示:有用的技巧 103
9.5 代碼文檔 104
9.6 延伸閱讀 105
9.7 術(shù)語 105
第Ⅱ部分 仍需要知道的事情
第10章 無監(jiān)督學(xué)習(xí):聚類與降維 108
10.1 維數(shù)災(zāi)難 108
10.2 實例:“特征臉”降維 110
10.3 主成分分析與因子分析 112
10.4 Skree圖與維度的理解 113
10.5 因子分析 114
10.6 PCA的局限性 114
10.7 聚類 115
10.7.1 聚類簇的實際評估 115
10.7.2 k均值聚類 116
10.7.3 高斯混合模型 117
10.7.4 合成聚類 118
10.7.5 聚類質(zhì)量評價 118
10.7.6 輪廓分?jǐn)?shù) 118
10.7.7 蘭德指數(shù)與調(diào)整蘭德指數(shù) 120
10.7.8 互信息 120
10.8 延伸閱讀 121
10.9 術(shù)語 121
第11章 回歸 122
11.1 實例:預(yù)測糖尿病進(jìn)展 122
11.2 最小二乘法 125
11.3 非線性曲線擬合 126
11.4 擬合度:R2和相關(guān)度 127
11.5 殘差相關(guān)性 128
11.6 線性回歸 128
11.7 LASSO回歸與特征選擇 130
11.8 延伸閱讀 131
11.9 術(shù)語 131
第12章 數(shù)據(jù)編碼與文件格式 132
12.1 典型的文件格式類別 132
12.1.1 文本文件 132
12.1.2 密集數(shù)組 133
12.1.3 程序相關(guān)的數(shù)據(jù)格式 133
12.1.4 數(shù)據(jù)壓縮和數(shù)據(jù)存檔 133
12.2 CSV文件 133
12.3 JSON文件 134
12.4 XML文件 136
12.5 HTML文件 138
12.6 Tar文件 139
12.7 GZip文件 140
12.8 Zip文件 140
12.9 圖像文件:柵格化、矢量化及壓縮 141
12.10 歸根到底都是字節(jié) 142
12.11 整型數(shù) 142
12.12 浮點(diǎn)數(shù) 143
12.13 文本數(shù)據(jù) 144
12.14 延伸閱讀 146
12.15 術(shù)語 146
第13章 大數(shù)據(jù) 147
13.1 什么是大數(shù)據(jù) 147
13.2 Hadoop:文件系統(tǒng)與處理器 148
13.3 使用HDFS 149
13.4 PySpark腳本實例 150
13.5 Spark概述 151
13.6 Spark操作 152
13.7 運(yùn)行PySpark的兩種方式 154
13.8 Spark配置 154
13.9 底層的細(xì)節(jié) 155
13.10 Spark提示與技巧 156
13.11 MapReduce范例 157
13.12 性能考量 158
13.13 延伸閱讀 159
13.14 術(shù)語 160
第14章 數(shù)據(jù)庫 161
14.1 關(guān)系數(shù)據(jù)庫及MySQL 162
14.1.1 基本查詢和分組 162
14.1.2 連接 164
14.1.3 嵌套查詢 165
14.1.4 運(yùn)行MySQL并管理數(shù)據(jù)庫 166
14.2 鍵-值存儲 167
14.3 寬列存儲 167
14.4 文檔存儲 168
14.4.1 MongoDB 168
14.5 延伸閱讀 170
14.6 術(shù)語 170
第15章 軟件工程最佳實踐 172
15.1 編碼風(fēng)格 172
15.2 數(shù)據(jù)科學(xué)家的版本控制和Git 174
15.3 代碼測試 176
15.3.1 單元測試 176
15.3.2 集成測試 178
15.4 測試驅(qū)動的開發(fā) 178
15.5 敏捷方法 179
15.6 延伸閱讀 179
15.7 術(shù)語 179
第16章 自然語言處理 181
16.1 是否真正需要NLP 181
16.2 兩種流派的對壘:語言學(xué)與統(tǒng)計學(xué) 181
16.3 實例:股市文章的論點(diǎn)分析 182
16.4 軟件和數(shù)據(jù)庫 184
16.5 詞語切分 184
16.6 核心概念:詞袋 184
16.7 單詞加權(quán):TF-IDF 185
16.8 n-gram 186
16.9 停用詞 186
16.10 詞形還原與詞干提取 187
16.11 同義詞 187
16.12 詞性標(biāo)注 188
16.13 常見問題 188
16.13.1 搜索 188
16.13.2 情感分析 189
16.13.3 實體識別與主題建模 189
16.14 高級NLP:語法樹、知識以及理解 190
16.15 延伸閱讀 191
16.16 術(shù)語 191
第17章 時間序列分析 192
17.1 實例:預(yù)測維基百科頁面的訪問量 192
17.2 典型的工作流 196
17.3 時間序列與時間戳事件 196
17.4 插值的重采樣 196
17.5 信號平滑 199
17.6 對數(shù)變換及其他變換 199
17.7 趨勢和周期性 199
17.8 窗口化 200
17.9 簡單特征的頭腦風(fēng)暴 201
17.10 更好的特征:向量形式的時間序列 201
17.11 傅里葉分析:有時候非常有效 202
17.12 上下文中的時間序列:全套特征 204
17.13 延伸閱讀 205
17.14 術(shù)語 205
第18章 概率 206
18.1 拋硬幣:伯努利隨機(jī)變量 206
18.2 擲飛鏢:均勻隨機(jī)變量 207
18.3 均勻分布和偽隨機(jī)數(shù) 208
18.4 非離散型、非連續(xù)型隨機(jī)變量 209
18.5 記號、期望和標(biāo)準(zhǔn)偏差 210
18.6 獨(dú)立概率、邊際概率和條件概率 211
18.7 重尾的理解 212
18.8 二項分布 214
18.9 泊松分布 214
18.10 正態(tài)分布 215
18.11 多元高斯分布 216
18.12 指數(shù)分布 217
18.13 對數(shù)正態(tài)分布 218
18.14 熵 218
18.15 延伸閱讀 220
18.16 術(shù)語 220
第19章 統(tǒng)計學(xué) 222
19.1 統(tǒng)計學(xué)透視 222
19.2 貝葉斯與頻率論:使用上的權(quán)衡及不同學(xué)派 223
19.3 假設(shè)檢驗:關(guān)鍵思想和范例 223
19.4 多重假設(shè)檢驗 225
19.5 參數(shù)估計 226
19.6 假設(shè)檢驗:t檢驗 227
19.7 置信區(qū)間 229
19.8 貝葉斯統(tǒng)計學(xué) 230
19.9 樸素貝葉斯統(tǒng)計學(xué) 231
19.10 貝葉斯網(wǎng)絡(luò) 232
19.11 先驗概率選擇:最大熵或領(lǐng)域知識 232
19.12 延伸閱讀 233
19.13 術(shù)語 233
第20章 編程語言概念 235
20.1 編程范式 235
20.1.1 命令式 235
20.1.2 函數(shù)式 236
20.1.3 面向?qū)ο? 239
20.2 編譯與解釋 242
20.3 類型系統(tǒng) 244
20.3.1 靜態(tài)類型與動態(tài)類型 244
20.3.2 強(qiáng)類型與弱類型 244
20.4 延伸閱讀 245
20.5 術(shù)語 245
第21章 性能和計算機(jī)內(nèi)存 247
21.1 示例腳本 247
21.2 算法性能與Big-O符號 249
21.3 一些經(jīng)典問題:排序列表與二分查找 250
21.4 攤銷性能與平均性能 253
21.5 兩個原則:減小開銷和管理內(nèi)存 255
21.6 性能技巧:在適用的情況下使用數(shù)字化庫 256
21.7 性能技巧:刪除不需要的大型結(jié)構(gòu) 257
21.8 性能技巧:盡可能使用內(nèi)置函數(shù) 257
21.9 性能技巧:避免不必要的函數(shù)調(diào)用 258
21.10 性能技巧:避免創(chuàng)建大型新對象 258
21.11 延伸閱讀 259
21.12 術(shù)語 259
第Ⅲ部分 專業(yè)或高級主題
第22章 計算機(jī)內(nèi)存和數(shù)據(jù)結(jié)構(gòu) 262
22.1 虛擬內(nèi)存、堆棧和堆結(jié)構(gòu) 262
22.2 C程序?qū)嵗?262
22.3 內(nèi)存數(shù)據(jù)類型和數(shù)組 263
22.4 結(jié)構(gòu) 264
22.5 指針、堆棧和堆 265
22.6 關(guān)鍵數(shù)據(jù)結(jié)構(gòu) 269
22.6.1 字符串 269
22.6.2 可調(diào)數(shù)組 269
22.6.3 哈希表 271
22.6.4 鏈表 272
22.6.5 二叉搜索樹 273
22.7 延伸閱讀 274
22.8 術(shù)語 274
第23章 最大似然估計和最優(yōu)化 276
23.1 最大似然估計 276
23.2 一個簡單實例:直線擬合 277
23.3 另一個例子:邏輯回歸 278
23.4 最優(yōu)化 279
23.5 梯度下降和凸優(yōu)化 280
23.6 凸優(yōu)化 283
23.7 隨機(jī)梯度下降 284
23.8 延伸閱讀 284
23.9 術(shù)語 284
第24章 高級分類器 286
24.1 函數(shù)庫注解 286
24.2 基礎(chǔ)深度學(xué)習(xí) 287
24.3 卷積神經(jīng)網(wǎng)絡(luò) 289
24.4 不同類型的層以及張量到底是什么 290
24.5 實例:MNIST手寫數(shù)據(jù)集 291
24.6 遞歸神經(jīng)網(wǎng)絡(luò) 293
24.7 貝葉斯網(wǎng)絡(luò) 294
24.8 訓(xùn)練和預(yù)測 295
24.9 馬爾可夫鏈蒙特卡洛理論 296
24.10 PyMC實例 297
24.11 延伸閱讀 299
24.12 術(shù)語 299
第25章 隨機(jī)建模 300
25.1 馬爾可夫鏈 300
25.2 兩類馬爾可夫鏈、兩類問題 302
25.3 馬爾可夫鏈蒙特卡洛 303
25.4 隱馬爾可夫模型和Viterbi算法 304
25.5 維特比算法 305
25.6 隨機(jī)游走 307
25.7 布朗運(yùn)動 308
25.8 ARIMA模型 308
25.9 連續(xù)時間馬爾可夫過程 309
25.10 泊松過程 310
25.11 延伸閱讀 310
25.12 術(shù)語 311
告別語: 數(shù)據(jù)科學(xué)家的未來 312