《数据科学与分析:Python语言实现》

举报
华章计算机 发表于 2020/02/15 18:37:23 2020/02/15
【摘要】 本节书摘来自华章计算机《数据科学与分析:Python语言实现》 一作者是[英]赫苏斯·罗格尔–萨拉查(Jesús Rogel-Salazar),白 皓 刘江一 上官明乔 刁 娟 译。

数据科学与工程技术丛书

数据科学与分析:

Python语言实现

Data Science and Analytics with Python

1581762821518617.jpg

[英]赫苏斯·罗格尔–萨拉查(Jesús Rogel-Salazar)著

白 皓 刘江一 上官明乔 刁 娟 译

 

 

 


译 者 序

数据科学家目前在AI领域炙手可热,被誉为“独角兽”一样的人才,但也并非高不可攀,本书就为立志成为数据科学家的读者提供了可行的实践指南。

本书从Python入门开始,逐步实现数据分析、机器学习等通用算法,进而讨论数据科学家的典型工作流程,最后从实践入手,由浅入深,精选决策树、降维技术、支持向量机等数据分析案例,让读者能逐步理解晦涩的公式、理论并上手操作,从而满足不同层次读者的需求。

本书的翻译由四位来自IT界的工程师通力协作完成,其中来自京东的白皓负责完成前言以及第1~2章的翻译,来自京东的刁娟负责第3~4章的翻译,来自IBM的刘江一负责第5~7章的翻译,来自IBM的上官明乔负责第8~9章以及附录的翻译。

感谢华章公司的王春华编辑给了我们四人体悟知识并传递知识的宝贵机会,并在翻译过程中给予我们许多指导意见。不过由于译者本身水平的局限性,书中译文不妥和错误之处在所难免,恳请读者赐教,一起学习进步。

 

译 者

2018年12月6日于北京

 

 

 

 

前  言

本书是与创业公司、历史悠久的企业以及各行各业(从科学、媒体到金融)中各级资历的人员进行非常有趣的讨论、辩论和对话的结晶。本书旨在成为数据分析师和新兴数据科学家的参考指南,因为他们虽然在编程和统计建模方面拥有一定的工作经验,但并未深入研究数据分析和了解机器学习所能创造的奇迹。本书以Python作为工具来实现和利用当今数据科学和数据分析中使用的一些通用算法。

平心而论,感兴趣的读者总可以找到很多非常有用的工具和平台,例如优秀的开源R项目或SPSS?、SAS?等专业项目。这些都非常值得推荐,它们有各自的优势(当然也有弱点)。但是,鉴于我在实现和解释算法方面的经验,我发现Python是一个非常具有可塑性的编程工具。这让我想起与一位在一家大型咨询公司工作的经验丰富的分析师的对话,他提到用Python完成所有机器学习或数据科学相关的任务是不可能的,我其实并不赞同他的观点。诚然,虽然对于某些特定任务可能有更合适的工具,但将它们全部集中在一个工具中去实现确实是一项艰巨的工作。考虑到这一点,本书中使用Python语言来证明我的选择并没有错:Python是一种流行的多功能脚本和面向对象的语言,它易于使用,并且拥有一个由开发人员和爱好者组成的大型活跃社区,还有丰富多彩的iPython/ Jupyter Notebook交互式计算环境支持,它已经被商界和学术界使用了很长一段时间。我们将在本书中展示用Python进行机器学习以及数据科学分析的无限可能。

本书的主要目的是向读者介绍数据科学和分析中使用的一些主要概念,以及使用Python开发的工具,如Scikit-learn、Pandas、NumPy等。本书旨在为程序员和开发人员以及数学、物理、计算生物学和工程等科学领域的毕业生提供跨入数据科学和分析领域的桥梁。根据我的经验,我想读者目前所拥有的知识背景和技能是非常宝贵的财富。然而,在许多情况下,由于日常活动所需的纵向专业局限,大家的横向知识面难免有些模糊。因此,本书可以作为数据科学和分析领域的相关指南。本书将着重展示流行算法及其使用背后的概念和思想,但不会探讨它们在Python中的实现细节。如果确实有相关需求,请参考使用这些算法的开源系统是如何实现的。

本书中包含的示例已在Mac OS、Linux和Windows 7下的Python 3.5中进行了测试,并且对代码进行最少的更改,就可以使其在Python 2发行版中运行。作为参考,本书中使用的一些软件包的版本如下:

  • Python - 3.5.2

  • Pandas - 0.19.1

  • NumPy - 1.11.2

  • Scikit-learn - 0.18

  • StatsModels - 0.6.1

