# 前言

**人工智能**（ **AI** ）的最新发展已将强大的力量交在人类手中。 权力越大，责任就成比例。 无人驾驶汽车，聊天机器人和对未来的日益准确的预测只是 AI 能够超越人类增长和进步能力的几个例子。

人工智能正在成为一条核心的，变革性的道路，正在改变我们思考生活各个方面的方式。 它正在影响行业。 它正在变得越来越普遍，并嵌入到我们的日常生活中。 最令人兴奋的是，这是一个仍处于起步阶段的领域：AI 革命才刚刚开始。

随着我们收集越来越多的数据并使用越来越快的算法来处理这些数据，我们可以使用 AI 来构建越来越准确的模型，并回答越来越复杂，以前难以解决的问题。

因此，与 AI 一起工作和充分利用其能力只会增加其价值就不足为奇了。 在本书中，我们探索了各种现实情况，并学习了如何将相关的 AI 算法应用于各种问题。

本书从最基本的 AI 概念开始，并逐步以这些概念为基础来解决日益棘手的问题。 它将使用在开始的章节中收集的初始知识作为基础，以使读者能够探索和解决 AI 中一些更复杂的问题。 到本书结尾，读者将对许多 AI 技术有深入的了解，并对何时使用这些技术有信心。

我们将从谈论 AI 的各个领域开始。 然后，我们将继续讨论更复杂的算法，例如极其随机的森林，隐马尔可夫模型，遗传算法，人工神经网络，卷积神经网络等等。

本书适用于希望使用 AI 算法创建实际应用程序的 Python 程序员。 这本书对 Python 初学者很友好，但是熟悉 Python 编程肯定会有所帮助，因此您可以试用这些代码。 对于希望实施人工智能技术的经验丰富的 Python 程序员而言，它也很有用。

您将学习如何对需要使用的算法类型做出明智的决策，以及如何实现这些算法以获得最佳结果。 如果您想构建可以理解图像，文本，语音或其他某种形式的数据的通用应用程序，那么这本有关人工智能的书肯定会助您一臂之力！

# 这本书适合谁

本书适用于希望构建现实人工智能应用程序的 Python 开发人员。 这本书对 Python 初学者很友好，但是熟悉 Python 对于玩弄代码很有帮助。 对于希望在现有技术堆栈中使用人工智能技术的经验丰富的 Python 程序员而言，它也将很有用。

# 这本书涵盖的内容

*第 1 章*和*人工智能简介*

本章提供了将在整本书中使用的一些基本定义和分组。 它还将提供当今人工智能和机器学习领域的总体分类。

*第 2 章*和*人工智能的基本用例*

人工智能是一个引人入胜的话题，知识领域广泛。 在当前状态下，它产生的问题多于答案，但是肯定有很多地方在应用人工智能，甚至在许多情况下，我们甚至都没有意识到。 在深入研究驱动 AI 的基本算法之前，我们将分析迄今为止该技术的一些最受欢迎的用例。

*第 3 章*和*机器学习管道*

模型训练只是机器学习过程中的一小部分。 数据科学家经常花费大量时间来清理，转换和准备数据，以备 AI 模型使用。 由于数据准备是一项非常耗时的活动，因此，我们将介绍最先进的技术来促进此活动以及精心设计的生产数据管道应具有的其他组件。

*第 4 章*和*特征选择和特征工程*

通过选择正确的尺寸传递给模型以及发现可以丰富输入数据集的新尺寸，可以提高模型性能。 本章将说明如何从现有功能以及外部资源创建新功能。 它还将介绍如何消除冗余或低价值的功能。

*第 5 章*和*使用监督学习的分类和回归*

本章详细定义了监督学习。 它提供了属于该分类的各种方法和算法的分类法。

*第 6 章*和*集成学习的预测分析*

集成学习是一项强大的技术，可让您汇总各个模型的功能。 本章介绍了不同的合奏方法，以及何时使用它们的指南。 最后，本章将介绍如何将这些技术应用于实际事件预测。

*第 7 章*和*在无监督学习的情况下检测模式*

本章将探讨聚类和数据分割的概念，以及它们与无监督学习的关系。 它还将介绍如何执行聚类以及如何应用各种聚类算法。 它将显示几个示例，使读者可以直观地看到这些算法的工作方式。 最后，它将介绍这些算法在实际情况下执行聚类和分段的应用。

*第 8 章*和*构建推荐系统*

本章将演示如何构建推荐系统。 它还将显示如何保留用户首选项。 它将涵盖最近邻居搜索和协作过滤的概念。 最后，将有一个示例显示如何构建电影推荐系统。

*第 9 章*和*逻辑编程*

本章将介绍如何使用逻辑编程编写程序。 它将讨论各种编程范例，并了解如何使用逻辑编程构造程序。 它将重点介绍逻辑编程的构建块，并介绍如何解决该领域的问题。 最后，将为解决各种问题的各种求解器构建各种 Python 程序实现。

*第 10 章*和*启发式搜索技术*

本章介绍启发式搜索技术。 启发式搜索技术用于搜索解决方案空间以得出答案。 使用指导搜索算法的试探法进行搜索。 启发式算法允许算法加快处理过程，否则将需要很长时间才能得出解决方案。

*第 11 章*和*遗传算法和遗传编程*

