Julia机器学习核心编程 人人可用的高性能科学计算
作者: (中国)朱红庆
出版时间: 2019年版
内容简介
本书以学会用好Julia语言进行软件编程为目标。深入浅出地讲解Julia语言的各项技术及实战技能。全书共12章。首先讲解了Julia语言的基本概念、编程模式、变量、数据类型、函数、类型与分派、程序控制结构等Julia语言的基础知识等;接着介绍了Julia的交互性与元编程、数值与科学计算、数据可视化和图像处理、数据库编程、Julia编程的核心内幕等Julia语言的核心运用技能等;在最后通过综合案例详细讲解Julia在游戏开发中和数据量化处理方面的应用。全书不仅融入了作者丰富的工作经验和多年的使用心得,还提供了大量来自工作现场的实例,具有较强的实战性和可操作性。
目录
第1章 深入理解JULIA语言的生态系统\t1
1.1 Julia为什么与众不同\t1
1.2 Julia的应用领域\t3
1.2.1 数据可视化和绘图\t3
1.2.2 构建、部署或嵌入代码\t4
1.2.3 与数据互动\t5
1.2.4 可扩展的机器学习\t5
1.2.5 丰富的科学计算生态系统\t6
1.2.6 并行和异构计算\t6
1.3 安装Julia软件\t7
1.3.1 在Ubuntu上安装Julia\t8
1.3.2 在Fedora /CentOS/RHEL等Linux发行版上安装Julia\t9
1.3.3 在Windows上安装Julia\t9
1.3.4 在Mac上安装Julia\t12
1.3.5 从源代码构建Julia\t12
1.3.6 了解Julia源代码的目录结构\t13
1.4 Julia在数据科学中的重要性\t13
1.5 使用REPL\t15
1.5.1 在Julia中使用帮助\t16
1.5.2 REPL中的图表\t19
1.6 使用Jupyter Notebook\t19
1.7 使用Juno编写Julia\t24
1.8 包管理\t26
1.8.1 使用Pkg.status()显示包状态\t27
1.8.2 使用Pkg.add()添加包\t28
1.8.3 安装未注册包\t29
1.8.4 使用Pkg.update()更新包\t30
1.8.5 METADATA\t30
1.8.6 开发包\t30
1.8.7 创建一个新的包\t30
1.9 多重分派\t31
1.10 LLVM和JIT\t32
1.11 本章小结\t33
第2章 使用JULIA进行快速编程\t34
?2.1 重温编程范式\t34
2.1.1 命令式编程范式\t35
2.1.2 逻辑式编程范式\t35
2.1.3 函数式编程范式\t36
2.1.4 面向对象的编程范式\t37
2.1.5 开始Julia REPL编程\t38
2.2 Julia中的变量\t39
2.2.1 命名约定\t41
2.2.2 整数、位、字节和布尔数据类型\t42
2.3 Julia中的浮点数\t44
2.4 浮点数的特殊函数\t46
2.4.1 浮点数操作\t47
2.4.2 任意精度的计算\t47
2.4.3 使用系数编写表达式\t48
2.5 Julia中的算术和逻辑运算\t49
2.5.1 执行算术运算\t49
2.5.2 执行按位运算\t49
2.5.3 自更新运算符\t50
2.5.4 运算符的优先级\t51
2.5.5 类型转换(数字)\t52
2.6 数组和矩阵\t52
2.6.1 Julia中的列表解析式\t54
2.6.2 矩阵运算\t56
2.6.3 多维数组操作\t59
2.6.4 稀疏矩阵\t60
2.7 DataFrames\t60
2.7.1 DataArray中的NA数据类型\t60
2.7.2 表格\t63
2.8 本章小结\t64
第3章 JULIA函数\t65
3.1 创建函数\t65
3.2 函数参数\t68
3.2.1 值传递和引用传递\t69
3.2.2 分享传递\t69
3.2.3 return关键字\t69
3.3 参数类型\t70
3.3.1 没有参数\t71
3.3.2 可变参数\t71
3.3.3 可选参数\t73
3.4 理解函数中变量的作用域\t74
3.5 嵌套函数\t77
3.6 匿名函数\t79
3.7 多重分派\t80
3.8 递归\t84
3.9 内建函数\t85
3.10 本章小结\t93
第4章 JULIA数据类型\t94
4.1 Julia类型系统\t94
4.1.1 静态类型语言与动态类型语言\t95
4.1.2 整数类型\t97
4.1.3 浮点类型\t98
4.1.4 Char类型\t98
4.1.5 字符串类型\t98
4.1.6 布尔类型\t99
4.2 类型转换\t99
4.3 用户有定义数据类型和复合类型\t105
4.4 内部构造器\t107
4.5 模块和接口\t110
4.5.1 将文件包含在模块中\t112
4.5.2 模块文件路径\t113
4.6 模块预编译\t114
4.7 多重调度解释\t115
4.8 本章小结\t118
第5章 JULIA循环结构\t119
5.1 分支结构\t119
5.1.1 简单条件语句\t120
5.1.2 if条件语句\t121
5.1.3 循环结构\t126
5.1.4 定义范围\t130
5.2 异常处理\t133
5.2.1 throw()\t135
5.2.2 error()\t138
5.2.3 try/catch/finally结构\t139
5.3 Julia中的tasks\t140
5.4 本章小结\t142
第6章 JULIA互操作性和元编程\t143
6.1 与操作系统交互\t143
6.1.1 文件系统操作\t144
6.1.2 I/O操作\t148
6.1.3 例证\t150
6.2 调用C和Python\t151
6.2.1 从Julia调用C\t151
6.2.2 从Julia调用Python\t153
6.3 表达式和宏\t155
6.4 元编程\t159
6.5 内置宏\t161
6.6 类型自省和反射能力\t167
6.6.1 类型自省\t167
6.6.2 反射能力\t168
6.7 本章小结\t169
第7章 用JULIA进行数值科学计算\t170
7.1 数据处理\t170
7.1.1 读取文本文件\t173
7.1.2 读取CSV格式文件\t176
7.1.3 使用DataFrames\t179
7.1.4 NA\t180
7.1.5 DataArray\t182
7.1.6 DataFrame\t183
7.2 线性代数与微分学\t184
7.2.1 线性代数\t184
7.2.2 微积分\t186
7.3 统计\t188
7.3.1 简单统计\t189
7.3.2 元编程\t191
7.3.3 使用DataFrames的基本统计信息\t192
7.3.4 使用Pandas\t193
7.3.5 高级统计\t194
7.4 优化\t201
7.4.1 JuMP\t201
7.4.2 Convex.jl\t203
7.5 本章小结\t205
第8章 JULIA数据可视化编程\t206
8.1 基本图表\t206
8.1.1 条形图\t209
8.1.2 饼图\t210
8.1.3 散点图\t212
8.1.4 直方图\t213
8.1.5 3D表面图表\t214
8.2 Vega库\t216
8.2.1 瀑布图\t219
8.2.2 Aster图\t220
8.2.3 等值线图\t221
8.2.4 面积图\t222
8.2.5 箱线图\t223
8.2.6 带状图\t224
8.2.7 散点图\t225
8.2.8 文字云\t226
8.3 Gadfly库\t227
8.3.1 使用绘图函数和Gadfly进行交互\t227
8.3.2 使用Gadfly绘制数据块\t230
8.4 本章小结\t233
第9章 JULIA数据库编程\t234
9.1 如何连接数据库\t234
9.2 关系数据库\t235
9.2.1 SQLite\t236
9.2.2 MySQL\t237
9.3 NoSQL数据库\t239
9.3.1 MongoDB\t240
9.4 REST简介\t242
9.4.1 JSON简介\t243
9.4.2 Web 框架\t247
9.5 本章小结\t252
第10章 JULIA的核心编程结构\t253
10.1 Julia在后台如何运行\t253
10.1.1 Femtolisp\t253
10.1.2 Julia核心API\t254
10.2 提升性能\t254
10.2.1 全局变量\t254
10.2.2 输入声明\t255
10.2.3 其他性能提升\t257
10.3 标准库\t258
10.4 理解LLVM和JIT\t261
10.5 并行计算\t263
10.5.1 注意全局变量\t265
10.5.2 并行运行循环\t267
10.6 TCP套接字和服务\t269
10.7 创建包\t271
10.7.1 包命名指南\t271
10.7.2 生成包\t272
10.8 本章小结\t273
第11章 创建WEB图书商务网站\t274
11.1 安装Genie\t274
11.2 使用Genie快速搭建服务器\t275
11.3 创建Genie应用程序项目\t279
11.4 Genie的MVC结构\t283
11.4.1 使用Controller\t283
11.4.2 HTML视图\t286
11.4.3 使用布局\t288
11.4.4 渲染JSON\t290
11.5 使用SearchLight模组访问数据库\t293
11.5.1 设置数据库链接\t294
11.5.2 使用SearchLight迁移来管理数据库架构\t295
11.5.3 创建图书的数据库表\t295
11.5.4 编写表迁移\t296
11.5.5 运行迁移\t297
11.6 定义模型\t297
11.6.1 使用模型\t299
11.6.2 自动加载数据库配置\t299
11.7 本章小结\t302
第12章 JULIA机器学习框架\t303
12.1 安装Flux框架\t303
12.2 模型构建基础\t304
12.2.1 简单的模型\t306
12.2.2 构建图层\t307
12.2.3 堆叠\t309
12.2.4 层助手\t310
12.3 循环模型\t310
12.4 状态模型\t313
12.5 序列\t314
12.6 梯度截断\t315
12.7 正则化\t316
12.7.1 基本层\t317
12.7.2 循环层\t318
12.7.3 激活功能\t320
12.7.4 规范化和正规化\t320
12.8 优化器\t321
12.9 优化参考\t323
12.10 机器学习训练\t323
12.10.1 损失函数\t323
12.10.2 数据集\t324
12.10.3 回调\t325
12.11 本章小结\t325