數(shù)據(jù)科學(xué)通過各種統(tǒng)計學(xué)和機(jī)器學(xué)習(xí)的技術(shù)與方法,將數(shù)據(jù)轉(zhuǎn)換為有用的信息或知識。Julia是一種在數(shù)據(jù)科學(xué)領(lǐng)域逐漸流行起來的語言。
《Julia數(shù)據(jù)科學(xué)應(yīng)用》會提出一系列在數(shù)據(jù)科學(xué)流程中常見的、有代表性的實(shí)際問題,并指導(dǎo)讀者使用Julia去解決這些問題。全書共13章,涵蓋了Julia基礎(chǔ)知識、工作環(huán)境搭建、語言基礎(chǔ)和高 級內(nèi)容、數(shù)據(jù)科學(xué)應(yīng)用、數(shù)據(jù)可視化、機(jī)器學(xué)習(xí)方法(包括無監(jiān)督式學(xué)習(xí)方法和監(jiān)督式學(xué)習(xí)方法)、圖分析方法等重要的話題。附錄部分給出了學(xué)習(xí)和使用Julia的一些有用的參考資料,還給出了各章的思考題的答案。
本書適合對數(shù)據(jù)科學(xué)的知識和應(yīng)用方法感興趣的讀者閱讀,特別適合有志于學(xué)習(xí)Julia并從事數(shù)據(jù)科學(xué)相關(guān)工作的人員學(xué)習(xí)參考。
Zacharias Voulgaris博士出生于希臘雅典。他就讀于克里特理工大學(xué)生產(chǎn)工程與管理專業(yè),后轉(zhuǎn)而學(xué)習(xí)計算機(jī)科學(xué),在倫敦城市大學(xué)獲得了信息系統(tǒng)與技術(shù)的碩士學(xué)位,此后,又研究數(shù)據(jù)科學(xué),在倫敦大學(xué)獲得了機(jī)器學(xué)習(xí)博士學(xué)位。他曾經(jīng)在佐治亞理工大學(xué)工作并任研究員,他還擔(dān)任過SEO經(jīng)理、數(shù)據(jù)科學(xué)家,還做過Microsoft公司的程序經(jīng)理,負(fù)責(zé)Bing的數(shù)據(jù)分析流程。除了數(shù)據(jù)科學(xué),他對新技術(shù)、文學(xué)和音樂抱有濃厚的興趣。
第 1章 Julia簡介 1
1.1 Julia如何提高數(shù)據(jù)科學(xué)水平 2
1.1.1 數(shù)據(jù)科學(xué)工作流程 3
1.1.2 Julia被數(shù)據(jù)科學(xué)社區(qū)接受的過程 5
1.2 Julia 擴(kuò)展 6
1.2.1 包的質(zhì)量 6
1.2.2 找到新的包 6
1.3 關(guān)于本書 7
第 2章 建立數(shù)據(jù)科學(xué)工作環(huán)境 9
2.1 Julia IDE 9
2.1.1 Juno 10
2.1.2 IJulia 11
2.1.3 其他IDE 12
2.2 Julia擴(kuò)展包 13
2.2.1 找到并選擇擴(kuò)展包 13
2.2.2 安裝擴(kuò)展包 14
2.2.3 使用擴(kuò)展包 15
2.2.4 破解擴(kuò)展包 16
2.3 IJulia基礎(chǔ) 16
2.3.1 文件處理 16
2.3.2 在.jl文件中組織代碼 19
2.3.3 引用代碼 20
2.3.4 工作目錄 20
2.4 要使用的數(shù)據(jù)集 21
2.4.1 數(shù)據(jù)集描述 21
2.4.2 下載數(shù)據(jù)集 23
2.4.3 加載數(shù)據(jù)集 24
2.5 在Julia中實(shí)現(xiàn)一個簡單的機(jī)器學(xué)習(xí)算法 25
2.5.1 算法描述 26
2.5.2 算法實(shí)現(xiàn) 27
2.5.3 算法測試 30
2.6 將工作區(qū)保存到數(shù)據(jù)文件 32
2.6.1 將數(shù)據(jù)保存為分隔值文件 32
2.6.2 將數(shù)據(jù)保存為Julia數(shù)據(jù)文件 33
2.6.3 將數(shù)據(jù)保存為文本文件 35
2.7 幫助 36
2.8 小結(jié) 36
2.9 思考題 37
第3章 Julia入門 39
3.1 數(shù)據(jù)類型 39
3.2 數(shù)組 42
3.2.1 數(shù)組基礎(chǔ) 42
3.2.2 在數(shù)組中引用多個元素 43
3.2.3 多維數(shù)組 44
3.3 字典 44
3.4 基本命令與函數(shù) 45
3.4.1 print()和println() 46
3.4.2 typemax()和typemin() 46
3.4.3 collect() 47
3.4.4 show() 47
3.4.5 linspace() 48
3.5 數(shù)學(xué)函數(shù) 48
3.5.1 round() 48
3.5.2 rand()和randn() 49
3.5.3 sum() 52
3.5.4 mean() 53
3.6 數(shù)組與字典函數(shù) 53
3.6.1 in 53
3.6.2 append!() 54
3.6.3 pop!() 54
3.6.4 push!() 55
3.6.5 splice!() 55
3.6.6 insert!() 56
3.6.7 sort()和sort!() 57
3.6.8 get() 57
3.6.9 keys()和values() 58
3.6.10 length()和size() 58
3.7 其他函數(shù) 59
3.7.1 time() 59
3.7.2 條件語句 59
3.7.3 string() 61
3.7.4 map() 62
3.7.5 versioin() 62
3.8 運(yùn)算符、循環(huán)語句與條件語句 62
3.8.1 運(yùn)算符 63
3.8.2 循環(huán)語句 64
3.8.3 break命令 66
3.9 小結(jié) 66
3.10 思考題 67
第4章 Julia進(jìn)階 68
4.1 字符串處理 68
4.1.1 split() 69
4.1.2 join() 70
4.1.3 正則表達(dá)式函數(shù) 70
4.2 定制函數(shù) 74
4.2.1 函數(shù)結(jié)構(gòu) 74
4.2.2 匿名函數(shù) 75
4.2.3 多分派 75
4.2.4 函數(shù)示例 76
4.3 實(shí)現(xiàn)簡單算法 77
4.4 創(chuàng)建完整解決方案 79
4.5 小結(jié) 83
4.6 思考題 84
第5章 Julia數(shù)據(jù)科學(xué)應(yīng)用概述 85
5.1 數(shù)據(jù)科學(xué)工作流程 85
5.2 數(shù)據(jù)工程 88
5.2.1 數(shù)據(jù)準(zhǔn)備 88
5.2.2 數(shù)據(jù)探索 90
5.2.3 數(shù)據(jù)表示 92
5.3 數(shù)據(jù)建模 93
5.3.1 數(shù)據(jù)發(fā)現(xiàn) 93
5.3.2 數(shù)據(jù)學(xué)習(xí) 94
5.4 信息萃取 96
5.4.1 數(shù)據(jù)產(chǎn)品創(chuàng)建 96
5.4.2 知識、交付物與可視化產(chǎn)品 97
5.5 保持開放型思維 99
5.6 在實(shí)際問題中應(yīng)用數(shù)據(jù)科學(xué)流程 99
5.6.1 數(shù)據(jù)準(zhǔn)備 99
5.6.2 數(shù)據(jù)探索 100
5.6.3 數(shù)據(jù)表示 101
5.6.4 數(shù)據(jù)發(fā)現(xiàn) 101
5.6.5 數(shù)據(jù)學(xué)習(xí) 102
5.6.6 數(shù)據(jù)產(chǎn)品創(chuàng)建 102
5.6.7 知識、交付物和可視化產(chǎn)品 103
5.7 小結(jié) 103
5.8 思考題 105
第6章 Julia數(shù)據(jù)工程 106
6.1 數(shù)據(jù)框 106
6.1.1 創(chuàng)建并填充數(shù)據(jù)框 107
6.1.2 數(shù)據(jù)框基礎(chǔ) 108
6.1.3 引用數(shù)據(jù)框中的特定變量 109
6.1.4 探索數(shù)據(jù)框 109
6.1.5 篩選數(shù)據(jù)框 110
6.1.6 在數(shù)據(jù)框變量上應(yīng)用函數(shù) 111
6.1.7 使用數(shù)據(jù)框進(jìn)行工作 111
6.1.8 修改數(shù)據(jù)框 113
6.1.9 對數(shù)據(jù)框的內(nèi)容進(jìn)行排序 113
6.1.10 數(shù)據(jù)框的一些補(bǔ)充建議 114
6.2 導(dǎo)入與導(dǎo)出數(shù)據(jù) 115
6.2.1 使用.json數(shù)據(jù)文件 115
6.2.2 保存數(shù)據(jù)到.json文件 115
6.2.3 將數(shù)據(jù)文件加載到數(shù)據(jù)框 116
6.2.4 保存數(shù)據(jù)框到數(shù)據(jù)文件 116
6.3 數(shù)據(jù)清洗 117
6.3.1 數(shù)值型數(shù)據(jù)的清洗 117
6.3.2 文本型數(shù)據(jù)的清洗 118
6.4 數(shù)據(jù)格式化與轉(zhuǎn)換 119
6.4.1 數(shù)值型數(shù)據(jù)的格式化 119
6.4.2 文本數(shù)據(jù)的格式化 119
6.4.3 數(shù)據(jù)類型的重要性 120
6.5 對數(shù)值型數(shù)據(jù)進(jìn)行轉(zhuǎn)換 120
6.5.1 標(biāo)準(zhǔn)化 121
6.5.2 離散化(分箱)與二值化 122
6.5.3 二值變量轉(zhuǎn)換為連續(xù)型變量(僅對于二值分類問題) 123
6.5.4 文本數(shù)據(jù)轉(zhuǎn)換 124
6.5.5 大小寫標(biāo)準(zhǔn)化 124
6.5.6 向量化 124
6.6 初步的特征評價 126
6.6.1 回歸 126
6.6.2 分類 126
6.6.3 特征評價補(bǔ)充說明 127
6.7 小結(jié) 128
6.8 思考題 129
第7章 探索數(shù)據(jù)集 130
7.1 傾聽數(shù)據(jù) 130
本章要使用的擴(kuò)展包 131
7.2 計算基本統(tǒng)計量和相關(guān)性 131
7.2.1 變量概要 133
7.2.2 變量之間的相關(guān)性 134
7.2.3 兩個變量之間的可比性 136
7.3 繪制統(tǒng)計圖 136
7.3.1 圖形語法 137
7.3.2 為可視化準(zhǔn)備數(shù)據(jù) 137
7.3.3 箱線圖 138
7.3.4 條形圖 138
7.3.5 折線圖 139
7.3.6 散點(diǎn)圖 140
7.3.7 直方圖 143
7.3.8 導(dǎo)出統(tǒng)計圖到文件 144
7.4 假設(shè)檢驗(yàn) 145
7.4.1 檢驗(yàn)的基礎(chǔ)知識 145
7.4.2 錯誤類型 146
7.4.3 靈敏度與特異度 146
7.4.4 顯著性水平與檢驗(yàn)力 146
7.4.5 KRUSKAL-WALLIS檢驗(yàn) 147
7.4.6 T-檢驗(yàn) 147
7.4.7 卡方檢驗(yàn) 149
7.5 其他檢驗(yàn) 151
7.6 統(tǒng)計檢驗(yàn)附加說明 151
7.7 案例研究:探索OnlineNewsPopularity數(shù)據(jù)集 151
7.7.1 變量統(tǒng)計 152
7.7.2 可視化 153
7.7.3 假設(shè) 154
7.7.4 奇妙的T-SNE方法 155
7.7.5 結(jié)論 156
7.8 小結(jié) 156
7.9 思考題 159
第8章 構(gòu)建數(shù)據(jù)空間 160
8.1 主成分分析 161
8.1.1 在Julia中使用PCA 162
8.1.2 獨(dú)立成分分析:主成分分析的常用替代方法 164
8.2 特征評價與選擇 165
8.2.1 方法論概述 165
8.2.2 在Julia中使用余弦相似度進(jìn)行特征評價與選擇 166
8.2.3 在Julia中使用DID進(jìn)行特征評價與選擇 168
8.2.4 特征評價與選擇方法的優(yōu)缺點(diǎn) 170
8.3 其他數(shù)據(jù)降維技術(shù) 170
8.3.1 其他降維方法概述 171
8.3.2 何時使用高 級降維方法 172
8.4 小結(jié) 172
8.5 思考題 173
第9章 數(shù)據(jù)抽樣與結(jié)果評價 175
9.1 抽樣技術(shù) 175
9.1.1 基本抽樣 176
9.1.2 分層抽樣 176
9.2 分類問題的性能指標(biāo) 177
9.2.1 混淆矩陣 177
9.2.2 準(zhǔn)確度 178
9.2.3 精 確度與召回度 180
9.2.4 F1指標(biāo) 181
9.2.5 誤判成本 181
9.2.6 受試者工作特征(ROC)曲線及相關(guān)指標(biāo) 182
9.3 回歸問題的性能指標(biāo) 185
9.3.1 MSE及其變種RMSE 186
9.3.2 SSE 187
9.3.3 其他指標(biāo) 187
9.4 K折交叉驗(yàn)證(KFCV) 188
9.4.1 在Julia中應(yīng)用KFCV 189
9.4.2 KFCV小提示 189
9.5 小結(jié) 190
9.6 思考題 192
第 10章 無監(jiān)督式機(jī)器學(xué)習(xí) 193
10.1 無監(jiān)督式學(xué)習(xí)基礎(chǔ)知識 193
10.1.1 聚類的類型 194
10.1.2 距離的度量 195
10.2 使用K-均值算法分組數(shù)據(jù) 196
10.2.1 使用Julia實(shí)現(xiàn)K-均值聚類 197
10.2.2 對K-均值算法的使用建議 198
10.3 密度和DBSCAN算法 199
10.3.1 DBSCAN算法 199
10.3.2 在Julia中應(yīng)用DBSCAN 200
10.4 層次聚類 201
10.4.1 在Julia中使用層次聚類 201
10.4.2 何時使用層次聚類 203
10.5 聚類的驗(yàn)證方式 203
10.5.1 Silhouettes 203
10.5.2 關(guān)于聚類驗(yàn)證的一些建議 204
10.6 關(guān)于有效進(jìn)行聚類的一些建議 204
10.6.1 處理高維數(shù)據(jù) 205
10.6.2 標(biāo)準(zhǔn)化 205
10.6.3 可視化建議 205
10.7 小結(jié) 206
10.8 思考題 207
第 11章 監(jiān)督式機(jī)器學(xué)習(xí) 209
11.1 決策樹 210
11.1.1 在Julia中使用決策樹 211
11.1.2 關(guān)于決策樹的一些建議 214
11.2 回歸樹 214
11.2.1 在Julia中實(shí)現(xiàn)回歸樹 215
11.2.2 關(guān)于回歸樹的一些建議 216
11.3 隨機(jī)森林 216
11.3.1 在Julia中使用隨機(jī)森林進(jìn)行分類 216
11.3.2 在Julia中使用隨機(jī)森林進(jìn)行回歸 218
11.3.3 關(guān)于隨機(jī)森林的一些建議 219
11.4 基本神經(jīng)網(wǎng)絡(luò) 220
11.4.1 在Julia中使用神經(jīng)網(wǎng)絡(luò) 221
11.4.2 關(guān)于神經(jīng)網(wǎng)絡(luò)的一些建議 223
11.5 極限學(xué)習(xí)機(jī) 224
11.5.1 在Julia中使用ELM 224
11.5.2 關(guān)于ELM的一些建議 226
11.6 用于回歸分析的統(tǒng)計模型 227
11.6.1 在Julia中使用統(tǒng)計回歸 227
11.6.2 關(guān)于統(tǒng)計回歸的一些建議 230
11.7 其他監(jiān)督式學(xué)習(xí)系統(tǒng) 230
11.7.1 提升樹 230
11.7.2 支持向量機(jī) 230
11.7.3 直推式系統(tǒng) 231
11.7.4 深度學(xué)習(xí)系統(tǒng) 232
11.7.5 貝葉斯網(wǎng)絡(luò) 232
11.8 小結(jié) 233
11.9 本章思考題 235
第 12章 圖分析 236
12.1 圖的重要性 237
12.2 定制數(shù)據(jù)集 239
12.3 圖的統(tǒng)計量 240
12.4 環(huán)的檢測 242
用Julia檢測環(huán) 243
12.5 連通子圖 244
12.6 團(tuán) 245
12.7 圖的路徑 246
12.8 生成樹 248
12.8.1 在Julia中實(shí)現(xiàn)MST 249
12.8.2 用文件保存和加載圖 250
12.9 Julia在圖分析中的作用 251
12.10 小結(jié) 252
12.11 思考題 254
第 13章 更上一層樓 255
13.1 Julia社區(qū) 255
13.1.1 與其他Julia用戶進(jìn)行交流 255
13.1.2 代碼庫 256
13.1.3 視頻文件 256
13.1.4 新聞 257
13.2 學(xué)以致用 257
13.2.1 從這些特征開始 258
13.2.2 關(guān)于這個項(xiàng)目的一些思考 259
13.3 在數(shù)據(jù)科學(xué)中使用Julia的思考 260
13.3.1 不斷提高Julia編程水平 260
13.3.2 貢獻(xiàn)Julia項(xiàng)目 261
13.3.3 Julia在數(shù)據(jù)科學(xué)中的未來 262
附錄A 下載安裝Julia與IJulia 264
附錄B 與Julia相關(guān)的一些常用站點(diǎn) 266
附錄C 本書所用的擴(kuò)展包 268
附錄D Julia與其他平臺的集成 269
D.1 Julia與R的集成 269
D.1.1 在R中運(yùn)行Julia腳本 269
D.1.2 在Julia中運(yùn)行R腳本 270
D.2 Julia與Python的集成 270
D.2.1 在Python中運(yùn)行Julia腳本 270
D.2.2 在Julia中運(yùn)行Python腳本 271
附錄E Julia中的并行處理 272
附錄F 各章思考題答案 275