我们将讨论基因编程的基础及其在 AI 领域中的重要性。 我们将学习如何使用遗传算法解决简单的问题。 我们将了解一些用于基因编程的基本概念。 然后，我们将看到如何将此应用于实际问题。

*第 12 章*和*云上的人工智能*

云使我们能够加速 AI 开发，工作负载和部署。 在本章中，我们将探讨支持和加速 AI 项目的最受欢迎供应商提供的不同产品。

*第 13 章*和*使用人工智能构建游戏*

本章将介绍如何使用人工智能技术构建游戏。 搜索算法将用于制定制胜游戏的策略和战术。 最后，将为各种游戏构建智能机器人。

*第 14 章*和*构建语音识别器*

本章将介绍如何执行语音识别。 它将显示如何处理语音数据并从中提取特征。 最后，它将演示如何使用提取的功能来构建语音识别系统。

*第 15 章*，*自然语言处理*

本章将重点介绍 AI 的重要领域，即**自然语言处理**（ **NLP** ）。 它将讨论各种概念，例如标记化，词干化和词形化处理文本。 它还将介绍如何构建“语言袋”模型并将其用于分类文本。 它将演示如何使用机器学习来分析给定句子的情感。 最后，它将显示主题建模并介绍用于识别文档中主题的系统实现。

*第 16 章*和*聊天机器人*

聊天机器人可以通过提高生产力和转移呼叫帮助节省资金并更好地为客户服务。 在本章中，我们将介绍聊天机器人的基础知识以及可用于构建聊天机器人的工具。

最后，我们将从头开始构建一个成熟的聊天机器人，它将实现一个实际的用例，包括错误处理，将其连接到外部 API 以及部署该聊天机器人。

*第 17 章*和*顺序数据和时间序列分析*

我们将讨论概率推理的概念。 我们将学习如何应用该概念为顺序数据建立模型。 我们将学习时间序列数据的各种特征。 我们将讨论隐马尔可夫模型以及如何使用它们分析顺序数据。 然后，我们将使用此技术来分析股票市场数据。

*第 18 章*，*图像识别*

在本章中，我们将讨论如何处理图像。 我们将学习如何检测和跟踪实时视频中的对象。 然后，我们将学习如何应用这些技术来跟踪人脸的各个部分。

*第 19 章*和*神经网络*

我们将讨论人工神经网络。 我们将学习感知器，并了解它们如何用于构建神经网络。 我们将学习如何构建单层和多层神经网络。 我们将讨论神经网络如何学习训练数据并建立模型。 我们将学习成本函数和反向传播。 然后，我们将使用这些技术来执行光学字符识别。

*第 20 章*和*带卷积神经网络的深度学习*

我们将在本章中讨论深度学习的基础知识。 将向读者介绍卷积神经网络中的各种概念，以及如何将它们用于图像识别。 我们将讨论卷积神经网络中的各个层。 然后，我们将使用这些技术来构建实际应用程序。

*第 21 章*，*递归神经网络和其他深度学习模型*

本章将继续涵盖其他类型的深度学习算法。 首先将介绍递归神经网络，然后将介绍较新的算法，例如注意力，自我注意和变压器模型。 本章将介绍使用这些网络的用例以及使用这些模型体系结构的优势及其局限性。 最后，讨论的技术将用于构建实际应用程序。

*第 22 章*和*通过强化学习创建智能代理*

本章将定义**强化学习**（ **RL** ），并涵盖 RL 模型中的组件。 它将详细介绍用于构建 RL 系统的技术。 最后，它将演示如何构建可以通过与环境交互进行学习的学习代理。

*第 23 章*和*人工智能和大数据*

本章将分析如何将大数据技术应用于加速机器学习流程，以及涵盖可用于简化数据集提取，转换和验证的各种技术。 最后，它将引导读者阅读使用 Apache Spark 的实际示例，以演示本章介绍的概念。

# 这本书需要什么

本书侧重于 Python 中的 AI，而不是 Python 本身。 我们已经使用 Python 3 来构建各种应用程序。 我们专注于如何以最佳方式利用各种 Python 库来构建实际应用程序。 本着这种精神，我们试图使所有代码尽可能友好和可读。 我们认为，这将使我们的读者能够轻松理解代码并在不同的场景中轻松使用它。

## 使用的约定

在本书中，您将找到许多可以区分不同类型信息的文本样式。 以下是这些样式的一些示例，并对其含义进行了解释。

`CodeInText`：指示文本，数据库表名称，文件夹名称，文件名，文件扩展名，路径名，虚拟 URL，用户输入和 Twitter 句柄中的代码字。 例如：“ `n_estimators`参数是指将要构造的树的数量。”

代码块设置如下：

```py
# Create label encoder and fit the labels
encoder = preprocessing.LabelEncoder()
encoder.fit(input_labels) 
```

当我们希望引起您对代码块特定部分的注意时，相关的行或项目以粗体显示：

```py
# Create label encoder and fit the labels 
encoder = preprocessing.LabelEncoder()
encoder.fit(input_labels) 
```

任何命令行输入或输出的编写方式如下：

```py
$ python3 random_forests.py --classifier-type rf 
```

**粗体**：表示新术语，重要单词或您在屏幕上看到的单词，例如，在菜单或对话框中，也显示在这样的文本中。 例如：“ **监督学习**是指基于标记的训练数据构建机器学习模型的过程。”

警告或重要提示会出现在这样的框中。

提示和技巧如下所示。
