猜你喜欢
Python极简讲义:一本书入门数据分析与机器学习

Python极简讲义:一本书入门数据分析与机器学习

书籍作者:张玉宏 ISBN:9787121387043
书籍语言:简体中文 连载状态:全集
电子书格式:pdf,txt,epub,mobi,azw3 下载次数:4219
创建日期:2021-02-14 发布日期:2021-02-14
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板
内容简介

本书以图文并茂的方式介绍了Python的基础内容,并深入浅出地介绍了数据分析和机器学习领域的相关入门知识。

第1章至第5章以极简方式讲解了Python的常用语法和使用技巧,包括数据类型与程序控制结构、自建Python模块与第三方模块、Python函数和面向对象程序设计等。第6章至第8章介绍了数据分析必备技能,如NumPy、Pandas和Matplotlib。第9章和第10章主要介绍了机器学习的基本概念和机器学习框架sklearn的基本用法。

对人工智能相关领域、数据科学相关领域的读者而言,本书是一本极简入门手册。对于从事人工智能产品研发的工程技术人员,本书亦有一定的参考价值。

作者简介

张玉宏,大数据分析师(高级),2012年于电子科技大学获得博士学位,2009—2011年美国西北大学访问学者,2019—2020年美国IUPUI高级访问学者,YOCSEF郑州2019—2020年度副主席。现执教于河南工业大学,主要研究方向为大数据、机器学习。发表学术论文30余篇,先后撰写《深度学习之美:AI时代的数据处理与最佳实践》《品味大数据》等科技图书7本,参与编写英文学术专著2部。

编辑推荐
适读人群 :有一定Python编程基础的数据分析初学者,以及机器学习初学者。也适合具有相当基础的进阶者查缺补漏。

1.轻松入门:文笔流畅,通俗易懂,从Python基础、NumPy、Pandas、Matplotlib,到机器学习算法,循序渐进,帮助零基础读者快速入门。

2.图文并茂:一图胜千言,书中配有精心绘制的近200幅插图,形象生动,融会一心。

3.实战相随:实战出真知,每章均配备思考与提高环节,习题选自知名公司面试题目,针对性和实用性强,可在AI求职之路上助你一臂之力。

前言

前言

为什么写此书

我们正处于一个数据科技(Data Technology,DT)时代。在这个时代,我们的一举一动都能在数据空间留下电子印记,于是海量的社交、电商、科研大数据扑面而来。然而,太多的数据给人们带来的,可能并不是更多的洞察,反而是迷失。

因为仅就数据本身而言,它们是“一无所知”的。数据的价值,在于形成信息,变成知识,乃至升华为智慧。也就是说,这些数据如果不能进一步被“深加工”,即使数据量再“大”,也意义甚小。

于是,就派生出这么一个问题:这些数据,由谁来深加工?其实,早在2012年,《哈佛商业评论》就刊登了一篇文章并给出了答案,进行数据深加工的人就是“数据科学家”。文章还断言,数据科学家是21世纪非常“性感”的职业。

但如何成为一名数据科学家呢?尤其是一名“性感”的数据科学家?作为一个有点文艺范儿的理工男,我喜欢读书,从书中获得启迪。

我曾读过埃里克·莱斯(Eric Ries)写的一本有关创业的书,书名是《精益创业》(The Lean Startup)。在阅读这本书时,有一个概念深入我心,那就是“极小可行产品”(Minimum Viable Product,MVP)。围绕这个概念,创业者在创业初期不可贪多求全,而应该先做出一个可用产品,拿到市场上去检验,然后根据反馈反复迭代,打磨升级,后续做出比较完善、比较成功的产品。

后来,我看到有人提出了类似的概念——极简必要知识(Minimal Actionable Knowledge and Experience,MAKE)。这个概念点醒了我,我觉得自己大概找到了“如何成为一名数据科学家”这个问题的答案:You can MAKE it!

先来说说什么是MAKE。它指的是入门某个新领域切实可行的极小知识集合。MAKE说起来好像比较高级,但实际上,它背后有一个支撑它的朴素原则——Pareto原则(亦称80-20原则),即80%的工作问题可以通过掌握20%的知识来解决。

