Python机器学习(原书第3版)
上QQ阅读APP看书,第一时间看更新

前言

通过新闻和社交媒体的报道,你可能已经了解到,机器学习已成为当代最激动人心的技术之一。像谷歌、Facebook、苹果、亚马逊和IBM这样的大公司基于各自的考虑,已经在机器学习的研究和应用方面投入了巨资。机器学习似乎已经成为我们这个时代的流行词,但这绝不是昙花一现。这个激动人心的领域为我们开启了许多新的可能性,已经成为我们日常生活中不可或缺的一部分。智能手机的语音助手、为客户推荐合适的产品、防止信用卡欺诈、过滤垃圾邮件,以及检测和诊断疾病等都是明证,类似的应用层出不穷。

机器学习入门

如果有志从事机器学习方面的工作,想更好地解决问题或开展机器学习方面的研究,那么本书就是为你而备。然而,对新手而言,机器学习背后的理论、概念可能艰深晦涩,但近几年已经出版了许多机器学习方面的著作,这有助于大家通过研发强大的机器学习算法走上机器学习之路。

理论与实践相结合

通过实际的机器学习应用示例来接触实际代码是深入该领域的好方法。此外,具体的示例也有助于通过把所学的材料直接付诸行动来阐明宽泛的概念。然而请记住,更强大的力量意味着更重大的责任!

除了提供使用Python编程语言和基于Python的机器学习库进行机器学习的实践经验之外,本书还将介绍机器学习算法背后的数学概念,这些对成功地应用机器学习至关重要。因此,本书与一般纯粹的实践手册有所不同,书中不仅会对有关机器学习概念的必要细节进行讨论,而且还将对机器学习算法的工作原理、使用方法,以及如何避免最常见的陷阱(最为重要)做出直观且翔实的解释。

为什么要选择Python

在深入机器学习领域之前,请先回答一个最重要的问题:“为什么要选择Python?”答案很简单:Python功能强大且易于取得。Python已经成为数据科学最常用的编程语言,因为它不仅可以让我们忘记编程的冗长乏味,而且为我们提供了可以把想法落地、把概念直接付诸行动的环境。

探索机器学习领域

如果在谷歌专业网站以“机器学习”作为关键词进行搜索,可能会找到325万个出版物。当然,我们无法对过去60年来所出现的各种不同算法和应用逐一进行考证。然而,本书将开启一个激动人心的旅程,它将涵盖所有重要的主题和概念,让你在这些领域能够捷足先登。如果你发现本书所提供的知识还不足以解渴,那么没关系,你还可以利用本书所引用的其他有价值的许多资源来追踪该领域的重要突破。

我们认为,对机器学习的研究可以帮助我们成为更好的科学家、思想家和问题解决者。本书将与你分享这些知识。要获得知识就要学习,关键在于保持热情,实践出真知。

前面的路或许崎岖不平,有些主题可能颇具挑战性,但希望你能抓住这个机会,更多地思考本书所带来的回报。请记住,我们将共同踏上这段旅程,帮助你掌握许多强大的武器,让你以数据驱动的方式来解决最棘手的问题。

本书的目标读者

如果你已经详细研究了机器学习方面的理论,那么本书可以教你如何把知识付诸实践。如果你以前使用过机器学习技术,想要更加深入地了解其工作原理,那么本书也是为你而写的。

如果你是机器学习领域的新手,那么不必担心,你更有理由为阅读本书而感到兴奋!我保证机器学习将会改变你解决问题的思路,并让你看到如何通过释放数据的力量来解决问题。如果你想了解如何开始用Python来回答有关数据方面的关键问题,那么请阅读本书。无论是想从零开始,还是想扩展自己已有的数据科学知识,本书都是必不可少且不可忽视的资源。

本书内容

第1章介绍用于解决不同问题的主要机器学习子领域。另外,还将讨论创建典型的机器学习模型构建流水线的基本步骤,从而形成贯穿后续各章的脉络。

第2章追溯机器学习的起源,介绍二元感知分类器和自适应线性神经元。还会简单介绍模式分类的基本原理,同时关注算法优化和机器学习的交互。

第3章描述机器学习的基本分类算法,并使用最流行、最全面的开源机器学习软件库之一scikit-learn提供实际示例。

第4章讨论如何解决未处理数据集中最常见的问题,如数据缺失。也会讨论用来识别数据集中信息量最大的特征的几种方法,并教你如何处理不同类型的变量以作为机器学习算法的适当输入。

第5章描述在减少数据集中特征数量的同时保留大部分有用和具有可识别性信息的基本技术。讨论基于主成分分析的标准降维方法,并将其与监督学习和非线性变换技术进行比较。

第6章讨论在预测模型的性能评价中该做什么和不该做什么。此外,还将讨论模型评估的不同度量以及优化机器学习算法的技术。

第7章介绍有效结合多种学习算法的不同概念。讲解如何构建专家小组来克服个别学习者的弱点,从而产生更准确、更可靠的预测。

第8章讨论将文本数据转换为对机器学习算法有意义的表达方式的基本步骤,以根据文本内容预测人们的意见。

第9章继续使用第8章中的预测模型,并介绍使用嵌入式机器学习模型开发Web应用的基本步骤。

第10章讨论根据目标变量和响应变量之间的线性关系建模,从而进行连续预测的基本技术。在介绍不同的线性模型之后,还将讨论多项式回归和基于树的建模方法。

第11章将焦点转移到机器学习的其他子领域,即无监督学习。用来自三个基本聚类家族的算法来寻找一组拥有一定程度相似性的对象。

