具体描述
【编辑推荐】
国内首部系统介绍Clojure数据分析技术的著作,内容全面而深入,为高效利用Clojure进行数据分析提供最佳指导
通过大量典型Clojure数据分析案例全面解析Clojure数据分析的各种技术细节、方法和最佳实践,实战性强
【内容简介】
资深数据分析专家多年经验结晶,内容全面而深入,用清晰易懂的语言阐释使用Clojure进行数据分析的各种技术细节、方法和最佳实践。本书实战性强,包含大量典型Clojure数据分析案例,为快速掌握并灵活运用Clojure技术提供最佳指导。
本书共11章:第1章讨论如何从CSV文件、网页和链接语义网数据等不同类型数据源读入数据;第2章提供标准化数据、修正拼写错误和使用大数据集的策略和实现;第3章介绍Clojure的并发特性和如何通过这些特性简化程序;第4章讲解使用Clojure的并行处理功能提高数据处理速度;第5章讨论使用Cascalog处理Hadoop和Cascading库中的海量分布式数据;第6章介绍使用Incanter数据集的基础知识;第7章介绍使用Incanter进行统计数据分析的过程和方法;第8章讲解如何配置Clojure,使其与Mathematica和R交互;第9章主要介绍聚类、分类和Weka等更多的高级机器学习技术;第10章展示如何在Incanter中生成图和进行可视化;第11章讲解网页图表的创建,并包含利用强大的D3可视化库的一些方法。
作者简介
Eric Rochester 资深数据分析专家,精通Python、Java、R、C#等多种编程语言,有丰富的编程经验。目前,他重点关注函数式编程语言,包括Clojure和Haskell。他现任职于弗吉尼亚大学图书馆的学者实验室,负责帮助人文学科和本科生实现数字信息方面的研究计划。
目录信息
关于技术审校者
第1章 导入分析数据 1
1.1 引言 1
1.2 新建项目 1
1.3 将CSV数据读入Incanter数据集 2
1.4 将JSON数据读入Incanter数据集 4
1.5 使用Incanter读入Excel数据 5
1.6 从JDBC数据库读取数据 6
1.7 将XML数据读入Incanter数据集 9
1.8 从网页表中抓取数据 11
1.9 从网页中抓取文本数据 15
1.10 读取RDF数据 17
1.11 使用SPARQL读取RDF数据 20
1.12 整合不同格式的数据 24
第2章 清洗和校验数据 29
2.1 引言 29
2.2 使用正则表达式清洗数据 30
2.3 使用同义词映射保持一致性 31
2.4 识别并去除重复数据 33
2.5 标准化数字格式 35
2.6 调整词频值的度量 36
2.7 标准化日期和时间 38
2.8 大数据集的延迟处理 40
2.9 大数据集抽样 42
2.10 修正拼写错误 43
2.11 解析自定义数据格式 46
2.12 使用Valip校验数据 49
第3章 使用并发编程管理复杂度 51
3.1 引言 51
3.2 使用STM管理程序复杂度 52
3.3 使用agent管理程序复杂度 55
3.4 使用commute获得更好的性能 57
3.5 将agent和STM结合使用 58
3.6 使用ensure维护一致性 60
3.7 将安全的副作用引入STM中 63
3.8 使用validator维护数据一致性 65
3.9 使用watcher追踪处理过程 68
3.10 使用watcher调试并发程序 70
3.11 从agent中错误恢复 71
3.12 使用sized queue管理输入 73
第4章 使用并行编程提高性能 74
4.1 引言 74
4.2 使用pmap并行处理 75
4.3 使用Incanter并行处理 77
4.4 将蒙特卡罗模拟进行划分使pmap性能提升 79
4.5 使用模拟退火算法最优化分块大小 83
4.6 使用reducers并行处理 86
4.7 使用reducers生成在线统计 89
4.8 使用OpenCL和Calx驾驭你的GPU 91
4.9 使用类型提示 94
4.10 使用Criterium制定基准 96
第5章 使用Cascalog进行分布式数据处理 100
5.1 引言 100
5.2 使用Cascalog和Hadoop分布式处理 101
5.3 使用Cascalog查询数据 104
5.4 使用Apache HDFS分布数据 105
5.5 使用Cascalog解析CSV文件 108
5.6 使用Cascalog执行复杂查询 110
5.7 使用Cascalog聚合数据 112
5.8 定义新Cascalog操作符 113
5.9 组成Cascalog查询 116
5.10 处理Cascalog工作流中的错误 118
5.11 使用Cascalog转换数据 119
5.12 使用Pallet在云上执行Cascalog查询 120
第6章 使用Incanter数据集 126
6.1 引言 126
6.2 加载Incanter样例数据集 126
6.3 将Clojure数据结构加载到数据集中 127
6.4 使用view交互式查看数据集 129
6.5 将数据集转换为矩阵 130
6.6 在Incanter中使用infix公式 132
6.7 使用$选择列 133
6.8 使用$选择行 135
6.9 使用$where过滤数据集 136
6.10 使用$group-by对数据分组 138
6.11 将数据集另存为CSV和JSON 139
6.12 使用$join进行多数据集投影 141
第7章 使用Incanter准备并执行统计数据分析 144
7.1 引言 144
7.2 使用$rollup生成汇总统计 144
7.3 通过变量差别展示变化 146
7.4 调整变量以简化变量关系 148
7.5 使用Incanter Zoo处理时间序列数据 150
7.6 平滑数据以降低噪声 152
7.7 使用bootstrapping验证抽样统计 154
7.8 线性关系建模 156
7.9 非线性关系建模 158
7.10 多峰贝叶斯分布建模 162
7.11 使用本福德定律找出数据错误 165
第8章 使用Mathematica和R 167
8.1 引言 167
8.2 在Mac OS X和Linux系统中配置Mathematica与Clojuratica的交互环境 168
8.3 在Windows系统中配置Mathematica与Clojuratica的交互环境 170
8.4 在Clojuratica中调用Mathematica函数 172
8.5 在Clojuratica中向Mathematica发送矩阵 173
8.6 在Clojuratica中运行Mathematica脚本 174
8.7 从Mathematica中创建函数 175
8.8 在Mathematica中并行处理函数 176
8.9 配置R与Clojure交互 177
8.10 在Clojure中调用R的函数 179
8.11 将向量传入R 180
8.12 在Clojure中执行R文件 181
8.13 在Clojure中使用R绘图 183
第9章 聚类、分类和使用Weka 185
9.1 引言 185
9.2 将CSV和ARFF文件加载到Weka中 185
9.3 在Weka数据集中对列进行过滤和重命名 187
9.4 使用K-means聚类发现成组数据 190
9.5 在Weka中寻找层次聚类结构 195
9.6 在Incanter中使用SOM聚类 197
9.7 使用决策树分类数据 199
9.8 使用朴素贝叶斯分类器分类数据 201
9.9 使用支持向量机分类数据 203
9.10 使用Apriori算法发现数据中的关联 205
第10章 使用Incanter绘图 208
10.1 引言 208
10.2 使用Incanter创建散点图 209
10.3 使用Incanter创建柱形图 211
10.4 在柱形图中绘制非数值型数据 212
10.5 使用Incanter创建直方图 213
10.6 使用Incanter绘制函数 215
10.7 为Incanter图表加入方程式 216
10.8 为散点图加入直线 217
10.9 使用JFreeChart定制图表 218
10.10 将Incanter图保存为PNG格式 220
10.11 使用PCA绘制多维数据 221
10.12 使用Incanter创建动态图表 223
第11章 创建网页图表 225
11.1 引言 225
11.2 使用Ring和Compojure提供数据 226
11.3 使用Hiccup创建HTML网页 229
11.4 配置和使用ClojureScript 231
11.5 用NVD3创建散点图 234
11.6 用NVD3创建条形图 239
11.7 用NVD3创建直方图 242
11.8 使用力向布局进行图像可视化 244
11.9 用D3创建交互式可视化 248
· · · · · · (收起)
读后感
用户评价
这本书的封面设计很吸引眼球,色彩搭配既专业又不失活力,让人在众多技术书籍中一眼就能注意到它。拿到手里,纸张的质感也相当不错,印刷清晰,装订牢固,即便是经常翻阅,也不会轻易出现散页的情况。我尤其欣赏它在排版上的用心,代码块的格式统一规范,注释清晰易懂,即便是对于初次接触函数式编程概念的读者来说,也不会感到过于晦涩难懂。内容组织上,作者显然是花了大量精力进行结构化的梳理,从基础概念的引入到复杂算法的应用,层层递进,逻辑严密。初读时,我被它流畅的叙事风格所吸引,仿佛不是在阅读一本技术手册,而是在跟随一位经验丰富的导师进行一次深入的实战演练。书中提供的案例都贴近实际业务场景,避免了纯理论的枯燥,使得学习过程充满了解决实际问题的成就感。这种全方位的优秀体验,从视觉到触觉,再到阅读体验本身,都体现了出版方和作者对于知识传播质量的极致追求,这对于一本深度技术书籍来说,是极其宝贵的品质。
这本书最大的价值,或许在于它对“数据即代码”这一核心理念的深入诠释。它不仅是一本关于特定编程语言的指南,更是一部关于如何系统化、函数化地处理信息流的哲学著作。作者在行文间流露出的对编程简洁性和数学严谨性的推崇,潜移默化地影响着读者的编码习惯。我发现自己开始更加注重数据的不可变性,并倾向于使用更具声明性的方式来描述数据转换,而不是命令式的操作。书中对高级数据结构操作的讲解,比如如何利用序列(Sequence)的强大能力进行延迟计算和资源优化,让我对性能瓶颈有了全新的理解。对于那些不满足于仅仅“跑通”脚本,而是追求代码优雅性、稳定性和可扩展性的分析师和工程师而言,这本书无疑是一剂强心针。它不仅仅教会了你工具的使用,更重要的是,重塑了你对数据处理本质的认知,这才是真正能带来长期回报的学习投资。
我之前尝试过几本关于数据处理和函数式编程的入门书籍,但总感觉它们在深入探讨数据管道构建和惰性求值这些核心概念时,要么解释得过于抽象,要么缺乏足够的实战演练来巩固理解。然而,这本书完全避开了这些陷阱。它没有急于展示花哨的技巧,而是扎实地从 Clojure 的数据结构特性入手,耐心地解释了为什么这种结构在处理大规模、高维度数据集时具有天然的优势。我特别喜欢其中关于 Persistent Data Structures 的那一章,作者用非常巧妙的比喻,将原本看似复杂的内存管理和时间旅行调试能力讲解得如同庖丁解牛般清晰。书中不仅展示了如何使用库函数来完成任务,更重要的是,它教会了读者如何“像 Clojure 程序员一样思考”——如何利用递归、高阶函数和闭包来构建优雅、可复用的数据转换逻辑。这种思维模式的转变,比单纯学会几个命令要深刻得多,它让我在面对未知的分析挑战时,多了一套强大而灵活的工具箱。
对于有一定编程基础,但希望快速掌握一门能真正提升生产力的语言的开发者来说,这本书提供了一个极为高效的学习路径。它的内容组织并非按照传统教科书那样循规蹈矩,而是充满了实战的驱动力。每一章的理论讲解都紧密地围绕着一个具体的分析难题展开,例如时间序列的异常检测、复杂的聚合查询优化等。这种“问题导向”的学习方式极大地提高了我的学习效率,因为我总能立刻看到所学知识点在真实世界中的价值。此外,书中对标准库的挖掘深度令人印象深刻,许多强大的函数都被赋予了生动的应用场景,而不是仅仅停留在 API 参考手册的层面。读完这本书后,我感觉自己不再是被工具牵着鼻子走,而是真正掌握了驾驭数据流的主动权,能够更自信地去设计和实现那些在传统范式下会显得异常繁琐的数据处理流程。
坦率地说,我原本对使用 Lisp 方言进行严肃的数据分析工作持保留态度,总觉得它们在生态系统的成熟度和工具链的完善性上不如 Python 或 R 那样“开箱即用”。这本书彻底颠覆了我的看法。它展示了如何高效地集成现有的大数据工具,比如如何利用 Clojure 强大的互操作性(Interoperability)与 Java 生态系统进行无缝对接,这极大地拓宽了我们可以处理的数据源和计算资源的范围。书中对数据清洗和转换流程的描述,简直是一场艺术表演。它用极少的代码行数,完成了其他语言需要冗长循环和状态管理才能实现的功能,代码的可读性和可维护性达到了一个令人惊叹的高度。特别是关于如何构建可测试、无副作用的数据转换流水线那一节,简直是为我打开了一扇通往健壮生产级数据工程的大门。如果你的工作涉及到需要高可靠性和高并发处理的数据任务,这本书提供的视角是无价的。
简单应用型
简单应用型
随便翻了下~
随便翻了下~
简单应用型