同样,想成为一名“性感”的数据科学家,一条路自然是按部就班地学习所有技能——十年磨一剑,但这样做的风险在于,当你“携剑下山”时,别人可能已经用上了飞机、大炮。这样的对垒,你胜算几何?

其实还有另一条备选之路,那就是走一走MAKE之道。在学习某项技能(如Python、数据分析、机器学习)时,我们要想办法在极短的时间内,摸索清楚这项技能的“极简必要知识”。一方面,它已然可以帮我们解决工作中的大部分问题;另一方面,入门之后,技能的提升通道可以在实践中寻得,缺啥补啥。有明确的任务导向,学习就会有如神助,这也是当前时代的快节奏学习法。

说到这里,本书的写作初衷就呼之欲出了。是的,这本书的定位就是,为初学者提供关于数据科学的“极简必要知识”,从而让你获得那份“性感”的工作。这些知识包含了成为数据科学家所需要掌握的基础内容——Python编程、数据分析、机器学习。


本书内容

本书主要介绍Python的基础知识、数据分析的必备技能,以及机器学习相关内容。全书共分10章,每章的内容简介如下。

第1章 初识Python与Jupyter

Python是最具人气的编程语言之一,Jupyter是人气与口碑俱佳的Python开发平台。本章将介绍Python和Jupyter的基本内容,包括Python的安装与运行,以及文学化编程利器Jupyter的使用方法。

第2章 数据类型与程序控制结构

本章将介绍Python的基础语法及常见的数据类型,包括数值型、布尔类型、字符串型、列表、元组、字典、集合等。此外,本章还将介绍三种程序控制结构(顺序结构、选择结构和循环结构)和高效的推导式。

第3章 自建Python模块与第三方模块

本章将介绍Python的自定义模块及常用的第三方模块,包括collection、datetime、json、random等模块。

第4章 Python函数

本章将讨论Python的函数定义、函数参数(关键字参数、可变参数、默认参数等)的“花式”传递、函数的递归调用,以及函数式编程。

第5章 Python高级特性

本章将介绍Python中的一些高阶应用,这些高阶应用能让我们更高效地写出更专业的Python代码。本章内容涉及面向对象程序设计思想、生成器与迭代器、文件操作、异常处理及错误调试等。

第6章 NumPy向量计算

本章将讨论NumPy数组的构建、方法和属性,介绍NumPy的广播机制、布尔索引、数组的堆叠,以及爱因斯坦求和约定等。

第7章 Pandas数据分析

Pandas是数据分析的利器,本章将主要介绍Pandas的两种常用数据处理结构:Series和DataFrame。同时介绍基于Pandas的文件读取与分析,涉及数据的清洗、条件过滤、聚合与分组等。

第8章 Matplotlib与Seaborn可视化分析

Matplotlib和Seaborn是非常好用的数据可视化包,本章将主要介绍Matplotlib和Seaborn的基本用法,并基于此绘制可视化图形,包括散点图、条形图、直方图、饼图等。同时,本章将以谷歌流感趋势数据为例,结合Pandas进行可视化分析。

第9章 机器学习初步

本章将主要介绍有关机器学习的初步知识,包括机器学习的定义,机器学习的几个主要流派,并讨论机器学习模型的性能评估指标,包括混淆矩阵、查准率、查全率、P-R曲线、ROC曲线等。

第10章 sklearn与经典机器学习算法

本章将主要讲解知名机器学习框架sklearn的用法,并介绍几种经典机器学习算法的原理和实战,这些算法包括线性回归、k-近邻算法、Logistics回归、神经网络学习算法、k均值聚类算法等。


阅读准备

要想运行本书中的示例代码,需要提前安装如下系统及软件。

操作系统:Windows、macOS、Linux均可。

Python环境:建议使用Anaconda安装,确保版本为Python 3.x即可。

NumPy:建议使用Anaconda安装NumPy 1.18及以上版本。

Pandas:建议使用Anaconda安装Pandas 1.0.1及以上版本。

sklearn:建议使用Anaconda安装sklearn 0.22.1及以上版


目录

第1章 初识Python与Jupyter 1

1.1 Python概要 2

