本书首先介绍如何在最新版Python(3.6)中安装基本的数据科学工具箱;接着,引导你进入数据改写和预处理阶段,在其中阐述用于数据分析、探索或处理的数据加载、变换和修复等关键的数据科学活动;最后,通过介绍主要的机器学习算法、图分析技术、所有可视化工具和部署工具来对数据科学进行概述,其中可视化工具更易于向数据科学专家或商业用户展示数据处理结果。
“千里之行,始于足下。”
—老子(公元前604年—公元前531年)
数据科学属于一门相对较新的知识领域,它成功融合了线性代数、统计建模、可视化、计算语言学、图形分析、机器学习、商业智能、数据存储和检索等众多学科。
Python编程语言在过去十年已经征服了科学界,现在是数据科学实践者不可或缺的工具,也是每一个有抱负的数据科学家的工具。Python为数据分析、机器学习和算法求解提供了快速、可靠、跨平台、成熟的开发环境。无论之前在数据科学应用中阻止你掌握Python的原因是什么,我们将通过简单的分步化解和示例导向的方法帮你解决,以便你在演示数据集和实际数据集上使用直接有效的Python工具。
作为第3版,本书对第2版的内容进行了更新和扩展。以新的Jupyter Notebook和JupyterLab界面(结合可互换的内核,一个真正的多语言数据科学)为基础,本书包含了Numpy、pandas和Scikit-learn等库的所有主要更新。此外,本书还提供了不少新内容,包括新的梯度提升机器(GBM)算法(XGBoost、LightGBM和CatBoost)、深度学习(通过提供基于Tensorflow的Keras解决方案)、漂亮的数据可视化(主要使用seaborn)和Web部署(使用bottle)等。
本书首先介绍了如何在新版Python 3.6中安装基本的数据科学工具箱,本书采用单源方法(这意味着本书代码也可以在Python 2.7上重用)。接着,将引导你进入完整的数据改写和预处理阶段,主要阐述用于数据分析、探索或处理的数据加载、变换、修复等关键数据科学活动。后,本书将完成数据科学精要的概述,介绍主要的机器学习算法、图分析技术、所有可视化工具和部署工具,其中可视化工具更易于向数据科学专家或商业用户展示数据处理结果。
读者对象
如果你有志于成为数据科学家,并拥有一些数据分析和Python方面的基础知识,本书将助你在数据科学领域快速入门。对于有R语言或MATLAB/GNU Octave编程经验的数据分析人员,本书也可以作为一个全面的参考书,提高他们在数据操作和机器学习方面的技能。
本书内容
第1章介绍Jupyter Notebook,演示怎样使用教程中的数据。
第2章介绍所有关键的数据操作和转换技术,重点介绍数据改写的佳实践。
第3章讨论所有可能改进数据科学项目结果的操作,使读者能够进行数据操作。
第4章介绍Scikit-learn库中重要的机器学习算法。向读者展示具体的实践应用,以及为了使每种学习技术获得佳效果,应重点检查什么和调整哪些参数。
第5章为你提供基础和中图形表示技术,这对复杂数据结构和机器学习所得结果的表示和视觉理解是必不可少的。
第6章向读者提供处理社交关系和交互数据实用而有效的技术。
第7章演示了如何从零开始构建卷积神经网络,介绍了行业内增强深度学习模型的所有工具,解释了迁移学习的工作原理,以及如何使用递归神经网络进行文本分类和时间序列预测。
第8章介绍了一种处理数据的新方法—水平缩放大数据。这意味着要运行安装了Hadoop和Spark框架的机器集群。
附录包括一些Python示例和说明,重点介绍Python语言的主要特点,这些都是从事数据科学工作必须了解的。
阅读准备
为了充分利用本书,读者需要具备以下知识:
熟悉基本的Python语法和数据结构(比如,列表和字典)。
具有数据分析基础知识,特别是关于描述性统计方面的知识。
通过阅读本书,也可以帮你培养这两方面的技能,尽管本书没有过多地介绍其中的细节,而只提供了一些基本的技术,数据科学家为了成功运行其项目必须了解这些技术。
你还需要做好以下准备:
一台装有Windows、MacOS或Linux操作的计算机,至少8GB的内存(如果你的计算机内存只有4 GB,还是可以运行本书大部分示例的)。
如果加速第7章中的计算,好安装一个GPU。
安装Python 3.6,通过Anaconda来安装(http://www.anaconda.com/download/)。
下载示例代码及彩色图像
本书的示例代码及彩图,可以从http://www.packtpub.com通过个人账号下载,也可以访问华章图书官网http://www.hzbook.com,通过注册并登录个人账号下载。
译者序
前言
作者简介
审阅者简介
第1章 新手上路1
1.1 数据科学与Python简介1
1.2 Python的安装2
1.2.1 Python 2还是Python 33
1.2.2 分步安装4
1.2.3 安装必要的工具包4
1.2.4 工具包升级6
1.3 科学计算发行版6
1.3.1 Anaconda7
1.3.2 使用conda安装工具包7
1.3.3 Enthought Canopy8
1.3.4 WinPython8
1.4 虚拟环境8
1.5 核心工具包一瞥11
1.6 Jupyter简介18
1.6.1 快速安装与初次使用21
1.6.2 Jupyter魔术命令22
1.6.3 直接从Jupyter Notebook安装软件包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变型—RandomizedPCA93
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 EllipticEnvelope101
3.4.3 OneClassSVM104
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-Trees145
4.6.5 从组合估计概率147
4.6.6 模型序列—AdaBoost148
4.6.7 梯度树提升149
4.6.8 XGBoost150
4.6.9 LightGBM152
4.6.10 CatBoost155
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 基于密度的聚类技术—DBSCAN172
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数据集上运行Spark261
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
数据科学导论
Python语言
(原书第3版)
[意] 阿尔贝托·博斯凯蒂(Alberto Boschetti)
卢卡·马萨罗(Luca Massaron) 著
于俊伟 译
Python Data Science Essentials
Third Edition