值得注意的是,我选择Continuum Analytics提供的Anaconda Python发行版,因为它可以在上面提到的3种计算机系统中安装,并且具有可以直接从发行版本中提供丰富的类库生态系统的优势,更重要的是,它几乎适用于所有用户。还有一些其他方法可以获得Python以及其他版本的软件,例如,直接来自Python软件基金会(Python Software Foundation),以及来自Enthought Canopy的版本,或者来自Homebrew等软件包管理器。Anaconda提供了一个简单的安装和维护软件的环境,为用户减少了很多麻烦。我假设读者通过脚本或在Shell中交互式地工作。

本书会将代码以如下形式显示:

 image.png

我们使用一个尖括号(>)来表示Python Shell中显示的命令行终端提示符。请注意,在iPython交互式Shell或iPython / Jupyter Notebook中可以使用相同的命令,但外观和给人的感觉可能会有很大不同。

本书各个章节之间相互独立,以便读者可以轻松地将章节内容用作参考,而不像教科书那样上下文联系紧密。不可避免地,某些章节中会引用其他章节的内容,出现这种情况时我会适时指出。我还想借此机会声明,本书中所提供的代码实现并不是唯一的或最好的编程方式。编程就像写作,我们都知道26个英文字母如何书写,但这并不意味着我们都能写出莎士比亚的诗,这是一个创造性的过程,因此“条条大路通罗马”。我很高兴收到大家关于书中代码实现的反馈意见。

我们从使用过程和最终期望获得的结果的角度讨论数据科学和分析是什么,以此来开始本书的第1章。我们特别关注数据探索过程以及在应用算法和分析之前需要进行的数据清洗过程。

在第2章中,我们将复习Python语言的一些重要特性,目的是回顾一些重要的命令和说明,为本书的其余部分提供基础。这也将使我们有机会了解后面章节中将会使用的一些命令和指令。

在第3章中,我们将介绍机器学习、模式识别和人工智能的基本要素,这些要素是我们将在本书其余部分使用的算法和实现的基础。

学习到第4章时,我们已拥有了必要的基础,可以开始学习通过StatsModels和Scikit-learn使用Python实现回归分析。本章还介绍了使用广义回归线性模型的要点。

在第5章中我们讨论了聚类技术,而第6章则讨论了分类算法。这两章是数据科学工作流程的核心:聚类使我们能够以无监督的方式为数据分配标签;反过来,我们可以将这些标签用作分类算法中的目标。

在第7章中,我们介绍了分层聚类、决策树的使用以及套袋和助推等集成技术。值得注意的是,集成技术已成为数据科学家的常用工具,建议重点学习本章。

降维技术将在第8章中讨论。我们将介绍主成分分析和奇异值分解等算法。作为一个应用程序,我们将讨论推荐系统。

最后一章,也是很关键的一章——在第9章中,我们将介绍支持向量机算法以及回归和分类等应用程序中所有重要的核心技巧。

正如之前提到的那样,本书的诞生得益于我与学术界和商业界同事的讨论和交流,非常感谢他们的意见和建议。我还要特别感谢CRC出版社的Randi Cohen编辑以及技术评审人员。最后,写作本书也离不开家人和朋友的鼓励。这本书献给你们所有人!

 

 

 

读 者 指 南

本书旨在成为鹿角兔(jackalope)般的数据科学家——从初学者到经验丰富的从业者的实践指南。书中介绍的内容是在我与同事、学生互动的过程中总结的,我对这些材料进行了系统化的组织。

建议按照章节顺序阅读本书。但是,考虑到不同层次的读者可能有不同的需求,因此下列指南可能有助于阅读。

对数据科学感兴趣的读者:

从第1章开始,了解数据科学的全貌以及用鹿角兔形容数据科学家的原因。

阅读第3章,了解机器学习的相关内容。

确保真正理解这两章的内容,这些内容将有助于了解数据科学家这一角色。

对于初学者:

如果你没有编程背景,请从第2章开始阅读,其中介绍了Python的快速入门知识。

通过阅读第1章和第3章来了解更多有关数据科学和机器学习原理的信息。

对于熟悉Python的读者:

可以大胆跳过第2章,直接进入第4章。

经验丰富的读者可能会发现按主题阅读本书更容易:

回归:

  • 普通最小二乘法(第4章)。

  • 多元回归(第4章)。

  • LASSO和Ridge回归(第4章)。

  • 用于回归的支持向量机(9.1.3节)。

聚类:

  • k–均值(第5章)。

  • 分层聚类(7.1节)。

分类:

  • KNN(第6章)。

  • 逻辑回归(第6章)。

  • 朴素贝叶斯(第6章)。

  • 用于分类的支持向量机(9.1.4节)。

