第1章 大数据世界中的数据科学 1
1.1 数据科学和大数据的好处和用途 2
1.2 数据种类 3
1.2.1 结构化数据 3
1.2.2 非结构化数据 3
1.2.3 自然语言数据 4
1.2.4 计算机数据 4
1.2.5 图类数据 5
1.2.6 音频、视频和图像数据 5
1.2.7 流数据 6
1.3 数据科学过程 6
1.3.1 设置研究目标 6
1.3.2 检索数据 6
1.3.3 数据准备 7
1.3.4 数据探索 7
1.3.5 数据建模 7
1.3.6 展示与自动化 7
1.4 大数据生态系统与数据科学 7
1.4.1 分布式文件系统 7
1.4.2 分布式编程框架 9
1.4.3 数据集成框架 9
1.4.4 机器学习框架 9
1.4.5 NoSQL数据库 10
1.4.6 调度工具 10
1.4.7 基准测试工具 10
1.4.8 系统部署 11
1.4.9 服务开发 11
1.4.10 安全 11
1.5 Hadoop工作示例介绍 11
1.6 本章小结 16
第2章 数据科学过程 17
2.1 数据科学过程概述 17
2.2 步骤1:定义研究目标并创立项目章程 19
2.2.1 了解研究的目标和背景 20
2.2.2 创立项目章程 20
2.3 步骤2:检索数据 20
2.3.1 从存储在公司内部的数据开始 21
2.3.2 不要害怕去购买数据 21
2.3.3 检查数据质量以预防问题发生 22
2.4 步骤3:数据的清洗、整合以及转换 22
2.4.1 数据清洗 22
2.4.2 尽可能早地修正错误 27
2.4.3 从不同的数据源整合数据 28
2.4.4 数据转换 30
2.5 步骤4:探索性数据分析 32
2.6 步骤5:构建模型 35
2.6.1 模型与变量的选择 35
2.6.2 模型执行 36
2.6.3 模型诊断与模型比较 39
2.7 步骤6:展示结果并在其上搭建应用程序 40
2.8 本章小结 40
第3章 机器学习 42
3.1 什么是机器学习,为什么需要关注它 42
3.1.1 机器学习在数据科学中的应用 43
3.1.2 机器学习在数据科学过程中的使用 43
3.1.3 Python工具在机器学习中的应用 44
3.2 建模过程 45
3.2.1 特征工程以及模型选取 46
3.2.2 模型的训练 47
3.2.3 模型的验证 47
3.2.4 预测新的观测值 48
3.3 机器学习的类型 48
3.3.1 有监督学习 48
3.3.2 无监督学习 53
3.4 半监督学习 60
3.5 本章小结 61
第4章 单机上处理大数据 63
4.1 大数据处理过程中遇到的难题 63
4.2 处理巨量数据的通用技术 64
4.2.1 选择合适的算法 65
4.2.2 选择合适的数据结构 71
4.2.3 选择合适的工具 73
4.3 处理大数据集的通用编程技巧 75
4.3.1 不必重复发明轮子 75
4.3.2 充分利用硬件 76
4.3.3 减少计算需求 76
4.4 案例研究1:预测恶意URL 77
4.4.1 步骤1:确立研究目标 77
4.4.2 步骤2:获取URL数据 77
4.4.3 步骤4:数据探索 78
4.4.4 步骤5:建模 79
4.5 案例研究2:在数据库中建立一个推荐系统 80
4.5.1 所需的工具及技术 80
4.5.2 步骤1:研究问题 82
4.5.3 步骤3:数据准备 82
4.5.4 步骤5:建模 86
4.5.5 步骤6:展示与自动化 86
4.6 本章小结 88
第5章 大数据世界的第一步 89
5.1 数据分布存储和框架处理 89
5.1.1 Hadoop:存储和处理大数据集的框架 90
5.1.2 Spark:取代MapReduce以获得更好的性能 92
5.2 案例研究:借贷的风险评估 93
5.2.1 步骤1:研究目标 94
5.2.2 步骤2:数据检索 95
5.2.3 步骤3:数据准备 98
5.2.4 步骤4(数据探索)和步骤6(报告形成) 101
5.3 本章小结 111
第6章 了解NoSQL 112
6.1 NoSQL简介 114
6.1.1 ACID:关系型数据库核心原则 114
6.1.2 CAP理论:多节点数据库的问题 115
6.1.3 NoSQL数据库的BASE原则 116
6.1.4 NoSQL数据库的种类 117
6.2 案例研究:这是什么疾病 123
6.2.1 步骤1:设置研究目标 124
6.2.2 步骤2和步骤3:数据检索与数据准备 124
6.2.3 步骤4:数据探索 131
6.2.4 再回到步骤3:为描述疾病概况做数据准备 137
6.2.5 再回到步骤4:为描述疾病概况做数据探索 140
6.2.6 步骤6:展示与自动化 140
6.3 本章小结 141
第7章 图数据库的兴起 143
7.1 互联数据及图数据库概述 143
7.2 图数据库Neo4j概述 146
7.3 数据互联案例:食谱推荐引擎 152
7.3.1 步骤1:设置研究目标 153
7.3.2 步骤2:数据检索 154
7.3.3 步骤3:数据准备 155
7.3.4 步骤4:数据探索 157
7.3.5 步骤5:数据建模 159
7.3.6 步骤6:数据展示 162
7.4 本章小结 162
第8章 文本挖掘和文本分析 164
8.1 现实世界中的文本挖掘 165
8.2 文本挖掘技术 169
8.2.1 词袋 169
8.2.2 词干提取和词形还原 170
8.2.3 决策树分类器 171
8.3 案例研究:Reddit帖子分类 173
8.3.1 自然语言工具包 173
8.3.2 数据科学过程综述及第1步:研究目标 175
8.3.3 第2步:数据检索 175
8.3.4 第3步:数据准备 178
8.3.5 步骤4:数据探索 180
8.3.6 再回到步骤3:数据准备的调整 182
8.3.7 步骤5:数据分析 185
8.3.8 步骤6:展示与自动化 188
8.4 本章小结 189
第9章 面向终端用户的数据可视化 191
9.1 数据可视化选项 192
9.2 Crossfilter——JavaScriptMapReduce库 194
9.2.1 安装 195
9.2.2 利用Crossfilter筛选药品数据集 198
9.3 用dc.js创建一个交互式控制面板 201
9.4 控制面板开发工具 205
9.5 本章小结 207
附录A 搭建Elasticsearch 209
附录B 搭建Neo4j 214
附录C 安装MySQL服务器 217
附录D 在虚拟环境下搭建Anaconda 220