第12章扩展基于梯度的优化概念,该概念在第2章中介绍过。还将介绍如何基于常见的反向传播算法在Python中构建强大的多层神经网络

第13章基于第12章的知识,为更有效地训练神经网络提供实用指南。该章的重点是TensorFlow 2.0,这是一个开源的Python软件库,它允许我们充分利用现代的多核图形处理器(GPU),通过对用户友好的Keras API,采用相同的构件来构建深度神经网络。

第14章接着第13章的内容更详细地介绍TensorFlow 2.0更高级的概念和功能。TensorFlow是一个庞大且复杂的软件库,该章将逐步探讨一些概念,例如将代码编译成静态图形以加快执行速度并定义可训练的模型参数。此外,该章还会提供用TensorFlow的Keras API以及TensorFlow的预制估计器训练深度神经网络的其他实践经验。

第15章介绍卷积神经网络(CNN)。CNN代表一种特定类型的深度神经网络体系结构,特别适合用于图像数据集。由于CNN的性能优于传统方法,因此现在已被广泛用于计算机视觉中,在各种图像识别任务方面获得了非常优秀的结果。在该章中,你将学习如何将卷积层用作图像分类的强大的特征提取器。

第16章介绍深度学习的另外一种常用的神经网络体系结构,它特别适合处理文本序列数据和时间序列数据。作为热身练习,在该章中,我们应用不同的循环神经网络来预测电影评论的情感。然后将学习神经网络如何从书中提取信息,以生成全新的文本。

第17章介绍一种常用的神经网络对抗训练机制,可用于生成逼真的新图像。该章首先简要地介绍自动编码器,这是一种可用于数据压缩的特定类型的神经网络体系结构。然后展示如何将自动编码器的解码器部分与第二个神经网络相结合,以区分真实图像和合成图像。通过让两个神经网络在对抗性训练中相互竞争的方法,实现用于生成新的手写数字的生成对抗网络。最后,在介绍生成对抗网络的基本概念之后,介绍诸如Wasserstein距离指标等可以提高对抗性训练稳定性的方法。

第18章讨论常用于训练机器人和其他自主系统的机器学习子类别。该章首先介绍强化学习(RL)的基础知识,让你熟悉智能体与环境的交互、强化学习系统的奖励过程,以及从经验中学习的概念。涵盖基于模型和无模型两大类强化学习。在介绍完基本算法(如基于蒙特卡罗和基于时间距离的学习)之后,我们将动手实现并训练一个可以使用Q学习算法在网格世界环境里导航的智能体。最后,该章将介绍深度Q学习算法,这是使用深度神经网络的Q学习的变体。

阅读本书需要的材料

要执行本书的示例代码,需要在macOS、Linux或者Microsoft Windows操作系统上安装Python 3.7.0或更新的版本。本书将持续使用包括SciPy、NumPy、scikit-learn、Matplotlib和pandas在内的Python的科学计算软件库。

第1章将为设置Python环境及其核心库提供指令和有用的提示。我们将逐渐添加更多的软件库,另外也会在不同的章节中分别提供相应的安装指令,例如第8章的自然语言处理NLTK库、第9章的Flask网络框架库,以及从第13章到第18章用于在GPU上高效训练神经网络的TensorFlow。

下载示例代码及彩色图像

本书的示例代码及彩色图像可以从http://www.packtpub.com通过个人账号下载,也可以访问华章图书官网http://www.hzbook.com,通过注册并登录个人账号下载。

你也可以从GitHub网址https://github.com/rasbt/python-machine-learning-book-3rd-edition下载全部的示例代码。

本书所有代码也以Jupyter Notebook的格式提供,这可以在本书第1章的代码文件夹中找到简明的指令,其具体位置为https://github.com/rasbt/python-machine-learning-book-3rd-edition/tree/master/ch01#pythonjupyter-notebook。想要了解更多有关Jupyter Notebook用户界面的信息,请参考https://jupyter-notebook.readthedocs.io/en/stable/网站上的官方文档。

尽管我们推荐使用Jupyter Notebook来执行代码,但是所有的代码示例仍然会以Python脚本(例如ch02/ch02.py)和Jupyter Notebook(例如ch02/ch02.ipynb)两种格式提供。另外,推荐阅读每章附带的README.md文件,以了解更多的信息和更新情况(例如https://github.com/rasbt/python-machine-learning-book-3rd-edition/blob/master/ch01/README.md)。

我们也把本书中用到的彩色图像截屏或者图表以PDF文件格式提供给读者。彩色图像有助于读者更好地理解输出中的变化。可以从网站https://static.packt-cdn.com/downloads/9781789955750_ColorImages.pdf下载该文件。

约定

新的术语重要的词用粗体显示。

008-01 在这样的提示后会显示警告或重要注释。

008-02 在这样的提示后会显示提示和窍门。

延伸阅读

如果你正在考虑从事机器学习工作,或者只想跟上该领域的最新进展,我们向你推荐机器学习领域以下领先专家的著作。

  • Geoffrey Hinton(http://www.cs.toronto.edu/~hinton/)
  • Andrew Ng(http://www.andrewng.org/)
  • Yann LeCun(http://yann.lecun.com)
  • Juergen Schmidhuber(http://people.idsia.ch/~juergen/)
  • Yoshua Bengio(http://www.iro.umontreal.ca/~bengioy/yoshua_en/)

仅举几例!最后,你可以从下面这些网站了解作者们所擅长的内容:

https://sebastianraschka.com

http://vahidmirjalili.com.

如果对本书有任何疑问或者需要一些有关机器学习的提示,欢迎与我们联系。