第1章 引言:成为独角兽 1
1.1 数据科学家不仅仅是高薪统计人员 2
1.2 本书的内容是怎样组织的 2
1.3 如何使用本书 3
1.4 无论如何,为什么一切都在PythonTM中 3
1.5 示例代码及数据集 3
1.6 最后的话 4
第Ⅰ部分 必须掌握的基础素材 6
第2章 数据科学路线图 6
2.1 解决问题 7
2.2 理解数据:基本问题 8
2.3 理解数据:数据整理 9
2.4 理解数据:探索性分析 9
2.5 提取特征 10
2.6 模型 10
2.7 呈现结果 11
2.8 部署代码 11
2.9 迭代 12
2.10 术语 12
第3章 编程语言 13
3.1 为什么使用编程语言,有无其他选项 13
3.2 数据科学编程语言综述 14
3.2.1 Python语言 14
3.2.2 R语言 14
3.2.3 MATLAB?和Octave 14
3.2.4 SAS? 15
3.2.5 Scala? 15
3.3 Python语言速成班 15
3.3.1 版本注解 15
3.3.2 “hello world”脚本 16
3.3.3 更为复杂的脚本 17
3.3.4 数据类型 19
3.4 字符串 19
3.4.1 注释与文档注释 21
3.4.2 复杂数据类型 21
3.4.3 列表 22
3.4.4 字符串与列表 22
3.4.5 元组 23
3.4.6 字典 24
3.4.7 集合 24
3.5 定义函数 24
3.5.1 循环与控制结构 25
3.5.2 一些关键函数 26
3.5.3 异常处理 27
3.5.4 导入库 27
3.5.5 类及对象 27
3.5.6 可哈希与不可哈希类型 28
3.6 Python语言技术库 29
3.6.1 数据帧 29
3.6.2 序列 30
3.6.3 连接与分组 32
3.7 其他Python语言资源 33
3.8 延伸阅读 33
3.9 术语 34
第4章 数据预处理:字符串操作、正则表达式和数据清理 36
4.1 世界上最糟糕的数据集 36
4.2 如何识别问题 37
4.3 数据内容问题 37
4.3.1 重复条目 37
4.3.2 单实体的多个条目 37
4.3.3 丢失缺失值 38
4.3.4 NULL 38
4.3.5 巨大异常值 38
4.3.6 过期数据 39
4.3.7 人造数据 39
4.3.8 非正规空格 39
4.4 格式化问题 39
4.4.1 不同行列之间的不规则格式化 39
4.4.2 额外的空白 39
4.4.3 不规则大小写 40
4.4.4 不一致分隔符 40
4.4.5 不规则NULL格式 40
4.4.6 非法字符 40
4.4.7 奇怪或不兼容的时间类型 40
4.4.8 操作系统不兼容 41
4.4.9 错误的软件版本 41
4.5 格式化脚本实例 42
4.6 正则表达式 43
4.6.1 正则表达式语法 43
4.7 数据科学战壕中的生活 46
4.8 术语 47
第5章 可视化与简单度量 48
5.1 关于Python语言可视化工具的说明 48
5.2 示例代码 49
5.3 饼图 49
5.4 柱状图 51
5.5 直方图 53
5.6 均值、标准差、中位数和分位数 55
5.7 箱式图 56
5.8 散点图 57
5.9 对数轴线散点图 59
5.10 散点阵列图 61
5.11 热力图 62
5.12 相关性 63
5.13 Anscombe四重奏与数字极限 64
5.14 时间序列 65
5.15 延伸阅读 68
5.16 术语 69
第6章 机器学习概要 70
6.1 历史背景 71
6.2 监督与无监督学习 71
6.3 训练数据、测试数据和过拟合 72
6.4 延伸阅读 72
6.5 术语 73
第7章 插曲:特征提取思路 74
7.1 标准特征 74
7.2 有关分组的特征 75
7.3 预览更复杂的特征 75
7.4 定义待预测功能 75
第8章 机器学习分类 77
8.1 什么是分类器,用它可以做什么 77
8.2 一些实用的关注点 78
8.3 二分类与多分类 78
8.4 实例脚本 79
8.5 特定分类器 80
8.5.1 决策树 80
8.5.2 随机森林 82
8.5.3 集成分类器 83
8.5.4 支持向量机 83
8.5.5 逻辑回归 85
8.5.6 回归 87
8.5.7 朴素贝叶斯分类器 88
8.5.8 神经网络 89
8.6 评价分类器 90
8.6.1 混淆矩阵 91
8.6.2 ROC曲线 91
8.6.3 ROC曲线之下的面积 93
8.7 选择分类阈值 93
8.7.1 其他性能测量 94
8.7.2 升力曲线 94
8.8 延伸阅读 94
8.9 术语 95
第9章 技术交流与文档化 96
9.1 指导原则 96
9.1.1 了解观众 96
9.1.2 说明其重要性 97
9.1.3 使其具体化 97
9.1.4 一张图片胜过千言万语 98
9.1.5 不要对自己的技术知识感到骄傲 98
9.1.6 使其看起来美观 98
9.2 幻灯片 99
9.2.1 C.R.A.P设计原则 99
9.2.2 一些提示和经验法则 101
9.3 书面报告 102
9.4 演示:有用的技巧 103
9.5 代码文档 104
9.6 延伸阅读 105
9.7 术语 105
第Ⅱ部分 仍需要知道的事情 108
第10章 无监督学习:聚类与降维 108
10.1 维数灾难 108
10.2 实例:“特征脸”降维 110
10.3 主成分分析与因子分析 112
10.4 Skree图与维度的理解 113
10.5 因子分析 114
10.6 PCA的局限性 114
10.7 聚类 115
10.7.1 聚类簇的实际评估 115
10.7.2 k均值聚类 116
10.7.3 高斯混合模型 117
10.7.4 合成聚类 118
10.7.5 聚类质量评价 118
10.7.6 轮廓分数 118
10.7.7 兰德指数与调整兰德指数 120
10.7.8 互信息 120
10.8 延伸阅读 121
10.9 术语 121
第11章 回归 122
11.1 实例:预测糖尿病进展 122
11.2 最小二乘法 125
11.3 非线性曲线拟合 126
11.4 拟合度:R2和相关度 127
11.5 残差相关性 128
11.6 线性回归 128
11.7 LASSO回归与特征选择 130
11.8 延伸阅读 131
11.9 术语 131
第12章 数据编码与文件格式 132
12.1 典型的文件格式类别 132
12.1.1 文本文件 132
12.1.2 密集数组 133
12.1.3 程序相关的数据格式 133
12.1.4 数据压缩和数据存档 133
12.2 CSV文件 133
12.3 JSON文件 134
12.4 XML文件 136
12.5 HTML文件 138
12.6 Tar文件 139
12.7 GZip文件 140
12.8 Zip文件 140
12.9 图像文件:栅格化、矢量化及压缩 141
12.10 归根到底都是字节 142
12.11 整型数 142
12.12 浮点数 143
12.13 文本数据 144
12.14 延伸阅读 146
12.15 术语 146
第13章 大数据 147
13.1 什么是大数据 147
13.2 Hadoop:文件系统与处理器 148
13.3 使用HDFS 149
13.4 PySpark脚本实例 150
13.5 Spark概述 151
13.6 Spark操作 152
13.7 运行PySpark的两种方式 154
13.8 Spark配置 154
13.9 底层的细节 155
13.10 Spark提示与技巧 156
13.11 MapReduce范例 157
13.12 性能考量 158
13.13 延伸阅读 159
13.14 术语 160
第14章 数据库 161
14.1 关系数据库及MySQL? 162
14.1.1 基本查询和分组 162
14.1.2 连接 164
14.1.3 嵌套查询 165
14.1.4 运行MySQL并管理数据库 166
14.2 键-值存储 167
14.3 宽列存储 167
14.4 文档存储 168
14.4.1 MongoDB? 168
14.5 延伸阅读 170
14.6 术语 170
第15章 软件工程最佳实践 172
15.1 编码风格 172
15.2 数据科学家的版本控制和Git 174
15.3 代码测试 176
15.3.1 单元测试 176
15.3.2 集成测试 178
15.4 测试驱动的开发 178
15.5 敏捷方法 179
15.6 延伸阅读 179
15.7 术语 179
第16章 自然语言处理 181
16.1 是否真正需要NLP 181
16.2 两种流派的对垒:语言学与统计学 181
16.3 实例:股市文章的论点分析 182
16.4 软件和数据库 184
16.5 词语切分 184
16.6 核心概念:词袋 184
16.7 单词加权:TF-IDF 185
16.8 n-gram 186
16.9 停用词 186
16.10 词形还原与词干提取 187
16.11 同义词 187
16.12 词性标注 188
16.13 常见问题 188
16.13.1 搜索 188
16.13.2 情感分析 189
16.13.3 实体识别与主题建模 189
16.14 高级NLP:语法树、知识以及理解 190
16.15 延伸阅读 191
16.16 术语 191
第17章 时间序列分析 192
17.1 实例:预测维基百科页面的访问量 192
17.2 典型的工作流 196
17.3 时间序列与时间戳事件 196
17.4 插值的重采样 196
17.5 信号平滑 199
17.6 对数变换及其他变换 199
17.7 趋势和周期性 199
17.8 窗口化 200
17.9 简单特征的头脑风暴 201
17.10 更好的特征:向量形式的时间序列 201
17.11 傅里叶分析:有时候非常有效 202
17.12 上下文中的时间序列:全套特征 204
17.13 延伸阅读 205
17.14 术语 205
第18章 概率 206
18.1 抛硬币:伯努利随机变量 206
18.2 掷飞镖:均匀随机变量 207
18.3 均匀分布和伪随机数 208
18.4 非离散型、非连续型随机变量 209
18.5 记号、期望和标准偏差 210
18.6 独立概率、边际概率和条件概率 211
18.7 重尾的理解 212
18.8 二项分布 214
18.9 泊松分布 214
18.10 正态分布 215
18.11 多元高斯分布 216
18.12 指数分布 217
18.13 对数正态分布 218
18.14 熵 218
18.15 延伸阅读 220
18.16 术语 220
第19章 统计学 222
19.1 统计学透视 222
19.2 贝叶斯与频率论:使用上的权衡及不同学派 223
19.3 假设检验:关键思想和范例 223
19.4 多重假设检验 225
19.5 参数估计 226
19.6 假设检验:t检验 227
19.7 置信区间 229
19.8 贝叶斯统计学 230
19.9 朴素贝叶斯统计学 231
19.10 贝叶斯网络 232
19.11 先验概率选择:最大熵或领域知识 232
19.12 延伸阅读 233
19.13 术语 233
第20章 编程语言概念 235
20.1 编程范式 235
20.1.1 命令式 235
20.1.2 函数式 236
20.1.3 面向对象 239
20.2 编译与解释 242
20.3 类型系统 244
20.3.1 静态类型与动态类型 244
20.3.2 强类型与弱类型 244
20.4 延伸阅读 245
20.5 术语 245
第21章 性能和计算机内存 247
21.1 示例脚本 247
21.2 算法性能与Big-O符号 249
21.3 一些经典问题:排序列表与二分查找 250
21.4 摊销性能与平均性能 253
21.5 两个原则:减小开销和管理内存 255
21.6 性能技巧:在适用的情况下使用数字化库 256
21.7 性能技巧:删除不需要的大型结构 257
21.8 性能技巧:尽可能使用内置函数 257
21.9 性能技巧:避免不必要的函数调用 258
21.10 性能技巧:避免创建大型新对象 258
21.11 延伸阅读 259
21.12 术语 259
第Ⅲ部分 专业或高级主题 262
第22章 计算机内存和数据结构 262
22.1 虚拟内存、堆栈和堆结构 262
22.2 C程序实例 262
22.3 内存数据类型和数组 263
22.4 结构 264
22.5 指针、堆栈和堆 265
22.6 关键数据结构 269
22.6.1 字符串 269
22.6.2 可调数组 269
22.6.3 哈希表 271
22.6.4 链表 272
22.6.5 二叉搜索树 273
22.7 延伸阅读 274
22.8 术语 274
第23章 最大似然估计和最优化 276
23.1 最大似然估计 276
23.2 一个简单实例:直线拟合 277
23.3 另一个例子:逻辑回归 278
23.4 最优化 279
23.5 梯度下降和凸优化 280
23.6 凸优化 283
23.7 随机梯度下降 284
23.8 延伸阅读 284
23.9 术语 284
第24章 高级分类器 286
24.1 函数库注解 286
24.2 基础深度学习 287
24.3 卷积神经网络 289
24.4 不同类型的层以及张量到底是什么 290
24.5 实例:MNIST手写数据集 291
24.6 递归神经网络 293
24.7 贝叶斯网络 294
24.8 训练和预测 295
24.9 马尔可夫链蒙特卡洛理论 296
24.10 PyMC实例 297
24.11 延伸阅读 299
24.12 术语 299
第25章 随机建模 300
25.1 马尔可夫链 300
25.2 两类马尔可夫链、两类问题 302
25.3 马尔可夫链蒙特卡洛 303
25.4 隐马尔可夫模型和Viterbi算法 304
25.5 维特比算法 305
25.6 随机游走 307
25.7 布朗运动 308
25.8 ARIMA模型 308
25.9 连续时间马尔可夫过程 309
25.10 泊松过程 310
25.11 延伸阅读 310
25.12 术语 311
告别语:数据科学家的未来 312