本书首先介绍了如何在Python3.5中安装必要的数据科学工具箱;然后引导你进入数据改写和预处理阶段,在其中阐述用于数据分析、探索或处理的数据加载、变换和修复等关键的数据科学活动;后,通过介绍主要的机器学习算法、图分析技术和可视化方法来对数据科学进行概述。
前 言千里之行,始于足下。
老子(公元前604531)数据科学属于一门相对较新的知识领域,它成功融合了线性代数、统计建模、可视化、计算语言学、图形分析、机器学习、商业智能、数据存储和检索等众多学科。
Python编程语言在过去十年已经征服了科学界,现在是数据科学实践者不可或缺的工具,也是每一个有抱负的数据科学家的必备工具。Python为数据分析、机器学习和算法求解提供了快速、可靠、跨平台、成熟的开发环境。无论之前在数据科学应用中阻止你掌握Python的原因是什么,我们将通过简单的分步化解和示例导向的方法帮你解决,帮助你在演示数据集和实际数据集上使用最直接有效的Python工具。
作为第2版,本书对第1版内容进行了更新和扩展。以最新的Jupyter Notebook(包括可互换内核,一个真正支持多种编程语言的数据科学系统)为基础,本书包含了NumPy、pandas和Scikit-learn等库的所有主要更新。此外,本书还提供了不少新内容,包括深度学习(基于Theano和Tensorflow的Keras)、漂亮的数据可视化(Seaborn和ggplot)和Web部署(使用bottle)等。本书首先使用单源方法,展示如何在最新版Python(3.5)中安装基本的数据科学工具箱,这意味着本书中的代码可以在Python 2.7上重用。接着,将引导你进入完整的数据改写和预处理阶段,主要阐述用于数据分析、探索或处理的数据加载、变换、修复等关键数据科学活动。最后,本书将完成数据科学精要的概述,介绍主要的机器学习算法、图分析技术和可视化方法,其中,可视化工具将更易于向数据科学专家或商业用户展示数据处理结果。
本书内容第1章介绍Jupyter Notebook,演示怎样使用程序手册中的数据。
第2章对数据科学流程进行概述,详细分析进行数据准备和处理所使用的关键工具,这些工具将在采用机器学习算法和建立假设实验计划之前使用。
第3章讨论所有可能有助于结果改进甚至提升的数据操作技术。
第4章深入研究Scikit-learn包中的主要机器学习算法,例如线性模型、支持向量机、树集成和无监督聚类技术等。
第5章介绍图的概念,它可以表示为偏离预测或目标的有趣矩阵。这是目前数据科学界的研究热点,期待利用图的技术来研究复杂的社交网络。
第6章介绍使用matplotlib进行可视化的基本方法,以及如何使用pandas进行探索性数据分析(EDA),如何使用Seaborn和Bokeh实现漂亮的可视化,还包括如何建立提供所需要信息的Web服务器。
附录包括一些Python示例和说明,重点介绍Python语言的主要特点,这些都是从事数据科学工作必须了解的。
阅读准备本书用到的Python及其他数据科学工具(从IPython到Scikit-learn)都能在网上免费下载。要运行本书附带的源代码,需要一台装有Windows、Linux或Mac OS等操作系统的计算机。本书将分步介绍Python解释器的安装过程,以及运行示例所需要的工具和数据。
读者对象如果你有志于成为数据科学家,并拥有一些数据分析和Python方面的基础知识,本书将助你在数据科学领域快速入门。对于有R语言或Matlab编程经验的数据分析人员,本书也可以作为一个全面的参考书,提高他们在数据操作和机器学习方面的技能。
代码下载你可以从http://www.packtpub.com通过个人账号下载你所购买书籍的样例源码。你也可以访问华章图书官网http://www.hzbook.com,通过注册并登录个人账号下载本书的源代码。
彩图下载我们还提供了一个PDF文件,其中包含本书中使用的截图和彩图,可以帮助读者更好地了解输出的变化。文件可以从以下地址下载:http://www.packtpub.com/sites/default/files/downloads/PythonDataScienceEssentialsSecondEdition_colorImages.pdf。
作 者 简 介阿尔贝托·博斯凯蒂(Alberto Boschetti)数据科学家、信号处理和统计学方面的专家。他是通信工程专业博士,现在伦敦居住和工作。他主要从事自然语言处理、行为分析、机器学习和分布式处理等方面的挑战性工作。他对工作充满激情,经常参加学术聚会、研讨会及其他学术活动,紧跟数据科学技术发展的前沿。
我要感谢我的家人、朋友和同事!同时,也非常感谢开源社区!
卢卡·马萨罗(Luca Massaron)数据科学家、市场营销研究主导者,是多变量统计分析、机器学习和客户洞察方面的专家。有十年以上解决实际问题的经验,使用推理、统计、数据挖掘和算法为利益相关者创造了巨大的价值。在意大利他是网络受众分析的先锋,并在Kaggler上获得排名前十的佳绩,随后一直热心参与各种与数据及数据分析相关的活动,积极给新手和专业人员讲解数据驱动知识发现的潜力。他崇尚大道至简,坚信理解数据科学的精要能给你带来巨大收获。
致Yukiko和Amelia,谢谢你们的爱和包容。前路无止境,星云作伴长,双脚虽远行,终归还家乡。
目 录
译者序
前言
作者简介
第1章 新手上路 1
1.1 数据科学与Python简介 1
1.2 Python的安装 2
1.2.1 Python 2还是Python 3 3
1.2.2 分步安装 3
1.2.3 工具包的安装 4
1.2.4 工具包升级 6
1.2.5 科学计算发行版 6
1.2.6 虚拟环境 8
1.2.7 核心工具包一瞥 11
1.3 Jupyter简介 17
1.3.1 快速安装与初次使用 19
1.3.2 Jupyter魔术命令 20
1.3.3 Jupyter Notebook怎样帮助数据科学家 22
1.3.4 Jupyter的替代版本 26
1.4 本书使用的数据集和代码 27
1.5 小结 33
第2章 数据改写 34
2.1 数据科学过程 34
2.2 使用pandas进行数据加载与预处理 36
2.2.1 数据快捷加载 36
2.2.2 处理问题数据 38
2.2.3 处理大数据集 41
2.2.4 访问其他的数据格式 43
2.2.5 数据预处理 44
2.2.6 数据选择 47
2.3 使用分类数据和文本数据 49
2.3.1 特殊的数据类型文本 51
2.3.2 使用Beautiful Soup抓取网页 56
2.4 使用NumPy进行数据处理 57
2.4.1 NmuPy中的N维数组 57
2.4.2 NmuPy ndarray对象基础 58
2.5 创建NumPy数组 59
2.5.1 从列表到一维数组 60
2.5.2 控制内存大小 60
2.5.3 异构列表 61
2.5.4 从列表到多维数组 62
2.5.5 改变数组大小 63
2.5.6 利用NumPy函数生成数组 64
2.5.7 直接从文件中获得数组 65
2.5.8 从pandas提取数据 65
2.6 NumPy快速操作和计算 66
2.6.1 矩阵运算 68
2.6.2 NumPy数组切片和索引 69
2.6.3 NumPy数组堆叠 71
2.7 小结 72
第3章 数据科学流程 73
3.1 EDA简介 73
3.2 创建新特征 77
3.3 维数约简 78
3.3.1 协方差矩阵 79
3.3.2 主成分分析 80
3.3.3 一种用于大数据的PCA变型RandomizedPCA 82
3.3.4 潜在因素分析 83
3.3.5 线性判别分析 84
3.3.6 潜在语义分析 85
3.3.7 独立成分分析 85
3.3.8 核主成分分析 85
3.3.9 t-分布邻域嵌入算法 87
3.3.10 受限玻尔兹曼机 87
3.4 异常检测和处理 89
3.4.1 单变量异常检测 89
3.4.2 EllipticEnvelope 90
3.4.3 OneClassSVM 94
3.5 验证指标 96
3.5.1 多标号分类 97
3.5.2 二值分类 99
3.5.3 回归 100
3.6 测试和验证 100
3.7 交叉验证 103
3.7.1 使用交叉验证迭代器 105
3.7.2 采样和自举方法 107
3.8 超参数优化 108
3.8.1 建立自定义评分函数 110
3.8.2 减少网格搜索时间 112
3.9 特征选择 113
3.9.1 基于方差的特征选择 113
3.9.2 单变量选择 114
3.9.3 递归消除 115
3.9.4 稳定性选择与基于L1的选择 116
3.10 将所有操作包装成工作流程 118
3.10.1 特征组合和转换链接 118
3.10.2 构建自定义转换函数 120
3.11 小结 121
第4章 机器学习 122
4.1 准备工具和数据集 122
4.2 线性和logistic回归 124
4.3 朴素贝叶斯 126
4.4 K近邻 127
4.5 非线性算法 129
4.5.1 基于SVM的分类算法 129
4.5.2 基于SVM的回归算法 131
4.5.3 调整SVM(优化) 132
4.6 组合策略 133
4.6.1 基于随机样本的粘合策略 134
4.6.2 基于弱分类器的bagging策略 134
4.6.3 随机子空间和随机分片 135
4.6.4 随机森林和Extra-Trees 135
4.6.5 从组合估计概率 137
4.6.6 模型序列AdaBoost 138
4.6.7 梯度树提升 139
4.6.8 XGBoost 140
4.7 处理大数据 142
4.7.1 作为范例创建一些大数据集 142
4.7.2 对容量的可扩展性 143
4.7.3 保持速度 144
4.7.4 处理多样性 145
4.7.5 随机梯度下降概述 147
4.8 深度学习 148
4.9 自然语言处理一瞥 153
4.9.1 词语分词 153
4.9.2 词干提取 154
4.9.3 词性标注 154
4.9.4 命名实体识别 155
4.9.5 停止词 156
4.9.6 一个完整的数据科学例子文本分类 156
4.10 无监督学习概览 158
4.11 小结 165
第5章 社交网络分析 166
5.1 图论简介 166
5.2 图的算法 171
5.3 图的加载、输出和采样 177
5.4 小结 179
第6章 可视化、发现和结果 180
6.1 matplotlib基础介绍 180
6.1.1 曲线绘图 181
6.1.2 绘制分块图 182
6.1.3 数据中的关系散点图 183
6.1.4 直方图 184
6.1.5 柱状图 185
6.1.6 图像可视化 186
6.1.7 pandas的几个图形示例 188
6.1.8 散点图 190
6.1.9 平行坐标 192
6.2 封装matplotlib命令 193
6.2.1 Seaborn简介 194
6.2.2 增强EDA性能 197
6.3 交互式可视化工具Bokeh 201
6.4 高级数据学习表示 203
6.4.1 学习曲线 204
6.4.2 确认曲线 205
6.4.3 随机森林的特征重要性 206
6.4.4 GBT部分依赖关系图形 207
6.4.5 创建MA-AAS预测服务器 208
6.5 小结 212
附录A 增强Python基础 213