内容简介
当今,数据科学已经成为一个热门的技术领域,例如数据处理、信息检索、机器学习、自然语言处理、数据可视化等都得到了广泛的应用和发展。而Java作为一门经典的编程语言,在数据科学领域也有着突出的表现。
本书旨在通过Java编程来引导读者更好地进行数据分析。本书包含11章内容,详细地介绍了数据科学导论、数据预处理、数据可视化、统计、关系数据库、回归分析、分类分析、聚类分析、推荐系统、NoSQL数据库以及Java大数据分析等重要主题。
本书适合想通过Java解决数据科学问题的读者,也适合数据科学领域的专业人士以及普通的Java开发者阅读。通过阅读本书,读者将能够对数据分析有更加深入的理解,并且掌握实用的数据分析技术。
作者介绍
约翰·哈伯德(John R. Hubbard)任教于宾夕法尼亚州和弗吉尼亚州的高校,从事计算机数据分析工作长达40余年。他拥有宾州州立大学的计算机科学硕士学位和密歇根大学的数学博士学位。目前,他在里士满大学担任数学和计算机科学的名誉教授,他在该校讲授数据结构、数据库系统、数值分析和大数据。 哈伯德博士出版了许多著作并发表过多篇论文,除了本书,他还出版过6本计算领域的著作。其中某些著作已经翻译为德文、法文、中文和其他5种语言。此外,他还是一位业余音乐家。
目录
- 第1章 数据科学导论 1
- 1.1 数据分析起源 1
- 1.2 科学方法 2
- 1.3 精算科学 2
- 1.4 蒸汽计算 3
- 1.5 一个惊人的例子 4
- 1.6 赫尔曼·何乐礼 5
- 1.7 ENIAC 6
- 1.8 VisiCalc 7
- 1.9 数据、信息和知识 7
- 1.10 为什么用Java 7
- 1.11 Java集成开发环境 8
- 1.12 小结 10
- 第2章 数据预处理 11
- 2.1 数据类型 11
- 2.2 变量 12
- 2.3 数据点和数据集 12
- 2.4 关系数据库表 13
- 2.4.1 关键字段 13
- 2.4.2 键—值对 14
- 2.5 哈希表 14
- 2.6 文件格式 16
- 2.6.1 微软Excel数据 18
- 2.6.2 XML和JSON数据 21
- 2.7 生成测试数据集 27
- 2.7.1 元数据 28
- 2.7.2 数据清洗 29
- 2.7.3 数据缩放 30
- 2.7.4 数据过滤 30
- 2.7.5 排序 33
- 2.7.6 合并 34
- 2.7.7 散列法 37
- 2.8 小结 38
- 第3章 数据可视化 39
- 3.1 表和图 40
- 3.1.1 散点图 40
- 3.1.2 线图 42
- 3.1.3 条形图 43
- 3.1.4 直方图 43
- 3.2 时间序列 45
- 3.3 Java实现 46
- 3.4 移动平均 49
- 3.5 数据排序 53
- 3.6 频率分布 55
- 3.7 正态分布 57
- 3.8 指数分布 59
- 3.9 Java示例 59
- 3.10 小结 61
- 第4章 统计 62
- 4.1 描述性统计量 62
- 4.2 随机抽样 65
- 4.3 随机变量 67
- 4.4 概率分布 67
- 4.5 累积分布 69
- 4.6 二项分布 70
- 4.7 多元分布 74
- 4.8 条件概率 76
- 4.9 概率事件的独立性 77
- 4.10 列联表 78
- 4.11 贝叶斯定理 78
- 4.12 协方差和相关 80
- 4.13 标准正态分布 82
- 4.14 中心极限定理 86
- 4.15 置信区间 87
- 4.16 假设检验 89
- 4.17 小结 91
- 第5章 关系数据库 92
- 5.1 关系数据模型 92
- 5.2 关系数据库 93
- 5.3 外键 94
- 5.4 关系数据库设计 95
- 5.4.1 创建数据库 96
- 5.4.2 SQL命令 100
- 5.4.3 数据插入数据库 104
- 5.4.4 数据库查询 106
- 5.4.5 SQL数据类型 107
- 5.4.6 JDBC 108
- 5.4.7 使用JDBC PreparedStatement 110
- 5.4.8 批处理 112
- 5.4.9 数据库视图 115
- 5.4.10 子查询 119
- 5.4.11 表索引 121
- 5.5 小结 123
- 第6章 回归分析 124
- 6.1 线性回归 124
- 6.1.1 Excel中的线性回归 125
- 6.1.2 计算回归系数 129
- 6.1.3 变异统计量 131
- 6.1.4 线性回归的Java实现 134
- 6.1.5 安斯库姆的四重奏 141
- 6.2 多项式回归 143
- 6.2.1 多元线性回归 147
- 6.2.2 Apache Commons的实现 150
- 6.2.3 曲线拟合 151
- 6.3 小结 153
- 第7章 分类分析 154
- 7.1 决策树 156
- 7.1.1 熵和它有什么关系? 157
- 7.1.2 ID3算法 160
- 7.1.3 Weka平台 171
- 7.1.4 数据的ARFF文件类型 171
- 7.1.5 Weka的Java实现 174
- 7.2 贝叶斯分类器 175
- 7.2.1 Weka的Java实现 177
- 7.2.2 支持向量机算法 181
- 7.3 逻辑回归 184
- 7.3.1 k近邻算法 189
- 7.3.2 模糊分类算法 193
- 7.4 小结 194
- 第8章 聚类分析 195
- 8.1 测量距离 195
- 8.2 维数灾难 200
- 8.3 层次聚类法 201
- 8.3.1 Weka实现 210
- 8.3.2 K-均值聚类 212
- 8.3.3 K-中心点聚类 218
- 8.3.4 仿射传播聚类 220
- 8.4 小结 228
- 第9章 推荐系统 229
- 9.1 效用矩阵 230
- 9.2 相似性度量 231
- 9.3 余弦相似性 233
- 9.4 一个简单的推荐系统 233
- 9.5 亚马逊项目对项目的协同过滤推荐 244
- 9.6 实现用户评分 250
- 9.7 大型稀疏矩阵 254
- 9.8 使用随机访问文件 257
- 9.9 Netflix大奖赛 260
- 9.10 小结 260
- 第10章 NoSQL数据库 261
- 10.1 映射数据结构 261
- 10.2 SQL与NoSQL 263
- 10.3 Mongo数据库系统 265
- 10.4 Library数据库 270
- 10.5 MongoDB的Java开发 273
- 10.6 MongoDB的地理空间数据库扩展 281
- 10.7 MongoDB中的索引 282
- 10.8 为什么选择NoSQL,为什么选择MongoDB 283
- 10.9 其他的NoSQL数据库系统 284
- 10.10 小结 284
- 第11章 Java大数据分析 285
- 11.1 扩展、数据分块和分片 285
- 11.2 谷歌的PageRank算法 286
- 11.3 谷歌的MapReduce框架 290
- 11.4 MapReduce的一些应用示例 291
- 11.5 “单词计数”示例 292
- 11.6 可扩展性 296
- 11.7 MapReduce的矩阵操作 297
- 11.8 MongoDB中的MapReduce 301
- 11.9 Apache Hadoop 302
- 11.10 Hadoop MapReduce 303
- 11.11 小结 304
- 附录 Java工具 305