第1章 新手上路 1
1.1 数据科学与Python简介 1
1.2 Python的安装 2
1.2.1 Python 2还是Python 3 3
1.2.2 分步安装 4
1.2.3 安装必要的工具包 4
1.2.4 工具包升级 6
1.3 科学计算发行版 6
1.3.1 Anaconda 7
1.3.2 使用conda安装工具包 7
1.3.3 EnthoughtCanopy 8
1.3.4 WinPython 8
1.4 虚拟环境 8
1.5 核心工具包一瞥 11
1.6 Jupyter简介 18
1.6.1 快速安装与初次使用 21
1.6.2 Jupyter魔术命令 22
1.6.3 直接从JupyterNotebook安装软件包 23
1.6.4 查看新的JupyterLab环境 24
1.6.5 Jupyter Notebook怎样帮助数据科学家 24
1.6.6 Jupyter的替代版本 29
1.7 本书使用的数据集和代码 30
1.7.1 Scikit-learn小规模数据集 30
1.7.2 MLdata.org和其他公共资源库 32
1.7.3 LIBSVM Data样本 33
1.7.4 直接从CSV或文本文件加载数据 33
1.7.5 Scikit-learn样本生成器 35
1.8 小结 36
第2章 数据改写 37
2.1 数据科学过程 37
2.2 使用pandas进行数据加载与预处理 39
2.2.1 数据快捷加载 39
2.2.2 处理问题数据 41
2.2.3 处理大数据集 43
2.2.4 访问其他的数据格式 46
2.2.5 合并数据 48
2.2.6 数据预处理 51
2.2.7 数据选择 55
2.3 使用分类数据和文本数据 57
2.3.1 特殊的数据类型——文本 59
2.3.2 使用Beautiful Soup抓取网页 64
2.4 使用Numpy进行数据处理 65
2.4.1 NmuPy中的N维数组 65
2.4.2 NmuPy ndarray对象基础 66
2.5 创建Numpy数组 68
2.5.1 从列表到一维数组 68
2.5.2 控制内存大小 69
2.5.3 异构列表 70
2.5.4 从列表到多维数组 70
2.5.5 改变数组大小 71
2.5.6 利用NumPy函数生成数组 73
2.5.7 直接从文件中获得数组 73
2.5.8 从pandas提取数据 74
2.6 NumPy快速操作和计算 75
2.6.1 矩阵运算 77
2.6.2 NumPy数组切片和索引 78
2.6.3 NumPy数组堆叠 80
2.6.4 使用稀疏数组 81
2.7 小结 83
第3章 数据科学流程 84
3.1 EDA简介 84
3.2 创建新特征 87
3.3 维数约简 89
3.3.1 协方差矩阵 89
3.3.2 主成分分析 90
3.3.3 一种用于大数据的PCA变型——RandomizedPCA 93
3.3.4 潜在因素分析 94
3.3.5 线性判别分析 94
3.3.6 潜在语义分析 95
3.3.7 独立成分分析 95
3.3.8 核主成分分析 96
3.3.9 T-分布邻域嵌入算法 97
3.3.10 受限波尔兹曼机 98
3.4 异常检测和处理 99
3.4.1 单变量异常检测 99
3.4.2 EllipticEnvelope 101
3.4.3 OneClassSVM 104
3.5 验证指标 106
3.5.1 多标号分类 107
3.5.2 二值分类 109
3.5.3 回归 110
3.6 测试和验证 110
3.7 交叉验证 113
3.7.1 使用交叉验证迭代器 115
3.7.2 采样和自举方法 116
3.8 超参数优化 118
3.8.1 建立自定义评分函数 120
3.8.2 减少网格搜索时间 121
3.9 特征选择 123
3.9.1 基于方差的特征选择 123
3.9.2 单变量选择 124
3.9.3 递归消除 125
3.9.4 稳定性选择与基于L1的选择 126
3.10 将所有操作包装成工作流程 127
3.10.1 特征组合和转换链接 128
3.10.2 构建自定义转换函数 130
3.11 小结 131
第4章 机器学习 132
4.1 准备工具和数据集 132
4.2 线性和逻辑回归 134
4.3 朴素贝叶斯 136
4.4 K近邻 137
4.5 非线性算法 139
4.5.1 基于SVM的分类算法 140
4.5.2 基于SVM的回归算法 141
4.5.3 调整SVM(优化) 142
4.6 组合策略 144
4.6.1 基于随机样本的粘贴策略 144
4.6.2 基于弱分类器的Bagging策略 144
4.6.3 随机子空间和随机分片 145
4.6.4 随机森林和Extra-Trees 145
4.6.5 从组合估计概率 147
4.6.6 模型序列——AdaBoost 148
4.6.7 梯度树提升 149
4.6.8 XGBoost 150
4.6.9 LightGBM 152
4.6.10 CatBoost 155
4.7 处理大数据 158
4.7.1 作为范例创建一些大数据集 158
4.7.2 对容量的可扩展性 159
4.7.3 保持速度 161
4.7.4 处理多样性 162
4.7.5 随机梯度下降概述 163
4.8 自然语言处理一瞥 164
4.8.1 词语分词 164
4.8.2 词干提取 165
4.8.3 词性标注 166
4.8.4 命名实体识别 166
4.8.5 停止词 167
4.8.6 一个完整的数据科学例子——文本分类 168
4.9 无监督学习概览 169
4.9.1 K均值算法 169
4.9.2 基于密度的聚类技术——DBSCAN 172
4.9.3 隐含狄利克雷分布 173
4.10 小结 177
第5章 可视化、发现和结果 178
5.1 matplotlib基础介绍 178
5.1.1 曲线绘图 179
5.1.2 绘制分块图 180
5.1.3 数据中的关系散点图 181
5.1.4 直方图 182
5.1.5 柱状图 183
5.1.6 图像可视化 184
5.1.7 pandas的几个图形示例 186
5.1.8 通过平行坐标发现模式 191
5.2 封装matplotlib命令 191
5.2.1 Seaborn简介 192
5.2.2 增强EDA性能 196
5.3 高级数据学习表示 200
5.3.1 学习曲线 201
5.3.2 确认曲线 202
5.3.3 随机森林的特征重要性 203
5.3.4 GBT部分依赖关系图形 205
5.3.5 创建MA-AAS预测服务器 205
5.4 小结 209
第6章 社交网络分析 210
6.1 图论简介 210
6.2 图的算法 215
6.2.1 节点中心性的类型 216
6.2.2 网络划分 218
6.3 图的装载、输出和采样 221
6.4 小结 223
第7章 深度学习进阶 224
7.1 走近深度学习 224
7.2 使用CNN进行图像分类 226
7.3 使用预训练模型 234
7.4 处理时间序列 237
7.5 小结 239
第8章 基于Spark的大数据分析 240
8.1 从独立机器到大量节点 240
8.1.1 理解为什么需要分布式框架 241
8.1.2 Hadoop生态系统 241
8.2 PySpark入门 245
8.2.1 设置本地Spark实例 245
8.2.2 弹性分布式数据集实验 247
8.3 跨集群节点共享变量 252
8.3.1 只读广播变量 252
8.3.2 只写累加器变量 252
8.3.3 同时使用广播和累加器变量——示例 253
8.4 Spark数据预处理 255
8.4.1 CSV文件和Spark数据框 255
8.4.2 处理缺失数据 257
8.4.3 在内存中分组和创建表 257
8.4.4 将预处理后的数据框或RDD写入磁盘 259
8.4.5 Spark数据框的用法 260
8.5 基于Spark的机器学习 261
8.5.1 在KDD99数据集上运行Spark 261
8.5.2 读取数据集 261
8.5.3 特征工程 263
8.5.4 训练学习器 266
8.5.5 学习器性能评价 267
8.5.6 机器学习管道的强大功能 267
8.5.7 手动调参 269
8.5.8 交叉验证 271
8.5.9 最后的清理 272
8.6 小结 272
附录 增强Python基础 274