1.1.1 为什么要学习Python 2

1.1.2 Python中常用的库 2

1.2 Python的版本之争 4

1.3 安装Anaconda 5

1.3.1 Linux环境下的Anaconda安装 5

1.3.2 conda命令的使用 6

1.3.3 Windows环境下的Anaconda安装 7

1.4 运行Python 11

1.4.1 验证Python 11

1.4.2 Python版本的Hello World 12

1.4.3 Python的脚本文件 13

1.4.4 代码缩进 15

1.4.5 代码注释 17

1.5 Python中的内置函数 17

1.6 文学化编程—Jupyter 20

1.6.1 Jupyter的由来 20

1.6.2 Jupyter的安装 21

1.6.3 Jupyter的使用 23

1.6.4 Markdown编辑器 26

1.7 Jupyter中的魔法函数 31

1.7.1 %lsmagic函数 31

1.7.2 %matplotlib inline函数 32

1.7.3 %timeit函数 32

1.7.4 %%writefile函数 33

1.7.5 其他常用的魔法函数 34

1.7.6 在Jupyter中执行shell命令 35

1.8 本章小结 35

1.9 思考与提高 36


第2章 数据类型与程序控制结构 40

2.1 为什么需要不同的数据类型 41

2.2 Python中的基本数据类型 42

2.2.1 数值型(Number) 42

2.2.2 布尔类型(Boolean) 45

2.2.3 字符串型(String) 45

2.2.4 列表(List) 49

2.2.5 元组(Tuple) 59

2.2.6 字典(Dictionary) 62

2.2.7 集合(Set) 65

2.3 程序控制结构 67

2.3.1 回顾那段难忘的历史 67

2.3.2 顺序结构 69

2.3.3 选择结构 70

2.3.4 循环结构 74

2.4 高效的推导式 80

2.4.1 列表推导式 80

2.4.2 字典推导式 83

2.4.3 集合推导式 83

2.5 本章小结 84

2.6 思考与提高 84


第3章 自建Python模块与第三方模块 90

3.1 导入Python标准库 91

3.2 编写自己的模块 93

3.3 模块的搜索路径 97

3.4 创建模块包 100

3.5 常用的内建模块 103

3.5.1 collection模块 103

3.5.2 datetime模块 110

3.5.3 json模块 115

3.5.4 random模块 118

3.6 本章小结 121

3.7 思考与提高 122


第4章 Python函数 124

4.1 Python中的函数 125

4.1.1 函数的定义 125

4.1.2 函数返回多个值 127

4.1.3 函数文档的构建 128

4.2 函数参数的“花式”传递 132

4.2.1 关键字参数 132

4.2.2 可变参数 133

4.2.3 默认参数 136

4.2.4 参数序列的打包与解包 138

4.2.5 传值还是传引用 142

4.3 函数的递归 146

4.3.1 感性认识递归 146

4.3.2 思维与递归思维 148

4.3.3 递归调用的函数 149

4.4 函数式编程的高阶函数 151

4.4.1 lambda表达式 152

4.4.2 filter()函数 153

4.4.3 map()函数 155

4.4.4 reduce()函数 157

4.4.5 sorted()函数 158

4.5 本章小结 159

4.6 思考与提高 160


第5章 Python高级特性 165

5.1 面向对象程序设计 166

5.1.1 面向过程与面向对象之辩 166

5.1.2 类的定义与使用 169

5.1.3 类的继承 173

5.2 生成器与迭代器 176

5.2.1 生成器 176

5.2.2 迭代器 183

5.3 文件操作 187

5.3.1 打开文件 187

5.3.2 读取一行与读取全部行 191

5.3.3 写入文件 193

5.4 异常处理 193

5.4.1 感性认识程序中的异常 194

5.4.2 异常处理的三步走 195

5.5 错误调试 197

5.5.1 利用print()输出观察变量 197

5.5.2 assert断言 198

5.6 本章小结 201

5.7 思考与提高 202


第6章 NumPy向量计算 204

6.1 为何需要NumPy 205

6.2 如何导入NumPy 205

6.3 生成NumPy数组 206

6.3.1 利用序列生成 206