决策树和集成技术将在第7章中讨论。

推荐系统将在8.4节中介绍。

文本操作示例将在6.4.2节中提供,其中将推文作为主要数据源。

8.2.1节和8.3节中提供了图像处理示例。

 

 

 

目  录

译者序

前言

读者指南

第1章 数据科学家的试验与磨难  1

1.1 数据?科学?数据科学!  1

1.2 数据科学家:现代鹿角兔  4

1.3 数据科学工具  9

1.4 从数据到洞察力:数据科学工作流  11

1.4.1 识别问题  13

1.4.2 获取数据  13

1.4.3 数据挖掘  13

1.4.4 建模与评价  13

1.4.5 表征与互动  14

1.4.6 数据科学:一个迭代过程  14

1.5 总结  15

第2章 Python:完全不同的编程语言  16

2.1 为何是Python?为何不是?  17

2.1.1 使用Shell或不使用Shell  19

2.1.2 使用iPython/Jupyter Notebook  20

2.2 初探Python  21

2.2.1 基本类型  21

2.2.2 数字  21

2.2.3 字符串  22

2.2.4 复数  23

2.2.5 列表  24

2.2.6 元组  27

2.2.7 字典  29

2.3 控制流  31

2.3.1 if ... elif ... else  31

2.3.2 while  32

2.3.3 for  33

2.3.4 try... except  34

2.3.5 函数  36

2.3.6 脚本和模块  39

2.4 计算和数据处理  41

2.4.1 矩阵操作和线性代数  41

2.4.2 NumPy数组和矩阵  42

2.4.3 索引和切片  45

2.5 “熊猫”前来救驾  46

2.6 绘图和可视化库:Matplotlib  50

2.7 总结  52

第3章 能够探知的机器:机器学习和模式识别  53

3.1 认知模式  53

3.2 人工智能和机器学习  54

3.3 数据很好,但也需要其他支持  56

3.4 学习、预测和分类  57

3.5 机器学习和数据科学  58

3.6 特征选择  59

3.7 偏差、差异和正规化:平衡法  60

3.8 一些有用的措施:距离和相似性  61

3.9 注意“维度的诅咒”  64

3.10 Scikit-learn是我们的朋友  67

3.11 训练和测试  70

3.12 交叉验证  72

3.13 总结  75

第4章 关系难题:回归  76

4.1 变量之间的关系:回归  76

4.2 多元线性回归  78

4.3 普通最小二乘法  80

4.4 大脑与身体:单变量回归  83

4.5 对数变换  90

4.6 使任务更容易:标准化和扩展  93

4.6.1 正则化或单位缩放  94

4.6.2 z-Score缩放  95

4.7 多项式回归  96

4.8 方差–偏差权衡  99

4.9 收缩:选择运算符和Ridge  101

4.10 总结  105

第5章 鹿角兔和野兔:聚类  107

5.1 聚类  107

5.2 k–均值聚类  108

5.2.1 聚类验证  110

5.2.2 k–均值实际操作  112

5.3 总结  115

第6章 独角兽和马:分类  116

6.1 分类  116

6.1.1 混淆矩阵  117

6.1.2 ROC和AUC  119

6.2 使用KNN算法分类  121

6.3 逻辑回归分类器  126

6.3.1 逻辑回归的解释  129

6.3.2 逻辑回归的应用  130

6.4 使用朴素贝叶斯算法进行分类  136

6.4.1 朴素贝叶斯分类器  139

6.4.2 朴素贝叶斯分类的应用  140

6.5 总结  144

第7章 决策:分层聚类、决策树和集成技术  145

7.1 分层聚类  145

7.2 决策树  150

7.3 集成技术  160

7.3.1 套袋  164

7.3.2 助推  164

7.3.3 随机森林  165

7.3.4 层叠和混合  166

7.4 集成技术实践  167

7.5 总结  171

第8章 少即多:降维  172

8.1 降维  172

8.2 主成分分析  175

8.2.1 PCA实践  177

8.2.2 PCA在鸢尾花数据集中的应用  180

8.3 奇异值分解  183

8.4 推荐系统  187

8.4.1 基于内容的过滤实践  188

8.4.2 协同过滤实践  191

8.5 总结  195

第9章 内核秘诀:支持向量机  197

9.1 支持向量机和内核方法  197

9.1.1 支持向量机  199

9.1.2 内核的技巧  204

9.1.3 SVM实践:回归  205

9.1.4 SVM实践:分类  208

9.2 总结  212

附录 Scikit-learn中的管道  213

参考文献  217


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。