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