6.3.2 利用特定函数生成 207

6.3.3 Numpy数组的其他常用函数 209

6.4 N维数组的属性 212

6.5 NumPy数组中的运算 215

6.5.1 向量运算 216

6.5.2 算术运算 216

6.5.3 逐元素运算与张量点乘运算 218

6.6 爱因斯坦求和约定 222

6.6.1 不一样的标记法 222

6.6.2 NumPy中的einsum()方法 224

6.7 NumPy中的“轴”方向 231

6.8 操作数组元素 234

6.8.1 通过索引访问数组元素 234

6.8.2 NumPy中的切片访问 236

6.8.3 二维数组的转置与展平 238

6.9 NumPy中的广播 239

6.10 NumPy数组的高级索引 242

6.10.1 “花式”索引 242

6.10.2 布尔索引 247

6.11 数组的堆叠操作 249

6.11.1 水平方向堆叠hstack() 250

6.11.2 垂直方向堆叠vstack() 251

6.11.3 深度方向堆叠hstack() 252

6.11.4 列堆叠与行堆叠 255

6.11.5 数组的分割操作 257

6.12 NumPy中的随机数模块 264

6.13 本章小结 266

6.14 思考与提高 267


第7章 Pandas数据分析 271

7.1 Pandas简介 272

7.2 Pandas的安装 272

7.3 Series类型数据 273

7.3.1 Series的创建 273

7.3.2 Series中的数据访问 277

7.3.3 Series中的向量化操作与布尔索引 280

7.3.4 Series中的切片操作 283

7.3.5 Series中的缺失值 284

7.3.6 Series中的删除与添加操作 286

7.3.7 Series中的name属性 288

7.4 DataFrame 类型数据 289

7.4.1 构建DataFrame 289

7.4.2 访问DataFrame中的列与行 293

7.4.3 DataFrame中的删除操作 298

7.4.4 DataFrame中的“轴”方向 301

7.4.5 DataFrame中的添加操作 303

7.5 基于Pandas的文件读取与分析 310

7.5.1 利用Pandas读取文件 311

7.5.2 DataFrame中的常用属性 312

7.5.3 DataFrame中的常用方法 314

7.5.4 DataFrame的条件过滤 318

7.5.5 DataFrame的切片操作 320

7.5.6 DataFrame的排序操作 323

7.5.7 Pandas的聚合和分组运算 325

7.5.8 DataFrame的透视表 334

7.5.9 DataFrame的类SQL操作 339

7.5.10 DataFrame中的数据清洗方法 341

7.6 泰坦尼克幸存者数据预处理 342

7.6.1 数据集简介 342

7.6.2 数据集的拼接 344

7.6.3 缺失值的处理 350

7.7 本章小结 353

7.8 思考与提高 353


第8章 Matplotlib与Seaborn可视化分析 365

8.1 Matplotlib与图形绘制 366

8.2 绘制简单图形 366

8.3 pyplot的高级功能 371

8.3.1 添加图例与注释 371

8.3.2 设置图形标题及坐标轴 374

8.3.3 添加网格线 378

8.3.4 绘制多个子图 380

8.3.5 Axes与Subplot的区别 382

8.4 散点图 388

8.5 条形图与直方图 392

8.5.1 垂直条形图 392

8.5.2 水平条形图 394

8.5.3 并列条形图 395

8.5.4 叠加条形图 400

8.5.5 直方图 402

8.6 饼图 407

8.7 箱形图 409

8.8 误差条 411

8.9 绘制三维图形 413

8.10 与Pandas协作绘图—以谷歌流感趋势数据为例 416

8.10.1 谷歌流感趋势数据描述 416

8.10.2 导入数据与数据预处理 417

8.10.3 绘制时序曲线图 421

8.10.4 选择合适的数据可视化表达 423

8.10.5 基于条件判断的图形绘制 427

8.10.6 绘制多个子图 430

8.11 惊艳的Seaborn 431

8.11.1 pairplot(对图) 432

8.11.2 heatmap(热力图) 434

8.11.3 boxplot(箱形图) 436

8.11.4 violin plot(小提琴图) 442

8.11.5 Density Plot(密度图) 446

