数据科学通过各种统计学和机器学习的技术与方法,将数据转换为有用的信息或知识。Julia是一种在数据科学领域逐渐流行起来的语言。
《Julia数据科学应用》会提出一系列在数据科学流程中常见的、有代表性的实际问题,并指导读者使用Julia去解决这些问题。全书共13章,涵盖了Julia基础知识、工作环境搭建、语言基础和高 级内容、数据科学应用、数据可视化、机器学习方法(包括无监督式学习方法和监督式学习方法)、图分析方法等重要的话题。附录部分给出了学习和使用Julia的一些有用的参考资料,还给出了各章的思考题的答案。
本书适合对数据科学的知识和应用方法感兴趣的读者阅读,特别适合有志于学习Julia并从事数据科学相关工作的人员学习参考。
目录
- 第 1章 Julia简介 1
- 1.1 Julia如何提高数据科学水平 2
- 1.1.1 数据科学工作流程 3
- 1.1.2 Julia被数据科学社区接受的过程 5
- 1.2 Julia 扩展 6
- 1.2.1 包的质量 6
- 1.2.2 找到新的包 6
- 1.3 关于本书 7
- 第 2章 建立数据科学工作环境 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 要使用的数据集 21
- 2.4.1 数据集描述 21
- 2.4.2 下载数据集 23
- 2.4.3 加载数据集 24
- 2.5 在Julia中实现一个简单的机器学习算法 25
- 2.5.1 算法描述 26
- 2.5.2 算法实现 27
- 2.5.3 算法测试 30
- 2.6 将工作区保存到数据文件 32
- 2.6.1 将数据保存为分隔值文件 32
- 2.6.2 将数据保存为Julia数据文件 33
- 2.6.3 将数据保存为文本文件 35
- 2.7 帮助 36
- 2.8 小结 36
- 2.9 思考题 37
- 第3章 Julia入门 39
- 3.1 数据类型 39
- 3.2 数组 42
- 3.2.1 数组基础 42
- 3.2.2 在数组中引用多个元素 43
- 3.2.3 多维数组 44
- 3.3 字典 44
- 3.4 基本命令与函数 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 数学函数 48
- 3.5.1 round() 48
- 3.5.2 rand()和randn() 49
- 3.5.3 sum() 52
- 3.5.4 mean() 53
- 3.6 数组与字典函数 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 其他函数 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 运算符、循环语句与条件语句 62
- 3.8.1 运算符 63
- 3.8.2 循环语句 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 正则表达式函数 70
- 4.2 定制函数 74
- 4.2.1 函数结构 74
- 4.2.2 匿名函数 75
- 4.2.3 多分派 75
- 4.2.4 函数示例 76
- 4.3 实现简单算法 77
- 4.4 创建完整解决方案 79
- 4.5 小结 83
- 4.6 思考题 84
- 第5章 Julia数据科学应用概述 85
- 5.1 数据科学工作流程 85
- 5.2 数据工程 88
- 5.2.1 数据准备 88
- 5.2.2 数据探索 90
- 5.2.3 数据表示 92
- 5.3 数据建模 93
- 5.3.1 数据发现 93
- 5.3.2 数据学习 94
- 5.4 信息萃取 96
- 5.4.1 数据产品创建 96
- 5.4.2 知识、交付物与可视化产品 97
- 5.5 保持开放型思维 99
- 5.6 在实际问题中应用数据科学流程 99
- 5.6.1 数据准备 99
- 5.6.2 数据探索 100
- 5.6.3 数据表示 101
- 5.6.4 数据发现 101
- 5.6.5 数据学习 102
- 5.6.6 数据产品创建 102
- 5.6.7 知识、交付物和可视化产品 103
- 5.7 小结 103
- 5.8 思考题 105
- 第6章 Julia数据工程 106
- 6.1 数据框 106
- 6.1.1 创建并填充数据框 107
- 6.1.2 数据框基础 108
- 6.1.3 引用数据框中的特定变量 109
- 6.1.4 探索数据框 109
- 6.1.5 筛选数据框 110
- 6.1.6 在数据框变量上应用函数 111
- 6.1.7 使用数据框进行工作 111
- 6.1.8 修改数据框 113
- 6.1.9 对数据框的内容进行排序 113
- 6.1.10 数据框的一些补充建议 114
- 6.2 导入与导出数据 115
- 6.2.1 使用.json数据文件 115
- 6.2.2 保存数据到.json文件 115
- 6.2.3 将数据文件加载到数据框 116
- 6.2.4 保存数据框到数据文件 116
- 6.3 数据清洗 117
- 6.3.1 数值型数据的清洗 117
- 6.3.2 文本型数据的清洗 118
- 6.4 数据格式化与转换 119
- 6.4.1 数值型数据的格式化 119
- 6.4.2 文本数据的格式化 119
- 6.4.3 数据类型的重要性 120
- 6.5 对数值型数据进行转换 120
- 6.5.1 标准化 121
- 6.5.2 离散化(分箱)与二值化 122
- 6.5.3 二值变量转换为连续型变量(仅对于二值分类问题) 123
- 6.5.4 文本数据转换 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章 探索数据集 130
- 7.1 倾听数据 130
- 本章要使用的扩展包 131
- 7.2 计算基本统计量和相关性 131
- 7.2.1 变量概要 133
- 7.2.2 变量之间的相关性 134
- 7.2.3 两个变量之间的可比性 136
- 7.3 绘制统计图 136
- 7.3.1 图形语法 137
- 7.3.2 为可视化准备数据 137
- 7.3.3 箱线图 138
- 7.3.4 条形图 138
- 7.3.5 折线图 139
- 7.3.6 散点图 140
- 7.3.7 直方图 143
- 7.3.8 导出统计图到文件 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 统计检验附加说明 151
- 7.7 案例研究:探索OnlineNewsPopularity数据集 151
- 7.7.1 变量统计 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章 构建数据空间 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 特征评价与选择方法的优缺点 170
- 8.3 其他数据降维技术 170
- 8.3.1 其他降维方法概述 171
- 8.3.2 何时使用高 级降维方法 172
- 8.4 小结 172
- 8.5 思考题 173
- 第9章 数据抽样与结果评价 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章 无监督式机器学习 193
- 10.1 无监督式学习基础知识 193
- 10.1.1 聚类的类型 194
- 10.1.2 距离的度量 195
- 10.2 使用K-均值算法分组数据 196
- 10.2.1 使用Julia实现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 处理高维数据 205
- 10.6.2 标准化 205
- 10.6.3 可视化建议 205
- 10.7 小结 206
- 10.8 思考题 207
- 第 11章 监督式机器学习 209
- 11.1 决策树 210
- 11.1.1 在Julia中使用决策树 211
- 11.1.2 关于决策树的一些建议 214
- 11.2 回归树 214
- 11.2.1 在Julia中实现回归树 215
- 11.2.2 关于回归树的一些建议 216
- 11.3 随机森林 216
- 11.3.1 在Julia中使用随机森林进行分类 216
- 11.3.2 在Julia中使用随机森林进行回归 218
- 11.3.3 关于随机森林的一些建议 219
- 11.4 基本神经网络 220
- 11.4.1 在Julia中使用神经网络 221
- 11.4.2 关于神经网络的一些建议 223
- 11.5 极限学习机 224
- 11.5.1 在Julia中使用ELM 224
- 11.5.2 关于ELM的一些建议 226
- 11.6 用于回归分析的统计模型 227
- 11.6.1 在Julia中使用统计回归 227
- 11.6.2 关于统计回归的一些建议 230
- 11.7 其他监督式学习系统 230
- 11.7.1 提升树 230
- 11.7.2 支持向量机 230
- 11.7.3 直推式系统 231
- 11.7.4 深度学习系统 232
- 11.7.5 贝叶斯网络 232
- 11.8 小结 233
- 11.9 本章思考题 235
- 第 12章 图分析 236
- 12.1 图的重要性 237
- 12.2 定制数据集 239
- 12.3 图的统计量 240
- 12.4 环的检测 242
- 用Julia检测环 243
- 12.5 连通子图 244
- 12.6 团 245
- 12.7 图的路径 246
- 12.8 生成树 248
- 12.8.1 在Julia中实现MST 249
- 12.8.2 用文件保存和加载图 250
- 12.9 Julia在图分析中的作用 251
- 12.10 小结 252
- 12.11 思考题 254
- 第 13章 更上一层楼 255
- 13.1 Julia社区 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 在数据科学中使用Julia的思考 260
- 13.3.1 不断提高Julia编程水平 260
- 13.3.2 贡献Julia项目 261
- 13.3.3 Julia在数据科学中的未来 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