數(shù)據(jù)科學(xué)通過(guò)各種統(tǒng)計(jì)學(xué)和機(jī)器學(xué)習(xí)的技術(shù)與方法,將數(shù)據(jù)轉(zhuǎn)換為有用的信息或知識(shí)。Julia是一種在數(shù)據(jù)科學(xué)領(lǐng)域逐漸流行起來(lái)的語(yǔ)言。
《Julia數(shù)據(jù)科學(xué)應(yīng)用》會(huì)提出一系列在數(shù)據(jù)科學(xué)流程中常見的、有代表性的實(shí)際問(wèn)題,并指導(dǎo)讀者使用Julia去解決這些問(wèn)題。全書共13章,涵蓋了Julia基礎(chǔ)知識(shí)、工作環(huán)境搭建、語(yǔ)言基礎(chǔ)和高 級(jí)內(nèi)容、數(shù)據(jù)科學(xué)應(yīng)用、數(shù)據(jù)可視化、機(jī)器學(xué)習(xí)方法(包括無(wú)監(jiān)督式學(xué)習(xí)方法和監(jiān)督式學(xué)習(xí)方法)、圖分析方法等重要的話題。附錄部分給出了學(xué)習(xí)和使用Julia的一些有用的參考資料,還給出了各章的思考題的答案。
本書適合對(duì)數(shù)據(jù)科學(xué)的知識(shí)和應(yīng)用方法感興趣的讀者閱讀,特別適合有志于學(xué)習(xí)Julia并從事數(shù)據(jù)科學(xué)相關(guān)工作的人員學(xué)習(xí)參考。
★ 數(shù)據(jù)科學(xué)流程概覽,并通過(guò)Julia實(shí)現(xiàn)一個(gè)示例,說(shuō)明了其中的關(guān)鍵點(diǎn)。
★ Julia IDE的選擇。
★ 程序結(jié)構(gòu)與函數(shù)。
★ 數(shù)據(jù)工程中的任務(wù),如數(shù)據(jù)導(dǎo)入、數(shù)據(jù)清理、數(shù)據(jù)格式化和數(shù)據(jù)存儲(chǔ),以及如何執(zhí)行數(shù)據(jù)預(yù)處理。
★ 數(shù)據(jù)可視化,以及一些簡(jiǎn)單但非常強(qiáng)大的用來(lái)進(jìn)行數(shù)據(jù)探索的方法。
★ 數(shù)據(jù)降維和特征評(píng)價(jià)。
★ 各種機(jī)器學(xué)習(xí)方法,從非監(jiān)督式學(xué)習(xí)(不同類型的聚類方法)到監(jiān)督式學(xué)習(xí)(決策樹、隨機(jī)森林、
基礎(chǔ)神經(jīng)網(wǎng)絡(luò)、回歸樹和極限學(xué)習(xí)機(jī))。
★ 圖分析,包括找出不同實(shí)體之間的聯(lián)系以及如何對(duì)其進(jìn)行挖掘以獲取有用的知識(shí)。
本書主要內(nèi)容包括:
本書的目標(biāo)是教你如何使用Julia語(yǔ)言來(lái)應(yīng)對(duì)現(xiàn)實(shí)世界中數(shù)據(jù)科學(xué)的艱巨挑戰(zhàn)。在介紹了Julia對(duì)于數(shù)據(jù)科學(xué)社區(qū)的重要性和若干數(shù)據(jù)科學(xué)基本準(zhǔn)則之后,本書講解了Julia基礎(chǔ)知識(shí),包括如何安裝Julia及其功能強(qiáng)大的程序庫(kù)。本書通過(guò)豐富的示例展示了如何使用Julia命令、數(shù)據(jù)集和函數(shù)。
本書介紹并描述了專用的腳本和軟件包。針對(duì)在數(shù)據(jù)科學(xué)流程中經(jīng)常會(huì)遇到的問(wèn)題,本書提供了有代表性的實(shí)用示例,并引導(dǎo)你通過(guò)Julia使用公開的數(shù)據(jù)集來(lái)解決這些問(wèn)題。在很多情況下,使用現(xiàn)成的軟件包和內(nèi)置函數(shù)就可以完成任務(wù)。
本書每一章都包括一些思考題和練習(xí),來(lái)幫助你加強(qiáng)學(xué)習(xí)效果,指導(dǎo)你使用Julia從頭開始創(chuàng)建一個(gè)數(shù)據(jù)科學(xué)應(yīng)用。
Zacharias Voulgaris博士出生于希臘雅典。他就讀于克里特理工大學(xué)生產(chǎn)工程與管理專業(yè),后轉(zhuǎn)而學(xué)習(xí)計(jì)算機(jī)科學(xué),在倫敦城市大學(xué)獲得了信息系統(tǒng)與技術(shù)的碩士學(xué)位,此后,又研究數(shù)據(jù)科學(xué),在倫敦大學(xué)獲得了機(jī)器學(xué)習(xí)博士學(xué)位。他曾經(jīng)在佐治亞理工大學(xué)工作并任研究員,他還擔(dān)任過(guò)SEO經(jīng)理、數(shù)據(jù)科學(xué)家,還做過(guò)Microsoft公司的程序經(jīng)理,負(fù)責(zé)Bing的數(shù)據(jù)分析流程。除了數(shù)據(jù)科學(xué),他對(duì)新技術(shù)、文學(xué)和音樂(lè)抱有濃厚的興趣。
第 1章 Julia簡(jiǎn)介 1
1.1 Julia如何提高數(shù)據(jù)科學(xué)水平 2
1.1.1 數(shù)據(jù)科學(xué)工作流程 3
1.1.2 Julia被數(shù)據(jù)科學(xué)社區(qū)接受的過(guò)程 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)一個(gè)簡(jiǎn)單的機(jī)器學(xué)習(xí)算法 25
2.5.1 算法描述 26
2.5.2 算法實(shí)現(xiàn) 27
2.5.3 算法測(cè)試 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ù)組中引用多個(gè)元素 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 條件語(yǔ)句 59
3.7.3 string() 61
3.7.4 map() 62
3.7.5 versioin() 62
3.8 運(yùn)算符、循環(huán)語(yǔ)句與條件語(yǔ)句 62
3.8.1 運(yùn)算符 63
3.8.2 循環(huán)語(yǔ)句 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)簡(jiǎ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 知識(shí)、交付物與可視化產(chǎn)品 97
5.5 保持開放型思維 99
5.6 在實(shí)際問(wèn)題中應(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 知識(shí)、交付物和可視化產(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 對(duì)數(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 對(duì)數(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ù)型變量(僅對(duì)于二值分類問(wèn)題) 123
6.5.4 文本數(shù)據(jù)轉(zhuǎn)換 124
6.5.5 大小寫標(biāo)準(zhǔn)化 124
6.5.6 向量化 124
6.6 初步的特征評(píng)價(jià) 126
6.6.1 回歸 126
6.6.2 分類 126
6.6.3 特征評(píng)價(jià)補(bǔ)充說(shuō)明 127
6.7 小結(jié) 128
6.8 思考題 129
第7章 探索數(shù)據(jù)集 130
7.1 傾聽數(shù)據(jù) 130
本章要使用的擴(kuò)展包 131
7.2 計(jì)算基本統(tǒng)計(jì)量和相關(guān)性 131
7.2.1 變量概要 133
7.2.2 變量之間的相關(guān)性 134
7.2.3 兩個(gè)變量之間的可比性 136
7.3 繪制統(tǒng)計(jì)圖 136
7.3.1 圖形語(yǔ)法 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)計(jì)圖到文件 144
7.4 假設(shè)檢驗(yàn) 145
7.4.1 檢驗(yàn)的基礎(chǔ)知識(shí) 145
7.4.2 錯(cuò)誤類型 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)計(jì)檢驗(yàn)附加說(shuō)明 151
7.7 案例研究:探索OnlineNewsPopularity數(shù)據(jù)集 151
7.7.1 變量統(tǒng)計(jì) 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 特征評(píng)價(jià)與選擇 165
8.2.1 方法論概述 165
8.2.2 在Julia中使用余弦相似度進(jìn)行特征評(píng)價(jià)與選擇 166
8.2.3 在Julia中使用DID進(jìn)行特征評(píng)價(jià)與選擇 168
8.2.4 特征評(píng)價(jià)與選擇方法的優(yōu)缺點(diǎn) 170
8.3 其他數(shù)據(jù)降維技術(shù) 170
8.3.1 其他降維方法概述 171
8.3.2 何時(shí)使用高 級(jí)降維方法 172
8.4 小結(jié) 172
8.5 思考題 173
第9章 數(shù)據(jù)抽樣與結(jié)果評(píng)價(jià) 175
9.1 抽樣技術(shù) 175
9.1.1 基本抽樣 176
9.1.2 分層抽樣 176
9.2 分類問(wèn)題的性能指標(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 回歸問(wèn)題的性能指標(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章 無(wú)監(jiān)督式機(jī)器學(xué)習(xí) 193
10.1 無(wú)監(jiān)督式學(xué)習(xí)基礎(chǔ)知識(shí) 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 對(duì)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 何時(shí)使用層次聚類 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)計(jì)模型 227
11.6.1 在Julia中使用統(tǒng)計(jì)回歸 227
11.6.2 關(guān)于統(tǒng)計(jì)回歸的一些建議 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)計(jì)量 240
12.4 環(huán)的檢測(cè) 242
用Julia檢測(cè)環(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 代碼庫(kù) 256
13.1.3 視頻文件 256
13.1.4 新聞 257
13.2 學(xué)以致用 257
13.2.1 從這些特征開始 258
13.2.2 關(guān)于這個(gè)項(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é)中的未來(lái) 262
附錄A 下載安裝Julia與IJulia 264
附錄B 與Julia相關(guān)的一些常用站點(diǎn) 266
附錄C 本書所用的擴(kuò)展包 268
附錄D Julia與其他平臺(tái)的集成 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