本书旨在为读者提供与机器学习有关Python3的基本编程概念。前4章快速介绍了Python 3、NumPy和Pandas。第5章介绍了机器学习的基本概念。第6章主要介绍机器学习分类器,例如逻辑回归、kNN、决策树、随机森林和SVM。第7章介绍了自然语言处理和强化学习。本书还提供了基于Keras的代码示例作为理论讨论的补充。此外还为正则表达式、Keras和TensorFlow 2提供了单独的附录。
本书旨在为读者提供与机器学习有关Python3的基本编程概念。前4章快速介绍了Python 3、NumPy和Pandas。第5章介绍了机器学习的基本概念。第6章主要介绍机器学习分类器,例如逻辑回归、kNN、决策树、随机森林和SVM。第7章介绍了自然语言处理和强化学习。本书还提供了基于Keras的代码示例作为理论讨论的补充。此外还为正则表达式、Keras和TensorFlow 2提供了单独的附录。
本书的价值主张是什么
本书致力于在篇幅允许的范围内提供尽可能充分、翔实的Python和机器学习的相关内容。
充分利用本书
一些程序员善于从文章中学习,另一些程序员善于从示例代码(大量代码)中学习,这意味着没有一种通用学习方式可以供所有人使用。
此外,一些程序员希望先运行代码,看看代码产生了什么结果,然后再回到代码来深入研究细节(另一些程序员则使用相反的方法)。
所以本书有各种类型的代码示例:有短有长,还有一些则是基于早先的代码示例“构建”的。
为什么不包含软件安装说明
很多网站都有针对不同平台的Python安装说明。本书避免重复这些说明,而把这些篇幅用于介绍Python相关材料。总之,本书试图避免“灌输”内容,并避免出现从网上可轻易获得的设置步骤。
本书的代码是怎样被测试的
本书的代码示例已经在安装了OS X 10.8.5的Macbook Pro上的Python 3.6.8版本中进行了测试。
阅读本书,需要先了解什么
有用的先决条件是一定要熟悉一种脚本语言,例如Perl或PHP。其他编程语言(例如Java)的知识也会有所帮助,因为会从中接触到编程概念和结构。所掌握的技术知识越少,则越需要更多的努力才能理解本书涉及的各个主题。机器学习的基础知识很有帮助,但不是必需的。
如果想确保能够掌握本书的内容,可以先浏??览一些代码示例,以便于了解哪些是熟悉的内容,哪些是新知识。
为什么本书没有那么厚
本书的目标读者涵盖从编程语言的初学者到中级程序员。在编写过程中,我尽量满足目标读者准备自学更多Python高级特性的需要。
为什么各章中有那么多代码示例
不论哪种形式的论述,首要原则就是“行胜于言”。尽管并未囿于该规则的字面意思,但本书的确以此作为目标:先展示,再解释。你可以通过一个简单的实验来自己判断“先展示,再解释”是否在本书中得到贯彻:当读到本书中的代码示例和配套的图形展示时,请确定其是否更有效地呈现了视觉效果或展示了相关主题。俗话说得好,一图胜千言,本书将尽可能地做到图文并茂。
补充文件是否可以取代本书
补充文件包含了所有代码示例,避免了因手动输入代码到文本文件产生错误而消耗的时间和精力。但是本书提供了相应的配套解释,有助于读者理解代码示例一。
本书是否包含生产级代码示例
代码示例展示了Python 3针对机器学习的一些有用特性。对于本书,相比于编写更紧凑的代码(更难于理解且更容易出现错误),我们更注重代码的清晰度。如果读者决定在生产环境中使用本书中的任何代码,则需要按照你自有的代码库进行相同的严格分析。
奥斯瓦尔德·坎佩萨托(Oswald Campesato)专门研究深度学习、Java、Android和TensorFlow。他是25本书的作者/合著者,其中包括TensorFlow Pocket Primer、Artificial Intelligence, Machine Learning, and Deep Learning和Python Pocket Primer。
译者序
前言
第1章 Python 3简介1
1.1 Python相关工具与安装1
1.1.1 Python相关工具1
1.1.2 安装Python3
1.1.3 设置PATH环境变量(仅Windows)3
1.2 Python编程基础3
1.2.1 Python交互式解释器3
1.2.2 Python基础语法4
1.2.3 以模块形式保存代码6
1.2.4 Python中的一些标准模块7
1.2.5 help(?)和dir(?)函数7
1.2.6 编译时和运行时的代码检查8
1.3 Python中的简单数据类型9
1.3.1 数字9
1.3.2 字符串12
1.3.3 处理日期19
1.4 Python中的异常处理21
1.4.1 处理用户输入22
1.4.2 命令行参数24
1.5 小结25
第2章 条件逻辑、循环和函数26
2.1 Python中的条件逻辑26
2.1.1 Python的保留关键字27
2.1.2 Python运算符的优先级28
2.1.3 比较运算符和布尔运算符28
2.2 Python中的变量和参数29
2.2.1 局部变量和全局变量29
2.2.2 变量的作用域29
2.2.3 引用传递和值传递31
2.2.4 实参和形参31
2.3 在Python中使用循环32
2.3.1 Python中的for循环32
2.3.2 Python中的while循环39
2.4 Python中的用户自定义函数41
2.4.1 在函数中设定默认值42
2.4.2 具有可变参数的函数42
2.4.3 lambda表达式43
2.5 递归44
2.5.1 计算阶乘值44
2.5.2 计算斐波那契数45
2.5.3 计算两个数的公约数45
2.5.4 计算两个数的小公倍数46
2.6 小结47
第3章 Python数据类型48
3.1 列表48
3.1.1 列表和基本操作48
3.1.2 列表中的表达式53
3.1.3 连接字符串列表53
3.1.4 Python中的range(?)函数54
3.1.5 数组和append(?)函数55
3.1.6 使用列表和split(?)函数56
3.1.7 对列表中的单词计数56
3.1.8 遍历成对的列表57
3.1.9 其他与列表相关的函数57
3.1.10 栈和队列59
3.1.11 使用向量60
3.1.12 使用矩阵61
3.1.13 使用NumPy库处理矩阵61
3.2 元组(不可变列表)62
3.3 集合63
3.4 字典64
3.4.1 创建字典及字典中的基本操作65
3.4.2 字典的相关函数和方法67
3.4.3 字典的格式67
3.4.4 有序字典67
3.5 Python中的其他数据类型68
3.5.1 Python中的其他序列类型68
3.5.2 Python中的可变类型和不可变类型69
3.5.3 type(?)函数70
3.6 小结70
第4章 NumPy和Pandas介绍71
4.1 NumPy71
4.1.1 NumPy简介71
4.1.2 NumPy数组72
4.1.3 使用NumPy数组的示例73
4.2 子范围77
4.2.1 使用向量的“-1”子范围77
4.2.2 使用数组的“-1”子范围77
4.3 NumPy中其他有用的方法78
4.3.1 数组和向量操作79
4.3.2 NumPy和点积79
4.3.3 NumPy和向量的“范数”80
4.3.4 NumPy和向量的乘积81
4.3.5 NumPy和reshape(?)方法82
4.3.6 计算均值和标准差83
4.4 Pandas84
4.5 Pandas DataFrame的各种操作89
4.5.1 合并Pandas DataFrame89
4.5.2 使用Pandas DataFrame进行数据操作90
4.5.3 Pandas DataFrame和CSV文件93
4.5.4 Pandas DataFrame和Excel电子表格95
4.5.5 选择、添加和删除DataFrame中的列96
4.5.6 Pandas DataFrame和散点图97
4.5.7 Pandas DataFrame和简单统计98
4.5.8 Pandas中简单有用的命令98
4.6 小结100
第5章 机器学习101
5.1 什么是机器学习101
5.1.1 机器学习算法的类型103
5.1.2 特征工程、特征选择和特征提取105
5.1.3 降维106
5.2 使用数据集107
5.2.1 训练数据与测试数据108
5.2.2 什么是交叉验证108
5.2.3 正则化108
5.2.4 偏差-方差的权衡109
5.2.5 模型性能的衡量指标109
5.3 线性回归111
5.3.1 线性回归与曲线拟合112
5.3.2 何时的解是准确值112
5.3.3 什么是多元分析112
5.3.4 其他类型的回归113
5.3.5 平面中对直线的处理(选读)113
5.4 求解线性回归问题的示例116
5.4.1 使用NumPy和Matplotlib绘制散点图116
5.4.2 MSE119
5.4.3 Keras的线性回归123
5.5 小结126
第6章 机器学习中的分类器127
6.1 分类器127
6.1.1 什么是分类127
6.1.2 线性分类器129
6.1.3 kNN129
6.1.4 决策树130
6.1.5 随机森林133
6.1.6 支持向量机134
6.1.7 贝叶斯分类器134
6.1.8 训练分类器136
6.1.9 评估分类器137
6.2 激活函数137
6.2.1 什么是激活函数137
6.2.2 常见的激活函数139
6.2.3 ReLU和ELU激活函数140
6.2.4 sigmoid、softmax和tanh的相似之处141
6.2.5 sigmoid、softmax和hardmax的区