本书是高等学校开设数据科学导论或工程实践等课程的配套用书。本书不仅介绍了数据科学的基础知识,还特别引入了探索性数据分析流程的相关内容,主要包括实践平台配置、数据预处理、数据存储与管理、探索性数据分析、单模型学习算法、集成学习算法和数据可视化等;精心设计其中的函数应用实践和综合应用实践,前者聚焦具体函数的解释和应用,后者致力于实际问题解决思路的探讨。读者可以由浅入深地了解相关理论,逐步完成相关实验内容,增强理论和实践的连贯性认知,培养数据思维和动手实践能力。 本书可作为高等学校各相关专业的数据科学导论或实践等课程的配套教材,也可供对数据科学感兴趣的读者阅读。
郭继东,山东财经大学副教授,郭继东博士在计算机视觉、人工智能、最优化方法、数据分析与挖掘算法和矩阵分析方面有着比较深入的研究,并取得了一些创新性的研究成果。主要研究方向为人工智能、计算机视觉、最优化方法、软件架构设计、数据挖掘技术、三维重建、图像处理等。在国内外重要学术刊物及会议上发表重要学术论文20余篇,其中有多篇被SCI或EI收录。
目录
第1章 数据科学概述 1
1.1 数据科学简介 1
1.1.1 基本概念及发展历史 1
1.1.2 特点及应用领域 2
1.1.3 数据科学的过程 3
1.2 Python的安装 5
1.3 常用工具包概述 7
1.4 Anaconda3的安装 9
1.5 Jupyter Notebook的使用 10
1.5.1 Jupyter Notebook简介 10
1.5.2 Jupyter Notebook
的启动 10
1.5.3 新手如何快速上手Jupyter Notebook 10
1.6 本章小结 12
课后习题 12
第2章 数据预处理 13
2.1 NumPy数据处理及运算 13
2.1.1 NumPy的安装 13
2.1.2 创建N维数组 14
2.1.3 NumPy切片和索引 19
2.1.4 NumPy数组操作 20
2.1.5 数学函数 32
2.1.6 统计函数 40
2.1.7 排序函数 46
2.1.8 直方图函数 47
2.2 Pandas基础 49
2.2.1 数据快捷加载 49
2.2.2 Pandas的数据结构 53
2.3 非数值数据转换 61
2.3.1 map()函数 61
2.3.2 One-Hot编码 62
2.4 数据清洗 63
2.4.1 缺失值处理 63
2.4.2 错误数据替换 65
2.4.3 数据去重 65
2.4.4 数据合并连接 66
2.4.5 数据分组及聚合 70
2.5 本章小结 72
课后习题 72
第3章 数据存储与管理 74
3.1 概述 74
3.1.1 数据存储的概念 74
3.1.2 数据管理技术的概念 74
3.1.3 数据库的概念 74
3.1.4 新型数据管理系统 75
3.2 关系数据库 75
3.2.1 关系数据模型 75
3.2.2 应用举例 76
3.3 分布式文件系统 78
3.3.1 HDFS的概念及特点 78
3.3.2 HDFS数据文件存储 78
3.3.3 HDFS的结构及组件 78
3.3.4 HDFS的读/写操作 79
3.3.5 Python访问HDFS 81
3.4 分布式数据库 82
3.4.1 HBase的特点 82
3.4.2 HBase相关概念 82
3.4.3 HBase架构 82
3.4.4 Python操作HBase 84
3.5 流数据 87
3.5.1 流数据概述 87
3.5.2 流数据模型 87
3.5.3 流数据处理系统 88
3.6 本章小结 90
课后习题 90
第4章 探索性数据分析 92
4.1 EDA简介 92
4.2 特征创建 98
4.3 维度约简 101
4.3.1 为什么要降维 101
4.3.2 基于特征转换的降维 102
4.3.3 基于特征选择的降维 122
4.3.4 基于特征组合的降维 135
4.4 异常值检测及处理 141
4.4.1 单变量异常检测 141
4.4.2 OneClassSVM 143
4.4.3 EllipticEnvelope 145
4.5 评价函数 149
4.5.1 多标签分类 149
4.5.2 二分类 151
4.5.3 回归 155
4.6 测试和验证 156
4.7 交叉验证 159
4.7.1 建立自定义评分函数 160
4.7.2 使用交叉验证迭代器 162
4.8 超参数调优 167
4.8.1 超参数调优概述 167
4.8.2 超参数调优实践 174
4.9 小结 190
课后习题 190
第5章 单模型学习算法 191
5.1 概述 191
5.1.1 分类模型和回归模型 192
5.1.2 机器学习的步骤和
要素 193
5.2 线性回归和逻辑回归 194
5.2.1 从线性回归到逻辑
回归 195
5.2.2 线性回归实践 197
5.2.3 Sigmoid函数 199
5.2.4 推广至多元场景 200
5.2.5 逻辑回归实践 201
5.2.6 算法小结 203
进阶A 交叉熵损失函数和平方差
损失函数 203
5.3 朴素贝叶斯分类 207
5.3.1 朴素贝叶斯分类算法 207
5.3.2 朴素贝叶斯实践 210
5.3.3 算法小结 212
5.4 最近邻算法 212
5.4.1 k近邻算法的概念及
原理 212
5.4.2 k值的选取及特征归一化的重要性 213
5.4.3 最近邻算法实践 215
5.4.4 算法小结 228
进阶B kd树 228
B.1 kd树的构建 228
B.2 kd树的搜索 230
B.3 kd树的不足 232
5.5 支持向量机 233
5.5.1 支持向量机基础 234
5.5.2 软间隔 236
5.5.3 核函数 236
5.5.4 支持向量机实践 238
5.5.5 算法小结 256
进阶C 对偶问题 257
C.1 拉格朗日乘子法 257
C.2 支持向量机优化 259
进阶D 软间隔情况下的最优化问题
及其求解 260
5.6 决策树 261
5.6.1 信息论知识 261
5.6.2 决策树基础 264
5.6.3 决策树实践 268
5.6.4 算法小结 285
5.7 聚类 286
5.7.1 K均值聚类 286
5.7.2 小批量KMeans 296
5.7.3 Affinity Propagation聚类
算法 299
5.7.4 层次聚类 301
5.7.5 DBSCAN 307
5.7.6 算法小结 310
5.8 本章小结 311
课后习题 311
第6章 集成学习算法 312
6.1 集成学习能带来什么 312
6.1.1 集成学习的基本步骤 313
6.1.2 集成学习中的偏差与
方差 314
6.2 Bagging元学习器 320
6.3 随机森林 326
6.3.1 随机森林算法 327
6.3.2 极度随机化树 327
6.3.3 随机森林实践 328
6.3.4 算法小结 332
6.4 Boosting算法 332
6.5 AdaBoost算法 333
6.5.1 AdaBoost实践 334
6.5.2 算法小结 341
进阶E AdaBoost算法伪代码 342
6.6 GBDT算法 342
6.6.1 分类和回归 347
6.6.2 GBDT实践 349
6.7 基于直方图的梯度提升 351
6.7.1 用法 351
6.7.2 直方图梯度提升模型
实践 353
6.8 堆叠泛化 356
6.9 概率校准 358
6.9.1 校准曲线 359
6.9.2 校准分类器 362
6.10 本章小结 373
课后习题 373
第7章 数据可视化 374
7.1 可视化的定义及作用 374
7.2 可视化的原则 375
7.3 常用的可视化分析技术与
工具 375
7.4 Matplotlib绘图 378
7.4.1 绘制曲线 378
7.4.2 绘制散点图 384
7.4.3 绘制直方图 385
7.4.4 绘制柱状图 387
7.4.5 绘制箱线图 392
7.4.6 绘制图像 394
7.4.7 绘制矩阵 396
7.5 Pandas绘图 398
7.6 Scikit-learn绘图 401
7.6.1 学习曲线 401
7.6.2 验证曲线 405
7.6.3 ROC曲线 407
7.6.4 混淆矩阵 408
7.6.5 精确率-召回率曲线 410
7.6.6 部分依赖关系图 412
7.7 本章小结 414
课后习题 414