提交 8db65f59 编写于 作者: W wizardforcel

2020-12-06 18:31:39

上级 bd666c43
......@@ -52,7 +52,7 @@
第 8 章,“构建推荐系统”
本章将演示如何构建推荐系统。 它还将显示如何保留用户首选项。 它将涵盖最近邻搜索和协过滤的概念。 最后,将有一个示例显示如何构建电影推荐系统。
本章将演示如何构建推荐系统。 它还将显示如何保留用户首选项。 它将涵盖最近邻搜索和协过滤的概念。 最后,将有一个示例显示如何构建电影推荐系统。
第 9 章,“逻辑编程”
......@@ -118,7 +118,7 @@
# 这本书需要什么
本书侧重于 Python 中的 AI,而不是 Python 本身。 我们已经使用 Python 3 来构建各种应用程序。 我们专注于如何以最佳方式利用各种 Python 库来构建实际应用程序。 本着这种精神,我们试图使所有代码尽可能友好和可读。 我们认为,这将使我们的读者能够轻松理解代码并在不同的场景中轻松使用它。
本书侧重于 Python 中的 AI,而不是 Python 本身。 我们已经使用 Python3 来构建各种应用程序。 我们专注于如何以最佳方式利用各种 Python 库来构建实际应用程序。 本着这种精神,我们试图使所有代码尽可能友好和可读。 我们认为,这将使我们的读者能够轻松理解代码并在不同的场景中轻松使用它。
## 使用的约定
......
......@@ -14,7 +14,7 @@
* 什么是理性代理?
* 什么是一般问题解决器?
* 如何建立智能体
* 如何安装 Python 3 和相关软件包
* 如何安装 Python3 和相关软件包
# 什么是 AI?
......@@ -241,19 +241,19 @@ AI 世界中有两种类型的模型:分析模型和学习模型。 在我们
机器学习使我们可以获得可以在推理引擎中使用的学习模型。 最好的事情之一是,我们不需要导出基本的数学公式。 您不需要了解复杂的数学,因为机器会根据数据得出公式。 我们需要做的就是创建输入列表和相应的输出。 我们得到的的学习模型只是标记的输入与与所需输出之间的关系。
# 安装 Python 3
# 安装 Python3
在本书中,我们将使用 Python 3。 确保在计算机上安装了最新版本的 Python 3。 键入以下命令进行检查:
在本书中,我们将使用 Python3。 确保在计算机上安装了最新版本的 Python3。 键入以下命令进行检查:
```py
$ python3 --version
```
如果看到打印出类似`Python 3.x.x`(其中`x.x`是版本号)的内容,那很好。 如果不是,则直接安装在 中。
如果看到打印出类似`Python3.x.x`(其中`x.x`是版本号)的内容,那很好。 如果不是,则直接安装在 中。
## 在 Ubuntu 上安装
在 Ubuntu 14.xx 及更高版本上,Python 3 已默认安装。 如果没有,您可以使用以下命令来安装:
在 Ubuntu 14.xx 及更高版本上,Python3 已默认安装。 如果没有,您可以使用以下命令来安装:
```py
$ sudo apt-get install python3
......@@ -281,7 +281,7 @@ $ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/maste
$ brew update
```
让我们安装 Python 3:
让我们安装 Python3:
```py
$ brew install python3
......@@ -297,9 +297,9 @@ $ python3 --version
## 在 Windows 上安装
如果使用 Windows,建议您使用 Python 3 的`SciPy-stack`兼容发行版。Anaconda 非常流行并且易于使用。 [您可以在以下位置找到安装说明](https://www.continuum.io/downloads)
如果使用 Windows,建议您使用 Python3 的`SciPy-stack`兼容发行版。Anaconda 非常流行并且易于使用。 [您可以在以下位置找到安装说明](https://www.continuum.io/downloads)
如果要检查 Python 3 的其他`SciPy-stack`兼容发行版,可以在[这个页面](http://www.scipy.org/install.html)中找到它们。 这些发行版的好处是它们附带了所有必需的软件包。 如果使用这些版本之一,则无需单独安装软件包。
如果要检查 Python3 的其他`SciPy-stack`兼容发行版,可以在[这个页面](http://www.scipy.org/install.html)中找到它们。 这些发行版的好处是它们附带了所有必需的软件包。 如果使用这些版本之一,则无需单独安装软件包。
安装后,请像前面一样运行检查命令:
......@@ -320,7 +320,7 @@ $ python3 --version
* [scikit-learn](http://scikit-learn.org/stable/install.htmlx)
* [matplotlib](http://matplotlib.org/1.4.2/users/installing.html)
如果您使用的是 Windows,则应该已安装 Python 3 的`SciPy-stack`兼容版本。
如果您使用的是 Windows,则应该已安装 Python3 的`SciPy-stack`兼容版本。
# 正在加载数据
......@@ -384,7 +384,7 @@ scikit-learn 包中还有可用的图像数据集。 每个图像的形状均为
如您所见,它具有八行八列。
# 摘要
# 总结
在本章中,我们讨论了:
......@@ -397,6 +397,6 @@ scikit-learn 包中还有可用的图像数据集。 每个图像的形状均为
* 如何使用机器学习开发智能体
* 不同类型的机器学习模型
我们还介绍了如何在各种操作系统上安装 Python 3,以及如何安装构建 AI 应用程序所需的必要软件包。 我们讨论了如何使用这些包来加载 scikit-learn 中可用的数据。
我们还介绍了如何在各种操作系统上安装 Python3,以及如何安装构建 AI 应用程序所需的必要软件包。 我们讨论了如何使用这些包来加载 scikit-learn 中可用的数据。
在下一章中,我们将学习监督学习以及如何建立分类和回归模型。
\ No newline at end of file
......@@ -486,7 +486,7 @@ Lake Formation 还提供了集中式仪表板,管理员可以在其中管理
* 亚马逊 QuickSight
* 亚马逊 SageMaker
# 摘要
# 总结
本章提供了一些 AI 应用的示例。 也就是说,这里的内容并没有开始刮擦表面! 我们试图将用例保留在广泛使用的技术上,或者至少将在不久之后变得可用的技术上。 不难推断该技术将如何继续改进,变得更便宜并得到更广泛的应用。 例如,当自动驾驶汽车开始流行时,这将非常令人兴奋。
......
......@@ -344,7 +344,7 @@
机器学习模型对于企业而言可能至关重要。 确保它们不会成为瓶颈的关键是正确监视已部署的模型。 作为您的机器学习管道的一部分,请确保监视部署的机器学习模型并与 SLA 进行比较,以确保获得令人满意的业务成果。
# 摘要
# 总结
本章详细列出了创建机器学习管道所涉及的不同步骤。 此游览应被视为所涉及步骤的初步概述。 随着本书的发展,您将学习如何改善自己的管道,但是我们确实学习了一些当今用于建立管道的最佳实践和最受欢迎的工具。 在审查中,成功管道的步骤如下:
......
......@@ -626,7 +626,7 @@ print(data)
还有许多其他可能性。 我们将其留给读者集思广益或研究其他方法。
# 摘要
# 总结
在本章中,我们分析了机器学习流程中的两个重要步骤:
......
......@@ -1172,7 +1172,7 @@ Predicted price: 18.5217801073
该部分的代码在文件`house_prices.py`中给出。 查看文件的第一行,查看`18.52`的预测与实际目标变量的接近程度。
# 摘要
# 总结
在本章中,我们了解了监督学习和无监督学习之间的区别。 我们讨论了数据分类问题以及如何解决它。 我们了解了如何使用各种方法预处理数据。 我们还学习了标签编码以及如何构建标签编码器。 我们讨论了逻辑回归并构建了逻辑回归分类器。 我们了解了朴素的贝叶斯分类器是什么,并学习了如何建立分类器。 我们还学习了如何构建混淆矩阵。
......
......@@ -875,7 +875,7 @@ print("Predicted traffic:", int(regressor.predict([test_datapoint_encoded])[0]))
完整代码在文件`traffic_prediction.py`中给出。 如果运行代码,则将获得`26`作为输出,接近实际值,并确认我们的模型正在做出不错的预测。 您可以从数据文件中确认。
# 摘要
# 总结
在本章中,我们学习了集成学习及其在现实世界中的使用方式。 我们讨论了决策树以及如何基于决策树构建分类器。
......
......@@ -820,7 +820,7 @@ plt.show()
图 11:集群中心输出
## 摘要
## 总结
在本章中,我们首先讨论无监督学习及其应用。 然后,我们学习了聚类以及如何使用 K 均值算法聚类数据。 我们讨论了如何使用均值漂移算法估计聚类数。 我们讨论了轮廓分数以及如何估计聚类的质量。 我们了解了高斯混合模型,以及如何基于它们建立分类器。 我们还讨论了“亲和力传播”模型,并使用它在股票市场中找到了子组。 然后,我们应用均值漂移算法根据购物模式细分市场。
......
......@@ -2,14 +2,14 @@
# 建筑推荐系统
在本章中,我们将学习如何建立一个推荐系统来推荐人们可能喜欢看的电影。 我们将了解 K 最近邻分类器,并了解如何实现它。 我们使用这些概念来讨论协过滤,然后使用它来构建推荐系统。
在本章中,我们将学习如何建立一个推荐系统来推荐人们可能喜欢看的电影。 我们将了解 K 最近邻分类器,并了解如何实现它。 我们使用这些概念来讨论协过滤,然后使用它来构建推荐系统。
到本章末,您将了解以下内容:
* 提取最近的邻居
* 建立 *K 最近邻*分类器
* 计算相似度分数
* 使用协过滤查找相似用户
* 使用协过滤查找相似用户
* 建立电影推荐系统
# 提取最近的邻居
......@@ -310,7 +310,7 @@ plt.show()
Predicted output: 1
```
像任何机器学习模型一样,输出是一个预测,可能与实际结果 lt 相匹配。
像任何机器学习模型一样,输出是一个预测,可能与实际结果相匹配。
# 计算相似度分数
......@@ -548,17 +548,17 @@ Pearson score:
也可以使用其他参数组合来运行。
在本节中,我们学习了如何计算相似性得分,并了解了为什么在推荐系统的构建中该重要因素。 在下一节中,我们将学习如何通过协作 e 过滤来识别具有相似偏好的用户。
在本节中,我们学习了如何计算相似性得分,并了解了为什么在推荐系统的构建中该重要因素。 在下一节中,我们将学习如何通过协过滤来识别具有相似偏好的用户。
# 使用协过滤查找相似用户
# 使用协过滤查找相似用户
作过滤是指在数据集中的对象之间标识模式以决定新对象的过程。 在推荐引擎的上下文中,协作过滤用于通过查看数据集中的相似用户来提供推荐。
同过滤是指在数据集中的对象之间标识模式以决定新对象的过程。 在推荐引擎的上下文中,协同过滤用于通过查看数据集中的相似用户来提供推荐。
通过收集数据集中不同用户的偏好,我们可以协作该信息来过滤用户。 因此,名称为协过滤。
通过收集数据集中不同用户的偏好,我们可以协作该信息来过滤用户。 因此,名称为协过滤。
这里的假设是,如果两个人对一组电影的收视率相似,那么他们对一组新的未知电影的选择也将相似。 通过识别那些普通电影中的模式,可以对新电影做出预测。 在上一节中,我们学习了如何比较数据集中的不同用户。 现在将使用讨论的评分技术在数据集中查找相似的用户。 协过滤算法可以并行化并在大数据系统(例如 AWS EMR 和 Apache Spark)中实现,从而能够处理数百 TB 的数据。 这些方法可用于各种垂直领域,例如金融,在线购物,市场营销,客户研究等。
这里的假设是,如果两个人对一组电影的收视率相似,那么他们对一组新的未知电影的选择也将相似。 通过识别那些普通电影中的模式,可以对新电影做出预测。 在上一节中,我们学习了如何比较数据集中的不同用户。 现在将使用讨论的评分技术在数据集中查找相似的用户。 协过滤算法可以并行化并在大数据系统(例如 AWS EMR 和 Apache Spark)中实现,从而能够处理数百 TB 的数据。 这些方法可用于各种垂直领域,例如金融,在线购物,市场营销,客户研究等。
让我们开始构建协过滤系统。
让我们开始构建协过滤系统。
创建一个新的 Python 文件并导入以下软件包:
......@@ -681,7 +681,7 @@ $ python3 collaborative_filtering.py --user "Clarissa Jackson"
* 提取最近的邻居
* 建立 K 近邻分类器
* 计算相似度分数
* 使用协过滤查找相似用户
* 使用协过滤查找相似用户
现在所有的构建块都已就绪,现在该构建电影推荐系统了。 我们学习了构建推荐系统所需的所有基本概念。 在本节中,我们将基于文件`ratings.json`中提供的数据构建电影推荐系统。 此文件包含一组人物及其对各种电影的评分。 要查找给定用户的电影推荐,我们需要在数据集中找到相似的用户,然后提出针对此人的推荐。 让我们开始吧。
......@@ -838,8 +838,8 @@ $ python3 movie_recommender.py --user "Julie Hammel"
输出中的电影是系统的实际建议,基于先前对 Julie Hammel 观察到的偏好。 潜在地,仅通过观察更多和个数据点,系统就可以继续变得更好。
# 摘要
# 总结
在本章中,我们学习了如何从给定数据集中提取给定数据点的 K 最近邻。 然后,我们使用此概念来构建 K 最近邻分类器。 我们在中使用了如何计算相似度分数,例如欧几里得分数和皮尔逊分数。 我们学习了如何使用协过滤从给定的数据集中查找相似的用户,并使用它来构建电影推荐系统。 最后,我们能够测试我们的模型并针对系统以前未见过的数据点运行它。
在本章中,我们学习了如何从给定数据集中提取给定数据点的 K 最近邻。 然后,我们使用此概念来构建 K 最近邻分类器。 我们在中使用了如何计算相似度分数,例如欧几里得分数和皮尔逊分数。 我们学习了如何使用协过滤从给定的数据集中查找相似的用户,并使用它来构建电影推荐系统。 最后,我们能够测试我们的模型并针对系统以前未见过的数据点运行它。
在下一章中,我们将学习逻辑编程,并了解如何构建可以解决实际问题的推理引擎。
\ No newline at end of file
......@@ -57,9 +57,9 @@
完成操作的过程如下:
1. 加 3 + 2 + 9 = 14
1. 相加`3 + 2 + 9 = 14`
2. 我们需要保留一个数字,即 4,然后携带 1
3. 加 2 +1 + 4(加上我们携带的 1)= 8
3. 相加`2 + 1 + 4 + 1 = 8`(加上我们携带的 1)
4. 结合 8 和 4。最终结果是:84
另一方面,要推断出某些东西,我们需要从一个推测开始。 证明是根据一组规则构造的。 计算过程是机械的,而演绎过程则更具创造性。
......@@ -80,21 +80,25 @@
关于逻辑编程,最重要的事情之一就是我们如何对待规则。 规则可以视为逻辑语句。 让我们考虑以下内容:
*凯西下令甜点= > K 阿西很高兴*
```
Kathy orders dessert => Kathy is happy
```
这可以理解为:*如果 Kathy 很高兴**,则 Kathy 点甜点*。 当凯西开心时,也可以将其解释为订购甜品。
这可以理解为:“如果 Kathy 很开心”和“则 Kathy 订购甜品”。 当凯西开心时,也可以将其解释为订购甜品。
同样,让我们​​考虑以下规则和事实:
*canfly(X):-鸟(X),不是异常(X)。*
```
canfly(X) :- bird(X), not abnormal(X).
*异常(X):受伤(X)。*
abnormal(X) :- wounded(X).
*鸟(约翰)。*
bird(john).
*鸟(玛丽)。*
bird(mary).
*受伤(约翰)。*
wounded(john).
```
以下是解释规则和事实的方法:
......@@ -164,15 +168,21 @@ expression_orig = 3 x (-2) + (1 + 2 x 3) x (-1)
让我们用带掩码的变量生成该表达式。 第一个表达式是:
*expression1 =(1 + 2 x a)x b + 3 x c*
```py
expression1 = (1 + 2 x a) x b + 3 x c
```
第二个表达式是:
*expression2 = c x 3 + b x(2 x a +1)*
```py
expression2 = c x 3 + b x (2 x a + 1)
```
第三个表达式是:
*expression3 =((((2 x a)x b)+ b)+ 3 x c*
```py
expression3 = ((((2 x a) x b) + b) + 3 x c
```
如果仔细观察,所有三个表达式都代表相同的基本表达式。 目标是将这些表达式与原始表达式匹配以提取未知值:
......@@ -260,7 +270,7 @@ List of primes in the list:
List of first 7 prime numbers: (2, 3, 5, 7, 11, 13, 17)
```
您可以确认输出 t 值正确。
您可以确认输出值正确。
# 解析家谱
......@@ -750,7 +760,7 @@ for item in solutions[0]:
前面的图显示了使用求解器获得的所有值。 如编号名称所示,其中一些仍然未知。 即使信息不完整,求解器仍能够回答问题。 但是为了回答每个问题,您可能需要添加更多规则。 该程序旨在演示如何用不完整的信息解决难题。 您可以尝试使用它,看看如何为各种场景构建拼图解算器。
# 摘要
# 总结
在本章中,我们学习了如何使用逻辑编程编写 Python 程序。 我们讨论了各种编程范例如何处理构建程序。 我们了解了如何在逻辑编程中构建程序。 我们了解了逻辑编程的各种构建块,并讨论了如何解决此领域的问题。 我们实施了各种 Python 程序来解决有趣的问题和难题。
......
......@@ -21,7 +21,7 @@
在第 2 章,“人工智能的基本用例”中,我们了解了 Pedro Domingos 定义的五个流派。 *符号主义者*流派是最“古老”的流派之一。 至少对我来说,这一事实不足为奇。 作为人类,我们尝试在所有事物中找到规则和模式。 不幸的是,世界有时是混乱的,并非所有事物都遵循简单的规则。
这就是为什么当我们没有秩序的世界时,其他流派出现来帮助我们的原因。 但是,当我们的搜索空间较小且域受到限制时,使用启发式,约束满足以及本章中介绍的其他技术对于这组问题很有用。 当组合的数量相对较少且组合爆炸受到限制时,这些技术很有用。 例如,当城市数量大约为 20 时,使用这些技术解决旅行商问题很简单。如果我们尝试对`n`= 2000 求解相同的问题,则必须使用其他方法来解决。 不要探索整个空间,而只能给出结果的近似值。
这就是为什么当我们没有秩序的世界时,其他流派出现来帮助我们的原因。 但是,当我们的搜索空间较小且域受到限制时,使用启发式,约束满足以及本章中介绍的其他技术对于这组问题很有用。 当组合的数量相对较少且组合爆炸受到限制时,这些技术很有用。 例如,当城市数量大约为 20 时,使用这些技术解决旅行商问题很简单。如果我们尝试对`n = 2000`求解相同的问题,则必须使用其他方法来解决。 不要探索整个空间,而只能给出结果的近似值。
# 什么是启发式搜索?
......@@ -29,7 +29,7 @@
通常,解决给定问题的选项太多,以至于无法开发单个算法来找到确定的最佳解决方案。 同样,不可能通过所有解决方案,因为这过于昂贵。 在这种情况下,我们依靠经验法则,通过消除明显错误的选项来帮助我们缩小搜索范围。 这个经验法则称为,称为**启发式**。 使用启发式搜索指导搜索的方法称为**启发式搜索**
启发式技术之所以强大,是因为它们可以加快过程。 即使启发式方法无法消除某些选项,也将有助于订购 t 软管选项,以便可能首先提出更好的解决方案。 如前所述,启发式搜索在计算上可能会很昂贵。 现在,我们将学习如何使用*快捷方式**修剪*搜索 tr ee
启发式技术之所以强大,是因为它们可以加快过程。 即使启发式方法无法消除某些选项,也将有助于订购 t 软管选项,以便可能首先提出更好的解决方案。 如前所述,启发式搜索在计算上可能会很昂贵。 现在,我们将学习如何使用*快捷方式**修剪*搜索
## 不知情或知情的搜索
......@@ -39,7 +39,7 @@
在图问题中,启发式可以用来指导搜索。 例如,在每个节点处,我们可以定义一个启发式函数,该函数返回一个分数,该分数表示从当前节点到目标的路径成本估算。 通过定义此启发式函数,我们可以将正确的方向告知搜索技术以达到目标。 这将允许算法识别哪个邻居将导致目标。
我们需要注意,启发式搜索可能并不总是总是找到最佳解决方案。 这是因为我们不是在探索每种可能性,而是在依靠启发式方法。 搜索可以确保在合理的时间内找到一个好的解决方案,但这是我们对实际解决方案的期望。 在现实世界中,我们需要快速有效的解决方案。 启发式搜索通过快速找到合理的解决方案来提供有效的解决方案。 它们用于无法以其他任何方式解决问题或需要很长时间才能解决的问题。 *修剪*树的另一种方法是利用数据固有的约束。 在下一部分中,我们将学习更多利用这些 c 约束的修剪技术。
我们需要注意,启发式搜索可能并不总是总是找到最佳解决方案。 这是因为我们不是在探索每种可能性,而是在依靠启发式方法。 搜索可以确保在合理的时间内找到一个好的解决方案,但这是我们对实际解决方案的期望。 在现实世界中,我们需要快速有效的解决方案。 启发式搜索通过快速找到合理的解决方案来提供有效的解决方案。 它们用于无法以其他任何方式解决问题或需要很长时间才能解决的问题。 *修剪*树的另一种方法是利用数据固有的约束。 在下一部分中,我们将学习更多利用这些约束的修剪技术。
# 约束满意度问题
......@@ -47,13 +47,13 @@
这些问题称为**约束满意度问题****CSP**)。
为了获得一些直观的理解,让我们快速看一下 Sudoku 拼图的示例部分。 数独游戏是我们不能在水平线,垂直线或同一方块中两次拥有相同的数字。 这是数独板的示例:
为了获得一些直观的理解,让我们快速看一下数独拼图的示例部分。 数独游戏是我们不能在水平线,垂直线或同一方块中两次拥有相同的数字。 这是数独板的示例:
![A black and silver text on a white surface Description automatically generated](img/B15441_10_01.png)
图 1:数独板的示例
使用约束的满意度和 Sudoku 的规则,我们可以快速确定尝试使用哪些数字以及不尝试解决该难题的数字。 例如,在这个方块中:
使用约束的满意度和数独的规则,我们可以快速确定尝试使用哪些数字以及不尝试解决该难题的数字。 例如,在这个方块中:
![](img/B15441_10_02.png)
......@@ -63,11 +63,11 @@
使用 CSP,我们可以在尝试之前对它们进行修剪。
让我们来看看我们认为数字应该是红色突出显示的正方形的含义。 我们知道该数字不能为 1、6、8 或 9,因为这些数字已经存在于正方形中。 我们也知道它不能为 2 或 7,因为这些数字存在于水平线中。 我们也知道它不能是 3 或 4,因为这些数字已经在垂直线上。 这给我们留下了唯一的数字应该是– 5 的可能性
让我们来看看我们认为数字应该是红色突出显示的正方形的含义。 我们知道该数字不能为 1、6、8 或 9,因为这些数字已经存在于正方形中。 我们也知道它不能为 2 或 7,因为这些数字存在于水平线中。 我们也知道它不能是 3 或 4,因为这些数字已经在垂直线上。 这给我们留下了唯一的可能性,数字应该是 5
CSP 是数学上的问题,定义为一组必须满足一些约束的变量。 当我们得出最终解决方案时,变量的状态必须服从所有约束。 该技术将涉及给定问题的实体表示为变量上固定数量的约束的集合。 这些变量需要通过约束满足方法来解决。
这些问题需要在合理的时间内解决启发式方法和其他搜索技术的问题。 在这种情况下,我们将使用约束满足技术来解决有限域上的问题。 有限域由有限数量的元素组成。 由于我们正在处理有限域,因此我们可以使用搜索技术来获得解决方案。 为了进一步了解 CSP,我们现在将学习如何使用本地搜索技术来解决 C SP 问题。
这些问题需要在合理的时间内解决启发式方法和其他搜索技术的问题。 在这种情况下,我们将使用约束满足技术来解决有限域上的问题。 有限域由有限数量的元素组成。 由于我们正在处理有限域,因此我们可以使用搜索技术来获得解决方案。 为了进一步了解 CSP,我们现在将学习如何使用本地搜索技术来解决 CSP 问题。
# 本地搜索技术
......@@ -107,7 +107,7 @@ CSP 是数学上的问题,定义为一组必须满足一些约束的变量。
让我们看看如何使用贪婪搜索解决问题。 在此问题中,我们将尝试根据字母重新创建输入字符串。 我们将要求算法搜索解决方案空间并构建解决方案的路径。
在本章中,我们将使用名为`simpleai`的软件包。 它包含各种例程,这些例程可用于使用启发式搜索技术构建解决方案。 可在[这个页面](https://github.com/simpleai-team/simpleai)上获得。 为了使它在 Python 3 中工作,我们需要对源代码进行一些更改。随同本书的代码一起提供了一个名为`simpleai.zip`的文件。 将此文件解压缩到名为`simpleai`的文件夹中。 此文件夹包含对原始库的所有必要更改,以使其能够在 Python 3 中工作。将`simpleai`文件夹与您的代码位于同一文件夹中,并将置于您的代码中 顺利。
在本章中,我们将使用名为`simpleai`的软件包。 它包含各种例程,这些例程可用于使用启发式搜索技术构建解决方案。 可在[这个页面](https://github.com/simpleai-team/simpleai)上获得。 为了使它在 Python3 中工作,我们需要对源代码进行一些更改。随同本书的代码一起提供了一个名为`simpleai.zip`的文件。 将此文件解压缩到名为`simpleai`的文件夹中。 此文件夹包含对原始库的所有必要更改,以使其能够在 Python3 中工作。将`simpleai`文件夹与您的代码位于同一文件夹中,并将置于您的代码中 顺利。
创建一个新的 Python 文件并导入以下软件包:
......@@ -385,7 +385,7 @@ print('\nMinimum conflicts:', min_conflicts(problem))
图 6:以最小冲突启发式计算解决方案
您可以检查约束条件以查看解决方案 ns 是否满足所有这些约束条件。
您可以检查约束条件以查看解决方案是否满足所有这些约束条件。
# 解决区域着色问题
......@@ -484,19 +484,19 @@ if __name__=='__main__':
图 9:解决区域着色问题
您可以检查没有两个相邻的 cent 区域具有相同的颜色。
您可以检查没有两个相邻的区域具有相同的颜色。
# 构建 8 难题求解器
8 拼图是 15 拼图的变体。 您可以在[这个页面](https://en.wikipedia.org/wiki/15_puzzle)上进行检查。 您将看到一个随机的网格,目标是将其恢复为原始的有序配置。 您可以在[这个页面](http://mypuzzle.org/sliding)上玩游戏以熟悉。
我们将使用**A *算法**解决此问题。 它是一种算法,用于在图中找到解决方案的路径。 该算法是 **Dijkstra 算法**和贪婪最佳优先搜索的组合。 A *算法不会盲目猜测下一步该怎么做,而是选择看起来最有前途的算法。 在每个节点上,生成所有可能性的列表,然后选择达到目标所需的最低成本的可能性。
我们将使用`A*`算法解决此问题。 它是一种算法,用于在图中找到解决方案的路径。 该算法是 **Dijkstra 算法**和贪婪最佳优先搜索的组合。 `A*`算法不会盲目猜测下一步该怎么做,而是选择看起来最有前途的算法。 在每个节点上,生成所有可能性的列表,然后选择达到目标所需的最低成本的可能性。
让我们看看如何定义成本函数。 在每个节点上,都需要计算成本。 该成本基本上是两个成本的总和-第一个成本是到达当前节点的成本,第二个成本是从当前节点达到目标的成本。
我们将此求和用作启发式方法。 如我们所见,第二笔费用基本上是不理想的估计。 如果是完美的,那么 A *算法将很快到达解决方案。 但这不是通常的情况。 找到解决方案的最佳路径需要花费一些时间。 A *有效地找到最佳路径,并且是其中最流行的技术之一。
我们将此求和用作启发式方法。 如我们所见,第二笔费用基本上是不理想的估计。 如果是完美的,那么`A*`算法将很快到达解决方案。 但这不是通常的情况。 找到解决方案的最佳路径需要花费一些时间。 `A*`有效地找到最佳路径,并且是其中最流行的技术之一。
让我们使用 A *算法来构建 8 难题求解器。 这是`simpleai`库中提供的解决方案的变体。 创建一个新的 Python 文件并导入以下软件包:
让我们使用`A*`算法来构建 8 难题求解器。 这是`simpleai`库中提供的解决方案的变体。 创建一个新的 Python 文件并导入以下软件包:
```py
from simpleai.search import astar, SearchProblem
......@@ -635,7 +635,7 @@ for number in '12345678e':
goal_positions[number] = get_location(rows_goal, number)
```
使用我们先前定义的初始状态创建 A *求解器对象,并提取结果:
使用我们先前定义的初始状态创建`A*`求解器对象,并提取结果:
```py
# Create the solver object
......@@ -674,17 +674,17 @@ for i, (action, state) in enumerate(result.path()):
图 11:PuzzleSolver 输出的结尾-已实现目标!
如您所见,果阿 l 已实现,难题得以解决。
如您所见,目标已实现,难题得以解决。
# 建立迷宫求解器
让我们使用 A *算法来解决迷宫问题。 考虑下图:
让我们使用`A*`算法来解决迷宫问题。 考虑下图:
![](img/B15441_10_12.png)
图 12:迷宫问题的示例
**#**符号表示障碍物。`o`代表起点,`x`代表目标。 目的是找到从起点到终点的最短路径。 让我们看看如何在 Python 中做到这一点。 以下解决方案是`simpleai`库中提供的解决方案的变体。 创建一个新的 Python 文件并导入以下软件包:
`#`符号表示障碍物。`o`代表起点,`x`代表目标。 目的是找到从起点到终点的最短路径。 让我们看看如何在 Python 中做到这一点。 以下解决方案是`simpleai`库中提供的解决方案的变体。 创建一个新的 Python 文件并导入以下软件包:
```py
import math
......@@ -894,10 +894,10 @@ if __name__ == "__main__":
图 13:迷宫问题的解决方案
如您所见,算法留下了一点点的痕迹,并找到了从起点`o`到终点`x`的解。 至此,本章最后部分总结了 A *算法 ithm 的恶魔处理
如您所见,算法留下了一点点的痕迹,并找到了从起点`o`到终点`x`的解。 至此,本章最后部分总结了`A*`算法的迷宫解决方案
# 摘要
# 总结
在本章中,我们学习了启发式搜索技术的工作原理。 我们讨论了不知情和知情搜索之间的区别。 我们了解了约束满足问题,以及如何使用此范式解决问题。 我们讨论了本地搜索技术如何工作以及为什么在实践中使用了模拟退火。 我们对字符串问题实施了贪婪的搜索。 我们使用 CSP 公式解决了一个问题。
我们使用这种方法来解决区域着色问题。 然后,我们讨论了 A *算法及其如何用于找到解决方案的最佳路径。 我们用它来构建 8 难题求解器和迷宫求解器。 在下一章中,我们将讨论遗传算法及其如何用于解决现实世界中的问题。
\ No newline at end of file
我们使用这种方法来解决区域着色问题。 然后,我们讨论了`A*`算法及其如何用于找到解决方案的最佳路径。 我们用它来构建 8 难题求解器和迷宫求解器。 在下一章中,我们将讨论遗传算法及其如何用于解决现实世界中的问题。
\ No newline at end of file
......@@ -21,15 +21,15 @@
遗传算法是一种进化算法。 因此,为了理解遗传算法,我们需要讨论进化算法。 进化算法是一种运用启发式原理解决问题的元启发式优化算法。 进化的概念就像我们在自然界中发现的那样。 就像环境通过进化积极驱动“解决方案”一样,我们直接使用问题的函数和变量来得出解决方案。 但是在遗传算法中,任何给定的问题都以该算法操纵的位模式进行编码。
自主地解决问题是人工智能和机器学习的中心目标。 **遗传算法****GA**)是一种进化计算技术,可自动解决问题,而无需用户事先知道或指定解决方案的形式或结构。 从最抽象的层次上讲,GA 是计算机自动解决问题的一种系统的,与领域无关的方法,它从需要做什么的高级说明开始 e
自主地解决问题是人工智能和机器学习的中心目标。 **遗传算法****GA**)是一种进化计算技术,可自动解决问题,而无需用户事先知道或指定解决方案的形式或结构。 从最抽象的层次上讲,GA 是计算机自动解决问题的一种系统的,与领域无关的方法,它从需要做什么的高级说明开始。
进化算法的基本步骤如下:
*“步骤 1”*
“步骤 1”
随机生成数据点或*个人*的初始种群。 由 GA 定义的个体是具有某些*特征**特征*的人群的成员。 在算法的后续步骤中,我们将确定这些特征是否使个体能够适应环境并生存足够长的时间以产生后代。
*“步骤 2”*
“步骤 2”
循环执行以下步骤,直到终止:
......@@ -50,7 +50,7 @@
我们通过产生包含更健康个体的新种群来做到这一点。 我们应用概率运算符,例如**选择****交叉****突变**,以便生成下一代个体。 个体用字符串表示,其中每个字符串都是潜在解决方案的编码版本。
使用适应性函数评估每个字符串的适应性度量,告诉我们解决问题的适用性。 该适应度函数也称为**评估函数**。 GA 会应用受 n 性质启发的运算符,这就是为什么该术语与生物生物学中发现的术语紧密相关的原因。
使用适应性函数评估每个字符串的适应性度量,告诉我们解决问题的适用性。 该适应度函数也称为**评估函数**。 GA 会应用受自然启发的操作,这就是为什么该术语与生物生物学中发现的术语紧密相关的原因。
# 遗传算法的基本概念
......@@ -64,7 +64,7 @@
需要定义的下一个概念是*重组*,也称为*交叉*。 这与繁殖在进化过程中的作用直接相关。 GA 试图将当前一代的个人合并起来,以创建新的解决方案。 它结合了每个父母个体的一些特征来创造这个后代。 此过程称为交叉。 目标是用人口中“钳工”个体产生的后代代替当前一代中的“较弱”个体。
为了应用交叉和突变,我们需要选择标准。 *选择的概念*受自然选择理论的启发。 在每次迭代期间,GA 都会执行选择过程。 优胜劣汰的个人使用此选择过程进行选择,较弱的个体被终止。 优胜劣汰概念的生存就在这里发挥作用。 使用计算 i 个个人适应性的函数进行选择过程。
为了应用交叉和突变,我们需要选择标准。 *选择的概念*受自然选择理论的启发。 在每次迭代期间,GA 都会执行选择过程。 优胜劣汰的个人使用此选择过程进行选择,较弱的个体被终止。 优胜劣汰概念的生存就在这里发挥作用。 使用计算`i`个个人适应性的函数进行选择过程。
# 生成具有预定义参数的位模式
......@@ -345,7 +345,7 @@ if __name__ == "__main__":
![](img/B15441_11_02.png)
图 2:Evolution 最终输出
图 2:演化最终输出
如上图所示,进化过程在 60 代(零索引)之后结束。 完成后,将挑选最佳个人,并将其打印在输出中。 最佳个人中有 45 个,这是对的结果的确认,因为目标总和是评估函数中的`45`
......@@ -383,7 +383,7 @@ def create_toolbox(strategy):
np.random.seed(7)
```
注册`generate``update`方法。 这将使用 generate-update 范式并从策略生成总体,然后根据总体更新策略:
注册`generate``update`方法。 这将使用生成-更新范式并从策略生成总体,然后根据总体更新策略:
```py
toolbox.register("generate", strategy.generate, creator.Individual)
......@@ -587,7 +587,7 @@ if __name__ == "__main__":
在本章的最后,我们将看到 GA 在众多行业和领域中的许多应用。 从财务到流量优化,GA 的应用几乎是无止境的。 不过,到目前为止,我们继续另一个简单的示例。 让我们看看如何使用遗传编程来解决符号回归问题。 重要的是要了解遗传程序设计与 GA 并不相同。 遗传编程是一种进化算法,其中解决方案以计算机程序的形式出现。 每代人都是计算机程序,他们的适应水平与其解决问题的能力相对应。 每次迭代时,都使用 GA 修改这些程序。 遗传程序设计是 GA 的应用。
关于符号回归问题,我们有一个多项式表达式,在这里需要近似。 这是一个经典的回归问题,我们尝试估算基本功能。 在此示例中,我们将使用表达式: *f(x)= 2x ^ 3 – 3x ^ 2 + 4x – 1*
关于符号回归问题,我们有一个多项式表达式,在这里需要近似。 这是一个经典的回归问题,我们尝试估算基本功能。 在此示例中,我们将使用表达式:`f(x) = 2x ^ 3 – 3x ^ 2 + 4x – 1`
此处讨论的代码是`DEAP`库中给出的符号回归问题的变体。 创建一个新的 Python 文件并导入以下内容:
......@@ -763,7 +763,7 @@ if __name__ == "__main__":
图 10:演进进度最终输出
我们可以看到 min 列中的值越来越小,这表明方程式 的近似解的误差越来越小。
我们可以看到`min`列中的值越来越小,这表明方程式 的近似解的误差越来越小。
# 构建智能机器人控制器
......@@ -1142,13 +1142,13 @@ GP 在近似解决方案可以接受或最佳解决方案的情况下效果很
NaturalMotion 是由前牛津研究人员 Torsten Reil 和 Colm Massey 创立的一家新公司。 目前,该公司只有一种产品,称为 Endorphin,它利用神经网络和人工进化技术来产生可以像人一样精确地行走,奔跑,跌倒和飞行的软件自动机。
Endorphin 在电影*《王者归来》* 中首次亮相,这是用来使特别棘手的特技栩栩如生的电影。 但这仅仅是开始。 几个月后,该公司的机器人在 Ilium 平原上战斗致死,摔倒了沃尔夫冈·彼得森(Wolfgang Petersen)的电影 *Troy* 并摔倒了匕首。
Endorphin 在电影《王者归来》中首次亮相,这是用来使特别棘手的特技栩栩如生的电影。 但这仅仅是开始。 几个月后,该公司的机器人在 Ilium 平原上战斗致死,摔倒了沃尔夫冈·彼得森(Wolfgang Petersen)的电影 *Troy* 并摔倒了匕首。
来源: <https://www.naturalmotion.com/>
**电脑游戏**
今天,每个人都对深度学习算法着迷。 他们肯定在许多领域和许多基准下都取得了令人印象深刻的结果。 但是 GP 并不懈怠。 由于丹尼斯·威尔逊(Dennis Wilson)和法国图卢兹大学的一些同事的努力,已经观察到了令人印象深刻的结果。 他们在 GP 上所做的工作在许多经典游戏中都能够胜过人类。 威尔逊和他的研究人员团队展示了 GP 如何在具有象征意义的任务上与深度学习算法的性能相媲美,这项任务使深度学习在 2013 年成名-在 Pong,Breakout 和 Space Invaders 等街机视频游戏中,人类的表现优于人类。
今天,每个人都对深度学习算法着迷。 他们肯定在许多领域和许多基准下都取得了令人印象深刻的结果。 但是 GP 并不懈怠。 由于丹尼斯·威尔逊(Dennis Wilson)和法国图卢兹大学的一些同事的努力,已经观察到了令人印象深刻的结果。 他们在 GP 上所做的工作在许多经典游戏中都能够胜过人类。 威尔逊和他的研究人员团队展示了 GP 如何在具有象征意义的任务上与深度学习算法的性能相媲美,这项任务使深度学习在 2013 年成名--在 Pong,Breakout 和 Space Invaders 等街机视频游戏中,人类的表现优于人类。
威尔逊令人信服地证明,GP 可以产生可比的令人印象深刻的结果,甚至可能比深度学习更好。
......@@ -1158,7 +1158,7 @@ Endorphin 在电影*《王者归来》* 中首次亮相,这是用来使特别
最早的无损压缩技术之一是使用 GP 演变非线性图像预测器。 该算法根据相邻像素子集的灰度值预测像素可以采用的灰度级。 结合模型描述的预测误差可以表示图像的压缩版本。 使用霍夫曼编码对图像进行压缩。 使用 GP 压缩,各种图像上的结果都显示出令人鼓舞的结果。 在某些情况下,GP 算法的性能优于某些人为设计的最佳无损压缩算法。
资料来源:福永和 Stechert,1998 [1]
资料来源:Fukunaga 和 Stechert,1998[1]
**金融交易**
......@@ -1179,36 +1179,38 @@ GP 算法广泛用于金融交易,时间序列预测和经济建模领域;
**其他应用程序**
**优化**-GA 和 GP 通常用于优化问题,在给定目标函数的情况下,必须在一组约束条件下将值最大化或最小化。
**优化**GA 和 GP 通常用于优化问题,在给定目标函数的情况下,必须在一组约束条件下将值最大化或最小化。
**并行化**-GA 也具有并行处理功能,并且被证明是解决需要并行处理的问题的有效方法。 并行化是 GA 和 GP 研究的活跃领域。
**并行化**GA 也具有并行处理功能,并且被证明是解决需要并行处理的问题的有效方法。 并行化是 GA 和 GP 研究的活跃领域。
**神经网络**-GA 用于训练神经网络,尤其是循环神经网络(RNN)。
**神经网络**GA 用于训练神经网络,尤其是循环神经网络(RNN)。
**经济学**-GA 通常用于对经济系统进行建模,例如:
**经济学**GA 通常用于对经济系统进行建模,例如:
* 蜘蛛网模型
* 博弈论均衡解
* 资产定价
**图像处理**-GA 也用于各种数字图像处理(DIP)任务,例如密集像素匹配。
**图像处理**GA 也用于各种数字图像处理(DIP)任务,例如密集像素匹配。
**调度应用程序**-GA 可用于解决许多调度问题,尤其是时间表问题。 简而言之,当我们拥有一组资源,一组活动以及活动与资源之间的依赖关系时,就会发生时间表问题。 一个例子是在我们有教室,教授和学生的大学中的课程表,并且在练习结束时,希望很大比例的学生能够参加他们想参加的所有课程。
**调度应用程序**GA 可用于解决许多调度问题,尤其是时间表问题。 简而言之,当我们拥有一组资源,一组活动以及活动与资源之间的依赖关系时,就会发生时间表问题。 一个例子是在我们有教室,教授和学生的大学中的课程表,并且在练习结束时,希望很大比例的学生能够参加他们想参加的所有课程。
**参数化设计**-GA 已用于通过更改参数和发展更好的解决方案来设计车辆,机械和飞机。
**参数化设计**GA 已用于通过更改参数和发展更好的解决方案来设计车辆,机械和飞机。
**DNA 分析**-GA 可以并且已经用于使用样品光谱数据确定 DNA 结构。
**DNA 分析**GA 可以并且已经用于使用样品光谱数据确定 DNA 结构。
**多峰优化**-GA 是解决寻求多个最优解的多峰优化问题的好方法。
**多峰优化**GA 是解决寻求多个最优解的多峰优化问题的好方法。
**旅行商问题(TSP)**-遗传算法已用于解决 TSP 及其所有相关应用,例如车辆路线和机器人轨迹问题,这是一种使用新颖交叉法和 包装策略。
**旅行商问题(TSP)**遗传算法已用于解决 TSP 及其所有相关应用,例如车辆路线和机器人轨迹问题,这是一种使用新颖交叉法和 包装策略。
希望 GP 和 GA 的广泛而多样的应用为您所熟悉。 也许您将能够提出自己独特的应用程序,并利用获得的知识来推动该领域的发展。
# 摘要
# 总结
在本章中,我们了解了 GA 及其基本概念。 我们讨论了进化算法和遗传规划。 我们了解了它们与 GA 之间的关系。 我们讨论了 GA 的基本构建模块,包括种群,交叉,突变,选择和适应度功能的概念。 我们学习了如何使用预定义的参数生成位模式。 我们讨论了如何使用 CMA-ES 可视化演变过程。 我们学习了如何在此范例中解决符号回归问题。 然后,我们使用这些概念来构建机器人控制器,以遍历地图并消耗所有目标。 在下一章中,我们将学习强化学习,并了解如何构建智能体。
# 参考
1. A.福永和 A. Stechert。 进化的非线性预测模型,可通过遗传编程进行无损图像压缩。 在 1998 年 7 月 22 日至 25 日于美国威斯康星州麦迪逊市的威斯康星大学,于 1998 年 7 月 22 日至 25 日在 JR Koza 等人的著作中, *Genetic Programming 1998:第三届年会的论文集*,第 95-102 页。 。 ISBN 1-55860-548-7。
\ No newline at end of file
```
1. A. Fukunaga and A. Stechert. Evolving nonlinear predictive models for lossless image compression with genetic programming. In J. R. Koza, et al., editors, Genetic Programming 1998: Proceedings of the Third Annual Conference, pages 95-102, University of Wisconsin, Madison, Wisconsin, USA, 22-25 July 1998. Morgan Kaufmann. ISBN 1-55860-548-7.
```
\ No newline at end of file
......@@ -260,7 +260,7 @@ Amazon Comprehend 是 AWS 提供的**自然语言处理**(**NLP**)服务。
* **人员**:面部分析,面部表情,面部质量,用户验证等
* **文本**:将图像识别为文本并将其转换为文本
* **场景**:跳舞,庆祝,吃饭等
* **不当内容**-成人,暴力或视觉干扰的内容
* **不当内容**成人,暴力或视觉干扰的内容
Amazon Rekognition 已经识别出数十亿张图像和视频,并使用它们不断变得越来越好。 深度学习在图像识别领域的应用可以说是过去几年中最成功的机器学习应用程序,而 Amazon Rekognition 利用深度学习来提供令人印象深刻的结果。 要使用它,不需要具有高水平的机器学习专业知识。 Amazon Rekognition 提供了一个简单的 API。 要使用它,将图像和一些参数一起传递到服务,就是这样。 Amazon Rekognition 只会继续变得更好。 它使用得越多,收到的输入就越多,并且从这些输入中学到的越多。 此外,Amazon 继续增强服务并向该服务添加新功能。
......@@ -401,11 +401,11 @@ Learning Studio 不需要任何编程。 通过直观地连接数据集和模块
登录后,您会在左侧看到以下标签:
* **项目**:项目是实验,数据集,笔记本和其他资源的集合
* **实验**-可以创建,编辑,运行和保存实验
* **实验**可以创建,编辑,运行和保存实验
* **Web 服务**:实验可以作为 Web 服务进行部署和公开
* **笔记本电脑**:Studio 还支持 Jupyter 笔记本电脑
* **数据集**-已上传到 Studio 的数据集
* **训练模型**-经过训练并保存在实验中的模型
* **数据集**已上传到 Studio 的数据集
* **训练模型**经过训练并保存在实验中的模型
* **设置**:设置可用于配置帐户和资源。
**Azure 机器学习库**:该库是数据科学社区可以共享以前使用 Cortana Intelligence Suite 中的组件创建的解决方案的地方。
......@@ -434,7 +434,7 @@ Learning Studio 不需要任何编程。 通过直观地连接数据集和模块
* **ARFF 转换模块**:将.NET 序列化的数据集转换为属性关系文件格式(ARFF)
* **计算基本统计模块**:计算基本统计数据,例如均值,标准差等
* **线性回归模型**:创建基于在线梯度下降的线性回归模型
* **评分模型**-为训练有素的分类或回归模型评分
* **评分模型**为训练有素的分类或回归模型评分
模块可能具有一组参数,可用于配置模块的内部算法。
......@@ -591,7 +591,7 @@ Natural 语言 API 具有预先训练的模型,该模型使 API 的用户可
**推荐 AI**:此 Google 服务可以大规模提供高度个性化的产品推荐。 二十多年来,Google 一直在其旗舰产品(例如 Google Ads,Google 搜索和 YouTube)中提供建议。 建议 AI 利用该经验,使服务的用户能够在各种应用程序和用例中提供个性化的建议,以满足个人客户的需求和偏好。 在撰写本文时,该产品也处于 beta 版本,因此通常不可用。
# 摘要
# 总结
在本章中,我们看到所有主要的技术公司都参与了高风险的军备竞赛,成为云计算的领军人物。 在计算的历史中,随着不同技术的出现,最常见的结果是让一个玩家主导整个空间,而其他所有竞争者都被放任其职。 云可能是计算历史上出现的最重要的技术。 当客户决定他们首选的云提供商是谁时,即使他们现在可能尚未意识到,他们正在做出决定,将他们锁定在该云提供商的生态系统中,并且很难从中摆脱出来并跳到另一个云中 提供商。
......
......@@ -673,7 +673,7 @@ if __name__=='__main__':
如我们所见,一名玩家赢得了比赛。
# 摘要
# 总结
在本章中,我们讨论了如何使用一种称为组合搜索的特殊类型的人工智能技术来构建游戏。 我们学习了如何使用这些类型的搜索算法来有效地提出赢得比赛的策略。 这些算法可用于为更复杂的游戏构建游戏机,并解决各种问题。 我们讨论了组合搜索以及如何使用组合搜索来加快搜索过程。 我们了解了 Minimax 和 Alpha-Beta 修剪。 我们了解了 Negamax 算法是如何在实践中使用的。 然后,我们使用这些算法来构建用于玩“最后的硬币站立”和“井字游戏”的机器人。
......
......@@ -860,7 +860,7 @@ $ python3 speech_recognizer.py --input-folder data
正如我们在前面的编辑屏幕截图中所见一样,我们的语音识别系统可以正确识别的所有单词。
# 摘要
# 总结
在本章中,我们学习了语音识别。 我们讨论了如何使用语音信号和相关概念。 我们学习了如何可视化音频信号。 我们讨论了如何使用傅立叶变换将时域音频信号转换为频域。 我们讨论了如何使用预定义的参数生成音频信号。
......
......@@ -954,7 +954,7 @@ if __name__=='__main__':
我们可以看到,将数学和历史这两个主题区分开来是相当不错的。 如果您查看这些文本,则可以验证每个句子 i 都是关于数学还是历史的。
# 摘要
# 总结
在本章中,我们学习了自然语言处理中的各种基础概念。 我们讨论了标记化以及如何将输入文本分成多个标记。 我们学习了如何使用词干和词形化将单词简化为基本形式。 我们实现了文本分块器,可根据预定义的条件将输入文本分为多个块。
......
......@@ -93,7 +93,7 @@ Google Duplex 是一个很好的聊天机器人听起来很自然的有力例子
* **扬声器正在尝试娱乐**:例如,有人告诉您开玩笑。
* **扬声器正在尝试通知**:有人问几点了,或者温度是多少? 他们收到了答案。
* **演讲者试图说服**-议程是试图出售一些东西。
* **演讲者试图说服**议程是试图出售一些东西。
对于大多数聊天机器人,它们的作用是执行命令和执行任务。 由于的原因,他们需要执行的第一个任务是确定调用他们的人的意图。 意图具有诸如上下文,训练阶段,动作和参数以及响应之类的元素。
......@@ -512,7 +512,7 @@ action = req.get('queryResult').get('action')
本章的目的是介绍聊天机器人的基本知识。 在这一点上,我们的聊天机器人除了演示如何从服务器获取响应外,还没有做其他事情。 我们将其留给您,以探索如何进一步增强聊天机器人。 一些明显的增强功能包括:根据 e 稳定菜单检查所请求的食物,以查看菜单上是否有可用项目; 根据当前库存检查请求的食物数量,以查看是否可以完成订单; 将订单存储在后端数据库中以进行记帐和跟踪; 并将聊天机器人连接到机器人或后端系统以实际完成订单。
# 摘要
# 总结
在本章中,我们首先了解了聊天机器人的潜在未来,以及聊天机器人变得越来越好将如何影响我们的社会。 然后,我们了解了当前聊天机器人技术的局限性以及当前局限性推荐的最佳实践。 我们了解了基本的聊天机器人概念以及最流行的聊天机器人平台。
......
......@@ -853,7 +853,7 @@ plt.show()
我们将其留给阅读器,以针对数据集中的实际数据点计算 HMM 模型预测的值的准确性。 然后将需要一些工作来使用它来产生交易信号。 正如我们在本节开头提到的,我们不建议您使用此代码来使用真实货币进行实际交易。
# 摘要
# 总结
在本章中,我们学习了如何构建序列学习模型。 我们了解了如何处理熊猫中的时间序列数据。 我们讨论了如何分割时间序列数据并对其执行各种操作。 我们学习了如何以滚动方式从时间序列数据中提取各种统计信息。 我们了解了隐马尔可夫模型,然后实现了构建该模型的系统。
......
......@@ -45,7 +45,7 @@ OpenCV 可以与 TensorFlow,PyTorch 和 Caffe 结合使用。
**安装**
在本章中,我们将使用名为 OpenCV 的软件包。 [您可以在此处了解更多信息](http://opencv.org)。 在继续操作之前,请确保已安装。 以下是在各种操作系统上使用 Python 3 安装 OpenCV 3 的链接:
在本章中,我们将使用名为 OpenCV 的软件包。 [您可以在此处了解更多信息](http://opencv.org)。 在继续操作之前,请确保已安装。 以下是在各种操作系统上使用 Python3 安装 OpenCV 3 的链接:
* [**Windows**](https://solarianprogrammer.com/2016/09/17/install-opencv-3-with-python-3-on-windows)
* [**Ubuntu**](http://www.pyimagesearch.com/2015/07/20/install-opencv-3-0-and-python-3-4-on-ubuntu)
......@@ -1301,7 +1301,7 @@ cv2.destroyAllWindows()
本章旨在演示如何在各种应用中使用图像识别。 我们期待您的来信,并结合您自己的想法,学习如何应用本章中学到的技术。
# 摘要
# 总结
在本章中,我们学习了对象检测和跟踪。 我们了解了如何在各种操作系统上安装具有 Python 支持的 OpenCV。 我们了解了帧差异,并用它来检测视频中的运动部分。 我们讨论了如何使用色彩空间跟踪人类皮肤。 我们讨论了背景减法以及如何将其用于跟踪静态场景中的对象。 我们使用 CAMShift 算法构建了一个交互式对象跟踪器。
......
......@@ -911,6 +911,6 @@ for i in range(num_test):
希望本章使您对 OCR 特别是神经网络感到兴奋。 在随后的章节中,我们将回顾该技术的许多其他用例,这些用例处于当前机器学习革命的最前沿。
# 摘要
# 总结
在本章中,我们学习了神经网络。 我们讨论了如何构建和训练神经网络。 我们讨论了感知器,并在此基础上构建了分类器。 我们了解了单层神经网络以及多层神经网络。 我们讨论了如何将神经网络用于构建矢量量化器。 我们使用循环神经网络分析了顺序数据。 然后,我们使用神经网络构建了光学字符识别引擎。 在第 t 章中,我们将学习强化学习,并了解如何构建智能学习代理。
\ No newline at end of file
......@@ -653,7 +653,7 @@ print('Test accuracy =', accuracy.eval(feed_dict = {
现在我们有了的输出,我们可以看到的卷积神经网络的准确性比简单的神经网络要高得多。 与上一节中未使用 CNN 的准确性相比,这实际上是一个很大的改进。 CNN 可以解救!
# 摘要
# 总结
在本章中,我们学习了深度学习和 CNN。 我们讨论了什么是 CNN,以及我们为什么需要它们。 我们讨论了 CNN 的体系结构。 我们了解了 CNN 中使用的各种类型的图层。 我们讨论了如何使用 TensorFlow。 我们使用它来构建基于感知器的线性回归器。 我们学习了如何使用单层神经网络构建图像分类器。 然后,我们使用 CNN 构建了图像分类器。
......
......@@ -471,7 +471,7 @@ RMSE 是方差的平方根。 可以将其解释为无法解释的方差的标
尽管如此,RNN 已经取得了许多突破,并且数据科学界继续不断地为其寻找新的应用程序。 不仅如此,它们的性能和准确性也在不断提高。 到目前为止,我们将提高您已经设计的神经网络的性能和功能,并提出您自己的示例,说明如何将网络应用于其他领域。 快乐的编码。
# 摘要
# 总结
在本章中,我们继续学习深度学习并学习了 RNN 的基础。 然后,我们讨论了 RNN 架构的基本概念是什么,以及为什么这些概念很重要。 在学习了基础知识之后,我们研究了 RNN 的一些潜在用途,并着眼于使用它来实现语言模型。 最初,我们使用基本技术来实现语言模型,然后开始为模型添加越来越多的复杂性以理解更高层次的概念。
......
......@@ -317,7 +317,7 @@ $ python3 balancer.py --input-env cartpole
不同的情节需要完成不同的步骤。 如果您滚动查看打印出来的信息,您将能够看到。 希望,当您运行本示例时,您至少在大多数情况下都会看到棘突。 凭借在本章中获得的知识,我认为我们还没有准备好在 Go 的游戏中击败 AlphaZero。 但是我们了解了如何构建此类系统的基础知识。
# 摘要
# 总结
在本章中,我们了解了 RL 系统。 我们讨论了 RL 的前提以及如何设置它。 我们讨论了 RL 和监督学习之间的区别。 我们浏览了一些真实的 RL 示例,并了解了各种系统如何以不同形式使用它。
......
......@@ -390,7 +390,7 @@ Neo4j 用 Java 实现,并通过交易 HTTP 端点或二进制“螺栓”协
还有许多其他流行的数据库实现。 我们几乎没有吃过那个宇宙的表面。 我们衷心希望您能为本书中介绍的概念更好地应对下一个数据科学项目。
# 摘要
# 总结
在本章中,我们首先围绕大数据奠定了核心和基本概念的基础。 然后,我们了解了与大数据有关的许多不同技术。 当涉及到大数据技术 Hadoop 时,我们了解了其中的所有“老爸”。 我们还了解了当今市场上当前最流行的大数据工具,即 Spark。
......
......@@ -56,7 +56,7 @@
熟悉深度学习和 Keras,并且需要一些先验知识 TensorFlow。 使用 Python 3 进行编码的经验会很有用。
熟悉深度学习和 Keras,并且需要一些先验知识 TensorFlow。 使用 Python3 进行编码的经验会很有用。
......
......@@ -25,7 +25,7 @@
本章中提供的代码要求:
* Python 3.5+(强烈建议您使用 [Anaconda 发行版](https://www.anaconda.com/distribution/)
* Python3.5+(强烈建议您使用 [Anaconda 发行版](https://www.anaconda.com/distribution/)
* 库:
* 科学 0.19+
* NumPy 1.10+
......
......@@ -24,7 +24,7 @@
本章中提供的代码要求:
* Python 3.5+(强烈建议您使用 [Anaconda 发行版](https://www.anaconda.com/distribution/)
* Python3.5+(强烈建议您使用 [Anaconda 发行版](https://www.anaconda.com/distribution/)
* 库:
* 科学 0.19+
* NumPy 1.10+
......
......@@ -25,7 +25,7 @@
本章中提供的代码要求:
* Python 3.5+(强烈建议您使用 [Anaconda 发行版](https://www.anaconda.com/distribution/)
* Python3.5+(强烈建议您使用 [Anaconda 发行版](https://www.anaconda.com/distribution/)
* 库:
* 科学 0.19+
* NumPy 1.10+
......
......@@ -25,7 +25,7 @@
本章中提供的代码要求以下内容:
* Python 3.5+(强烈建议使用 [Anaconda 发行版](https://www.anaconda.com/distribution/)
* Python3.5+(强烈建议使用 [Anaconda 发行版](https://www.anaconda.com/distribution/)
* 库:
* 科学 0.19+
* NumPy 1.10+
......
......@@ -24,7 +24,7 @@
本章将介绍的代码需要以下内容:
* Python 3.5+(强烈建议使用 [Anaconda 发行版](https://www.anaconda.com/download/)
* Python3.5+(强烈建议使用 [Anaconda 发行版](https://www.anaconda.com/download/)
* 以下库:
* 科学 0.19+
* NumPy 1.10+
......
......@@ -27,7 +27,7 @@
本章中提供的代码要求:
* Python 3.5+(强烈建议使用 [Anaconda 发行版](https://www.anaconda.com/distribution/)
* Python3.5+(强烈建议使用 [Anaconda 发行版](https://www.anaconda.com/distribution/)
* 库:
* 科学 0.19+
* NumPy 1.10+
......
......@@ -27,7 +27,7 @@
本章将介绍的代码需要以下内容:
* Python 3.5+(强烈建议使用 [Anaconda 发行版](https://www.anaconda.com/distribution/)
* Python3.5+(强烈建议使用 [Anaconda 发行版](https://www.anaconda.com/distribution/)
* 以下库:
* 科学 0.19+
* NumPy 1.10+
......
......@@ -27,7 +27,7 @@
本章中提供的代码要求以下内容:
* Python 3.5+(强烈建议使用 [Anaconda 发行版](https://www.anaconda.com/download/)
* Python3.5+(强烈建议使用 [Anaconda 发行版](https://www.anaconda.com/download/)
* 以下库:
* 科学 0.19+
* NumPy 1.10+
......
......@@ -23,7 +23,7 @@
本章将介绍的代码需要以下内容:
* Python 3.5+(强烈建议使用 [Anaconda 发行版](https://www.anaconda.com/distribution/)
* Python3.5+(强烈建议使用 [Anaconda 发行版](https://www.anaconda.com/distribution/)
* 库如下:
* 科学 0.19+
* NumPy 1.10+
......
......@@ -643,7 +643,7 @@ TensorFlow Android 示例应用程序具有使用预训练的 YOLO 模型的示
YOLO 使用称为 [Darknet](https://pjreddie.com/darknet) 的独特开源神经网络框架来训练其模型。 [还有另一个名为 darkflow 的库](https://github.com/thtrieu/darkflow),该库可以将使用 Darknet 训练的 YOLO 模型的神经网络权重转换为 TensorFlow 图格式,并重新训练预训练的 楷模。
要以 TensorFlow 格式构建 YOLO2 模型,请首先从[这里](https://github.com/thtrieu/darkflow)获取 darkflow。因为它需要 Python 3 和 TensorFlow 1.0(Python 2.7 和 TensorFlow 1.4 或更高版本也可能工作),所以我们将使用 Anaconda 来设置一个新的具有 Python 3 支持的 TensorFlow 1.0 环境:
要以 TensorFlow 格式构建 YOLO2 模型,请首先从[这里](https://github.com/thtrieu/darkflow)获取 darkflow。因为它需要 Python3 和 TensorFlow 1.0(Python 2.7 和 TensorFlow 1.4 或更高版本也可能工作),所以我们将使用 Anaconda 来设置一个新的具有 Python3 支持的 TensorFlow 1.0 环境:
```py
conda create --name tf1.0_p35 python=3.5
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册