數(shù)據(jù)科學通過各種統(tǒng)計學和機器學習的技術與方法,將數(shù)據(jù)轉(zhuǎn)換為有用的信息或知識。Julia是一種在數(shù)據(jù)科學領域逐漸流行起來的語言。
《Julia數(shù)據(jù)科學應用》會提出一系列在數(shù)據(jù)科學流程中常見的、有代表性的實際問題,并指導讀者使用Julia去解決這些問題。全書共13章,涵蓋了Julia基礎知識、工作環(huán)境搭建、語言基礎和高 級內(nèi)容、數(shù)據(jù)科學應用、數(shù)據(jù)可視化、機器學習方法(包括無監(jiān)督式學習方法和監(jiān)督式學習方法)、圖分析方法等重要的話題。附錄部分給出了學習和使用Julia的一些有用的參考資料,還給出了各章的思考題的答案。
本書適合對數(shù)據(jù)科學的知識和應用方法感興趣的讀者閱讀,特別適合有志于學習Julia并從事數(shù)據(jù)科學相關工作的人員學習參考。
Zacharias Voulgaris博士出生于希臘雅典。他就讀于克里特理工大學生產(chǎn)工程與管理專業(yè),后轉(zhuǎn)而學習計算機科學,在倫敦城市大學獲得了信息系統(tǒng)與技術的碩士學位,此后,又研究數(shù)據(jù)科學,在倫敦大學獲得了機器學習博士學位。他曾經(jīng)在佐治亞理工大學工作并任研究員,他還擔任過SEO經(jīng)理、數(shù)據(jù)科學家,還做過Microsoft公司的程序經(jīng)理,負責Bing的數(shù)據(jù)分析流程。除了數(shù)據(jù)科學,他對新技術、文學和音樂抱有濃厚的興趣。
第 1章 Julia簡介 1
1.1 Julia如何提高數(shù)據(jù)科學水平 2
1.1.1 數(shù)據(jù)科學工作流程 3
1.1.2 Julia被數(shù)據(jù)科學社區(qū)接受的過程 5
1.2 Julia 擴展 6
1.2.1 包的質(zhì)量 6
1.2.2 找到新的包 6
1.3 關于本書 7
第 2章 建立數(shù)據(jù)科學工作環(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擴展包 13
2.2.1 找到并選擇擴展包 13
2.2.2 安裝擴展包 14
2.2.3 使用擴展包 15
2.2.4 破解擴展包 16
2.3 IJulia基礎 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中實現(xiàn)一個簡單的機器學習算法 25
2.5.1 算法描述 26
2.5.2 算法實現(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 小結 36
2.9 思考題 37
第3章 Julia入門 39
3.1 數(shù)據(jù)類型 39
3.2 數(shù)組 42
3.2.1 數(shù)組基礎 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ù)學函數(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 運算符、循環(huán)語句與條件語句 62
3.8.1 運算符 63
3.8.2 循環(huán)語句 64
3.8.3 break命令 66
3.9 小結 66
3.10 思考題 67
第4章 Julia進階 68
4.1 字符串處理 68
4.1.1 split() 69
4.1.2 join() 70
4.1.3 正則表達式函數(shù) 70
4.2 定制函數(shù) 74
4.2.1 函數(shù)結構 74
4.2.2 匿名函數(shù) 75
4.2.3 多分派 75
4.2.4 函數(shù)示例 76
4.3 實現(xiàn)簡單算法 77
4.4 創(chuàng)建完整解決方案 79
4.5 小結 83
4.6 思考題 84
第5章 Julia數(shù)據(jù)科學應用概述 85
5.1 數(shù)據(jù)科學工作流程 85
5.2 數(shù)據(jù)工程 88
5.2.1 數(shù)據(jù)準備 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ù)學習 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ù)據(jù)科學流程 99
5.6.1 數(shù)據(jù)準備 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ù)學習 102
5.6.6 數(shù)據(jù)產(chǎn)品創(chuàng)建 102
5.6.7 知識、交付物和可視化產(chǎn)品 103
5.7 小結 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ù)框基礎 108
6.1.3 引用數(shù)據(jù)框中的特定變量 109
6.1.4 探索數(shù)據(jù)框 109
6.1.5 篩選數(shù)據(jù)框 110
6.1.6 在數(shù)據(jù)框變量上應用函數(shù) 111
6.1.7 使用數(shù)據(jù)框進行工作 111
6.1.8 修改數(shù)據(jù)框 113
6.1.9 對數(shù)據(jù)框的內(nèi)容進行排序 113
6.1.10 數(shù)據(jù)框的一些補充建議 114
6.2 導入與導出數(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ù)進行轉(zhuǎn)換 120
6.5.1 標準化 121
6.5.2 離散化(分箱)與二值化 122
6.5.3 二值變量轉(zhuǎn)換為連續(xù)型變量(僅對于二值分類問題) 123
6.5.4 文本數(shù)據(jù)轉(zhuǎn)換 124
6.5.5 大小寫標準化 124
6.5.6 向量化 124
6.6 初步的特征評價 126
6.6.1 回歸 126
6.6.2 分類 126
6.6.3 特征評價補充說明 127
6.7 小結 128
6.8 思考題 129
第7章 探索數(shù)據(jù)集 130
7.1 傾聽數(shù)據(jù) 130
本章要使用的擴展包 131
7.2 計算基本統(tǒng)計量和相關性 131
7.2.1 變量概要 133
7.2.2 變量之間的相關性 134
7.2.3 兩個變量之間的可比性 136
7.3 繪制統(tǒng)計圖 136
7.3.1 圖形語法 137
7.3.2 為可視化準備數(shù)據(jù) 137
7.3.3 箱線圖 138
7.3.4 條形圖 138
7.3.5 折線圖 139
7.3.6 散點圖 140
7.3.7 直方圖 143
7.3.8 導出統(tǒng)計圖到文件 144
7.4 假設檢驗 145
7.4.1 檢驗的基礎知識 145
7.4.2 錯誤類型 146
7.4.3 靈敏度與特異度 146
7.4.4 顯著性水平與檢驗力 146
7.4.5 KRUSKAL-WALLIS檢驗 147
7.4.6 T-檢驗 147
7.4.7 卡方檢驗 149
7.5 其他檢驗 151
7.6 統(tǒng)計檢驗附加說明 151
7.7 案例研究:探索OnlineNewsPopularity數(shù)據(jù)集 151
7.7.1 變量統(tǒng)計 152
7.7.2 可視化 153
7.7.3 假設 154
7.7.4 奇妙的T-SNE方法 155
7.7.5 結論 156
7.8 小結 156
7.9 思考題 159
第8章 構建數(shù)據(jù)空間 160
8.1 主成分分析 161
8.1.1 在Julia中使用PCA 162
8.1.2 獨立成分分析:主成分分析的常用替代方法 164
8.2 特征評價與選擇 165
8.2.1 方法論概述 165
8.2.2 在Julia中使用余弦相似度進行特征評價與選擇 166
8.2.3 在Julia中使用DID進行特征評價與選擇 168
8.2.4 特征評價與選擇方法的優(yōu)缺點 170
8.3 其他數(shù)據(jù)降維技術 170
8.3.1 其他降維方法概述 171
8.3.2 何時使用高 級降維方法 172
8.4 小結 172
8.5 思考題 173
第9章 數(shù)據(jù)抽樣與結果評價 175
9.1 抽樣技術 175
9.1.1 基本抽樣 176
9.1.2 分層抽樣 176
9.2 分類問題的性能指標 177
9.2.1 混淆矩陣 177
9.2.2 準確度 178
9.2.3 精 確度與召回度 180
9.2.4 F1指標 181
9.2.5 誤判成本 181
9.2.6 受試者工作特征(ROC)曲線及相關指標 182
9.3 回歸問題的性能指標 185
9.3.1 MSE及其變種RMSE 186
9.3.2 SSE 187
9.3.3 其他指標 187
9.4 K折交叉驗證(KFCV) 188
9.4.1 在Julia中應用KFCV 189
9.4.2 KFCV小提示 189
9.5 小結 190
9.6 思考題 192
第 10章 無監(jiān)督式機器學習 193
10.1 無監(jiān)督式學習基礎知識 193
10.1.1 聚類的類型 194
10.1.2 距離的度量 195
10.2 使用K-均值算法分組數(shù)據(jù) 196
10.2.1 使用Julia實現(xiàn)K-均值聚類 197
10.2.2 對K-均值算法的使用建議 198
10.3 密度和DBSCAN算法 199
10.3.1 DBSCAN算法 199
10.3.2 在Julia中應用DBSCAN 200
10.4 層次聚類 201
10.4.1 在Julia中使用層次聚類 201
10.4.2 何時使用層次聚類 203
10.5 聚類的驗證方式 203
10.5.1 Silhouettes 203
10.5.2 關于聚類驗證的一些建議 204
10.6 關于有效進行聚類的一些建議 204
10.6.1 處理高維數(shù)據(jù) 205
10.6.2 標準化 205
10.6.3 可視化建議 205
10.7 小結 206
10.8 思考題 207
第 11章 監(jiān)督式機器學習 209
11.1 決策樹 210
11.1.1 在Julia中使用決策樹 211
11.1.2 關于決策樹的一些建議 214
11.2 回歸樹 214
11.2.1 在Julia中實現(xiàn)回歸樹 215
11.2.2 關于回歸樹的一些建議 216
11.3 隨機森林 216
11.3.1 在Julia中使用隨機森林進行分類 216
11.3.2 在Julia中使用隨機森林進行回歸 218
11.3.3 關于隨機森林的一些建議 219
11.4 基本神經(jīng)網(wǎng)絡 220
11.4.1 在Julia中使用神經(jīng)網(wǎng)絡 221
11.4.2 關于神經(jīng)網(wǎng)絡的一些建議 223
11.5 極限學習機 224
11.5.1 在Julia中使用ELM 224
11.5.2 關于ELM的一些建議 226
11.6 用于回歸分析的統(tǒng)計模型 227
11.6.1 在Julia中使用統(tǒng)計回歸 227
11.6.2 關于統(tǒng)計回歸的一些建議 230
11.7 其他監(jiān)督式學習系統(tǒng) 230
11.7.1 提升樹 230
11.7.2 支持向量機 230
11.7.3 直推式系統(tǒng) 231
11.7.4 深度學習系統(tǒng) 232
11.7.5 貝葉斯網(wǎng)絡 232
11.8 小結 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 團 245
12.7 圖的路徑 246
12.8 生成樹 248
12.8.1 在Julia中實現(xiàn)MST 249
12.8.2 用文件保存和加載圖 250
12.9 Julia在圖分析中的作用 251
12.10 小結 252
12.11 思考題 254
第 13章 更上一層樓 255
13.1 Julia社區(qū) 255
13.1.1 與其他Julia用戶進行交流 255
13.1.2 代碼庫 256
13.1.3 視頻文件 256
13.1.4 新聞 257
13.2 學以致用 257
13.2.1 從這些特征開始 258
13.2.2 關于這個項目的一些思考 259
13.3 在數(shù)據(jù)科學中使用Julia的思考 260
13.3.1 不斷提高Julia編程水平 260
13.3.2 貢獻Julia項目 261
13.3.3 Julia在數(shù)據(jù)科學中的未來 262
附錄A 下載安裝Julia與IJulia 264
附錄B 與Julia相關的一些常用站點 266
附錄C 本書所用的擴展包 268
附錄D Julia與其他平臺的集成 269
D.1 Julia與R的集成 269
D.1.1 在R中運行Julia腳本 269
D.1.2 在Julia中運行R腳本 270
D.2 Julia與Python的集成 270
D.2.1 在Python中運行Julia腳本 270
D.2.2 在Julia中運行Python腳本 271
附錄E Julia中的并行處理 272
附錄F 各章思考題答案 275