8.12 本章小结 450

8.13 思考与提高 450


第9章 机器学习初步 459

9.1 机器学习定义 460

9.1.1 什么是机器学习 460

9.1.2 机器学习的三个步骤 461

9.1.3 传统编程与机器学习的差别 464

9.1.4 为什么机器学习不容易 465

9.2 监督学习 467

9.2.1 感性认识监督学习 467

9.2.2 监督学习的形式化描述 468

9.2.3 损失函数 470

9.3 非监督学习 471

9.4 半监督学习 473

9.5 机器学习的哲学视角 474

9.6 模型性能评估 476

9.6.1 经验误差与测试误差 476

9.6.2 过拟合与欠拟合 477

9.6.3 模型选择与数据拟合 479

9.7 性能度量 480

9.7.1 二分类的混淆矩阵 480

9.7.2 查全率、查准率与F1分数 481

9.7.3 P-R曲线 484

9.7.4 ROC曲线 485

9.7.5 AUC 489

9.8 本章小结 489

9.9 思考与提高 490


第10章 sklearn与经典机器学习算法 492

10.1 机器学习的利器—sklearn 493

10.1.1 sklearn简介 494

10.1.2 sklearn的安装 496

10.2 线性回归 497

10.2.1 线性回归的概念 497

10.2.2 使用sklearn实现波士顿房价预测 499

10.3 k-近邻算法 516

10.3.1 算法简介 516

10.3.2 k值的选取 518

10.3.3 特征数据的归一化 519

10.3.4 邻居距离的度量 521

10.3.5 分类原则的制定 522

10.3.6 基于sklearn的k-近邻算法实战 522

10.4 Logistic回归 527

10.4.1 为什么需要Logistic回归 527

10.4.2 Logistic源头初探 529

10.4.3 Logistic回归实战 532

10.5 神经网络学习算法 536

10.5.1 人工神经网络的定义 537

10.5.2 神经网络中的“学习”本质 537

10.5.3 神经网络结构的设计 540

10.5.4 利用sklearn搭建多层神经网络 541

10.6 非监督学习的代表—k均值聚类 550

10.6.1 聚类的基本概念 551

10.6.2 簇的划分 552

10.6.3 k均值聚类算法核心 552

10.6.4 k均值聚类算法优缺点 554

10.6.5 基于sklearn的k均值聚类算法实战 555

10.7 本章小结 561

10.8 思考与提高 562

短评

这本书真的很不错,适合科研工作者用于学习python。

2020-04-28 21:56:07

不吹不黑,特别喜欢作者,经常可以把一个晦涩难懂的知识点讲的很透彻清晰,这本书写的真心不错,深入浅出,强推

2020-04-28 10:02:05

从《品味大数据》《深度学习之美》到《Python极简讲义》,一路看下来,作者文笔流畅、深入浅出,且亦淡淡的幽默及隐约可现的科技哲学思维,一直让我印象深刻。把技术图书写成这个风格,在国内的作者,还是比较少见的。不过价格确实有点贵,好在是活动期间购买的,挺划算的。

2020-04-21 11:25:05

讲Python最通俗易懂的一本好书,值得拥有!

2020-04-19 23:21:11

张老师的书写的通俗易懂,十分容易理解,是学习Python的一本好书

2020-04-28 10:07:31

张老师的书一直都很不错,支持一下

2020-04-18 22:42:46

很不错的一本书,思路清楚,深入浅出,易于上手,排版也很舒服。读过作者的另外一本《深度学习之美》收获很大,比较喜欢他的写书风格

2020-04-23 10:45:40

曾听过作者的讲座,风趣幽默,有意思有料。得知他出书,第一时间订购(没想到这么快就到了,还以为4/30以后呢)。整体来说,文如其人,符合预期,我不能说这本书有多好,因为仁者见,仁智者见智,但这是一本很用心的图书,如配图很多,令人惊讶的是,还附有部分有价值的习题。 可能和图书的定位有关吧:这本书涉及到机器学习部分偏少(仅仅两章),但正如老话说的:“师傅领进门,修行靠个人” 好评吧!

2020-04-19 08:33:03

产品特色