第Ⅰ部分 准备工作 3
第1章 理论 3
导论 3
定义 5
方法学 5
敏捷数据科学宣言 6
瀑布模型的问题 10
研究与应用开发 11
敏捷软件开发的问题 14
最终质量:偿还技术债 14
瀑布模型的拉力 15
数据科学过程 16
设置预期 17
数据科学团队的角色 18
认清机遇与挑战 19
适应变化 21
过程中的注意事项 23
代码审核与结对编程 25
敏捷开发的环境:提高生产效率 25
用大幅打印实现想法 27
第2章 敏捷工具 29
可伸缩性=易用性 30
敏捷数据科学之数据处理 30
搭建本地环境 32
配置要求 33
配置Vagrant 33
下载数据 33
搭建EC2环境 34
下载数据 38
下载并运行代码 38
下载代码 38
运行代码 38
Jupyter笔记本 39
工具集概览 39
敏捷开发工具栈的要求 39
Python 3 39
使用JSON行和Parquet序列化事件 42
收集数据 45
使用Spark进行数据处理 45
使用MongoDB发布数据 48
使用Elasticsearch搜索数据 50
使用Apache Kafka分发流数据 54
使用PySpark Streaming处理流数据 57
使用scikit-learn与Spark MLlib进行机器学习 58
使用Apache Airflow(孵化项目)进行调度 59
反思我们的工作流程 70
轻量级网络应用 70
展示数据 73
本章小结 75
第3章 数据 77
飞行航班数据 77
航班准点情况数据 78
OpenFlights数据库 79
天气数据 80
敏捷数据科学中的数据处理 81
结构化数据vs.半结构化数据 81
SQL vs.NoSQL 82
SQL 83
NoSQL与数据流编程 83
Spark:SQL+NoSQL 84
NoSQL中的表结构 84
数据序列化 85
动态结构表的特征提取与呈现 85
本章小结 86
第Ⅱ部分 攀登金字塔 89
第4章 记录收集与展示 89
整体使用 90
航班数据收集与序列化 91
航班记录处理与发布 94
把航班记录发布到MongoDB 95
在浏览器中展示航班记录 96
使用Flask和pymongo提供航班信息 97
使用Jinja2渲染HTML5页面 98
敏捷开发检查站 102
列出航班记录 103
使用MongoDB列出航班记录 103
数据分页 106
搜索航班数据 112
创建索引 112
发布航班数据到Elasticsearch 113
通过网页搜索航班数据 114
本章小结 117
第5章 使用图表进行数据可视化 119
图表质量:迭代至关重要 120
用发布/装饰模型伸缩数据库 120
一阶形式 121
二阶形式 122
三阶形式 123
选择一种形式 123
探究时令性 124
查询并展示航班总数 124
提取“金属”(飞机(实体)) 132
提取机尾编号 132
评估飞机记录 139
数据完善 140
网页表单逆向工程 140
收集机尾编号 142
自动化表单提交 143
从HTML中提取数据 144
评价完善后的数据 147
本章小结 148
第6章 通过报表探索数据 149
提取航空公司为实体 150
使用PySpark把航空公司定义为飞机的分组 150
在MongoDB中查询航空公司数据 151
在Flask中构建航空公司页面 151
添加回到航空公司页面的链接 152
创建一个包括所有航空公司的主页 153
整理半结构化数据的本体关系 154
改进航空公司页面 155
给航空公司代码加上名称 156
整合维基百科内容 158
把扩充过的航空公司表发布到MongoDB 159
在网页上扩充航空公司信息 160
调查飞机(实体) 162
SQL嵌套查询vs.数据流编程 164
不使用嵌套查询的数据流编程 164
Spark SQL中的子查询 165
创建飞机主页 166
在飞机页面上添加搜索 167
创建飞机制造商的条形图 172
对飞机制造商条形图进行迭代 174
实体解析:新一轮图表迭代 177
本章小结 183
第7章 进行预测 185
预测的作用 186
预测什么 186
预测分析导论 187
进行预测 187
探索航班延误 189
使用PySpark提取特征 193
使用scikit-learn构建回归模型 198
读取数据 198
数据采样 199
向量化处理结果 200
准备训练数据 201
向量化处理特征 201
稀疏矩阵与稠密矩阵 203
准备实验 204
训练模型 204
测试模型 205
小结 207
使用Spark MLlib构建分类器 208
使用专用结构加载训练数据 208
处理空值 210
用Route(路线)替代FlightNum(航班号) 210
对连续变量分桶以用于分类 211
使用pyspark.ml.feature向量化处理特征 219
用Spark ML做分类 221
本章小结 223
第8章 部署预测系统 225
把scikit-learn应用部署为网络服务 225
scikit-learn模型的保存与读取 226
提供预测模型的准备工作 227
为航班延误回归分析创建API 228
测试API 232
在产品中使用API 232
使用Airflow部署批处理模式Spark ML应用 234
在生产环境中收集训练数据 235
Spark ML模型的训练、存储与加载 237
在MongoDB中创建预测请求 239
从MongoDB中获取预测请求 245
使用Spark ML以批处理模式进行预测 248
用MongoDB保存预测结果 252
在网络应用中展示批处理预测结果 253
用Apache Airflow(孵化项目)自动化工作流 256
小结 264
用Spark Streaming部署流式计算模式Spark ML应用 264
在生产环境中收集训练数据 265
Spark ML模型的训练、存储、读取 265
发送预测请求到Kafka 266
用Spark Streaming进行预测 277
测试整个系统 283
本章小结 285
第9章 改进预测结果 287
解决预测的问题 287
什么时候需要改进预测 288
改进预测表现 288
黏附试验法:找出黏性好的 288
为试验建立严格的指标 289
把当日时间作为特征 298
纳入飞机数据 302
提取飞机特征 302
在分类器模型中纳入飞机特征 305
纳入飞行时间 310
本章小结 313
附录A 安装手册 315
安装Hadoop 315
安装Spark 316
安装MongoDB 317
安装MongoDB的Java驱动 317
安装mongo-hadoop 318
编译mongo-hadoop 318
安装pymongo_spark 318
安装Elasticsearch 318
安装Elasticsearch的Hadoop支持库 319
配置我们的Spark环境 320
安装Kafka 320
安装scikit-learn 320
安装Zeppelin 321