mirror of
https://github.com/LCTT/TranslateProject.git
synced 2025-03-30 02:40:11 +08:00
Merge pull request #30808 from wxy/20230116-AI--Introduction-to-Keras-and-Our-First-Data-Set.md
RP:published/20230116 AI- Introduction to Keras and Our First Data Set.md
This commit is contained in:
commit
da35fe0060
@ -3,20 +3,22 @@
|
|||||||
[#]: author: "Deepu Benson https://www.opensourceforu.com/author/deepu-benson/"
|
[#]: author: "Deepu Benson https://www.opensourceforu.com/author/deepu-benson/"
|
||||||
[#]: collector: "lujun9972/lctt-scripts-1700446145"
|
[#]: collector: "lujun9972/lctt-scripts-1700446145"
|
||||||
[#]: translator: "toknow-gh"
|
[#]: translator: "toknow-gh"
|
||||||
[#]: reviewer: " "
|
[#]: reviewer: "wxy"
|
||||||
[#]: publisher: " "
|
[#]: publisher: "wxy"
|
||||||
[#]: url: " "
|
[#]: url: "https://linux.cn/article-16579-1.html"
|
||||||
|
|
||||||
人工智能教程(六):Keras 和第一个数据集
|
人工智能教程(六):Keras 和第一个数据集
|
||||||
======
|
======
|
||||||
|
|
||||||
<https://www.opensourceforu.com/wp-content/uploads/2022/11/AI-Keras-1.jpg>
|
![][0]
|
||||||
|
|
||||||
_在本系列的[上一篇文章](https://linux.cn/article-16526-1.html)中,我们学习了使用 Anaconda,加强了概率论的知识。在本文中我们将继续学习概率论的知识,学习使用 seaborn 和 Pandas 进行数据可视化,并进一步介绍 TensorFlow 和 Keras 的使用。_
|
> 在本文中我们将继续学习概率论的知识。
|
||||||
|
|
||||||
|
在本系列的 [上一篇文章](https://linux.cn/article-16526-1.html)中,我们学习了使用 Anaconda,加强了概率论的知识。在本文中我们将继续学习概率论的知识,学习使用 seaborn 和 Pandas 进行数据可视化,并进一步介绍 TensorFlow 和 Keras 的使用。
|
||||||
|
|
||||||
让我们从增长人工智能和机器学习的理论知识开始。众所周知人工智能、机器学习、数据科学、深度学习等是当今计算机科学的热门话题。然而,计算机科学还其他热门的话题,比如 <ruby>区块链<rt>blockchain</rt></ruby>、<ruby>物联网<rt>Internet of Things</rt></ruby>(IoT)、<ruby>量子计算<rt>quantum computing</rt></ruby>等。那么,人工智能领域的发展是否会对这些技术产生积极的影响呢?
|
让我们从增长人工智能和机器学习的理论知识开始。众所周知人工智能、机器学习、数据科学、深度学习等是当今计算机科学的热门话题。然而,计算机科学还其他热门的话题,比如 <ruby>区块链<rt>blockchain</rt></ruby>、<ruby>物联网<rt>Internet of Things</rt></ruby>(IoT)、<ruby>量子计算<rt>quantum computing</rt></ruby>等。那么,人工智能领域的发展是否会对这些技术产生积极的影响呢?
|
||||||
|
|
||||||
首先,让我们讨论一下区块链。根据维基百科的定义,“区块链是一种分布式账本,它由不断增长的记录(称为<ruby>区块<rt>block</rt></ruby>)组成,这些记录使用加密技术安全地连接在一起。”乍一看,人工智能和区块链似乎是两个高速发展的独立技术。但令人惊讶的是,事实并非如此。区块链相关的行话是<ruby>完整性<rt>integrity</rt></ruby>,人工智能相关的行话是数据。我们将大量数据交给人工智能程序去处理。虽然这些应用程序产生了惊人的结果,但我们如何信任它们呢?这就提出了对可解释的人工智能的需求。它可以提供一定的保证,以便最终用户可以信任人工智能程序提供的结果。许多专家认为,区块链技术可以用来提高人工智能软件做出的决策的可信度。另一方面,<ruby>智能合约<rt>smart contracts</rt></ruby>(区块链技术的一部分)可以从人工智能的验证中受益。从本质上讲,智能合约和人工智能通常都是做决策。因此,人工智能的进步将对区块链技术产生积极影响,反之亦然。
|
首先,让我们讨论一下区块链。根据维基百科的定义,“区块链是一种分布式账本,它由不断增长的记录(称为 <ruby>区块<rt>block</rt></ruby>)组成,这些记录使用加密技术安全地连接在一起。”乍一看,人工智能和区块链似乎是两个高速发展的独立技术。但令人惊讶的是,事实并非如此。区块链相关的行话是 <ruby>完整性<rt>integrity</rt></ruby>,人工智能相关的行话是数据。我们将大量数据交给人工智能程序去处理。虽然这些应用程序产生了惊人的结果,但我们如何信任它们呢?这就提出了对可解释的人工智能的需求。它可以提供一定的保证,以便最终用户可以信任人工智能程序提供的结果。许多专家认为,区块链技术可以用来提高人工智能软件做出的决策的可信度。另一方面,<ruby>智能合约<rt>smart contract</rt></ruby>(区块链技术的一部分)可以从人工智能的验证中受益。从本质上讲,智能合约和人工智能通常都是做决策。因此,人工智能的进步将对区块链技术产生积极影响,反之亦然。
|
||||||
|
|
||||||
下面让我们讨论一下人工智能和物联网之间的影响。早期的物联网设备通常没有强大的处理能力或备用电池。这使得需要大量处理能力的机器学习的软件无法部署在物联网设备上。当时,大多数物联网设备中只部署了基于规则的人工智能软件。基于规则的人工智能的优势在于它很简单,需要相对较少的处理能力。如今的物联网设备具备更强大的处理能力,可以运行更强大的机器学习软件。特斯拉开发的高级驾驶辅助系统 <ruby>特斯拉自动驾驶仪<rt>Tesla Autopilo</rt></ruby> 是物联网与人工智能融合的典范。人工智能和物联网对彼此的发展产生了积极影响。
|
下面让我们讨论一下人工智能和物联网之间的影响。早期的物联网设备通常没有强大的处理能力或备用电池。这使得需要大量处理能力的机器学习的软件无法部署在物联网设备上。当时,大多数物联网设备中只部署了基于规则的人工智能软件。基于规则的人工智能的优势在于它很简单,需要相对较少的处理能力。如今的物联网设备具备更强大的处理能力,可以运行更强大的机器学习软件。特斯拉开发的高级驾驶辅助系统 <ruby>特斯拉自动驾驶仪<rt>Tesla Autopilo</rt></ruby> 是物联网与人工智能融合的典范。人工智能和物联网对彼此的发展产生了积极影响。
|
||||||
|
|
||||||
@ -24,31 +26,26 @@ _在本系列的[上一篇文章](https://linux.cn/article-16526-1.html)中,
|
|||||||
|
|
||||||
### seaborn 入门
|
### seaborn 入门
|
||||||
|
|
||||||
seaborn 是一个基于 Matplotlib 的数据可视化 Python 库。用它能够绘制美观且信息丰富的统计图形。通过 Anaconda Navigator 可以轻松安装 seaborn。我用 ESPNcricinfo 网站上 T20 国际板球赛的击球记录,创建了一个名为 T20.csv 的 CSV(<ruby>逗号分隔值<rt>comma-separated value</rt></ruby>)文件,其中包含以下 15 列:球员姓名、职业生涯跨度、比赛场次、局数、未出局次数、总得分、最高得分、平均得分、面对球数、击球率、百分次数、五十分次数、零分次数、四分次数和六分次数。图 1 是使用 Pandas 库读取这个 CSV 文件的程序代码。我们已经在前面介绍过 Pandas 了。
|
seaborn 是一个基于 Matplotlib 的数据可视化 Python 库。用它能够绘制美观且信息丰富的统计图形。通过 Anaconda Navigator 可以轻松安装 seaborn。我用 ESPNcricinfo 网站上 T20 国际板球赛的击球记录,创建了一个名为 `T20.csv` 的 CSV(<ruby>逗号分隔值<rt>comma-separated value</rt></ruby>)文件,其中包含以下 15 列:球员姓名、职业生涯跨度、比赛场次、局数、未出局次数、总得分、最高得分、平均得分、面对球数、击球率、百分次数、五十分次数、零分次数、四分次数和六分次数。图 1 是使用 Pandas 库读取这个 CSV 文件的程序代码。我们已经在前面介绍过 Pandas 了。
|
||||||
|
|
||||||
![图 1:使用 seaborn 的简单例子][1]
|
![图 1:使用 seaborn 的简单例子][1]
|
||||||
|
|
||||||
下面逐行解释程序代码的作用。第 1 行和第 2 行导入 Pandas 和 seaborn 包。第 3 行从 JupyterLab 的工作目录中读取文件 T20.csv。第 4 行打印元数据和第一行数据。图 1 显示了这行数据,它显示了 T20 国际板球赛中得分最高的 Virat Kohli 的击球记录。第 5 行将元数据和 T20.csv 中的前五行数据保存到 Best5.csv 中。在执行该行代码时会在 JupyterLab 的工作目录中创建这个文件。第 6 行根据列百分次数按升序对 CSV 文件进行排序,并将前 10 名世纪得分手的详细信息存储到 Highest100.csv 中。该文件也将存储在 JupyterLab 的工作目录中。最后,第7行代码提取了第 5 列(总得分)和第 7 列(平均得分)的数据信息,并生成散点图。图 2 显示了程序在执行时生成的散点图。
|
下面逐行解释程序代码的作用。第 1 行和第 2 行导入 Pandas 和 seaborn 包。第 3 行从 JupyterLab 的工作目录中读取文件 `T20.csv`。第 4 行打印元数据和第一行数据。图 1 显示了这行数据,它显示了 T20 国际板球赛中得分最高的 Virat Kohli 的击球记录。第 5 行将元数据和 `T20.csv` 中的前五行数据保存到 `Best5.csv` 中。在执行该行代码时会在 JupyterLab 的工作目录中创建这个文件。第 6 行根据列百分次数按升序对 CSV 文件进行排序,并将前 10 名世纪得分手的详细信息存储到 `Highest100.csv` 中。该文件也将存储在 JupyterLab 的工作目录中。最后,第7行代码提取了第 5 列(总得分)和第 7 列(平均得分)的数据信息,并生成散点图。图 2 显示了程序在执行时生成的散点图。
|
||||||
|
|
||||||
![图 2:seaborn 绘制的散点图][2]
|
![图 2:seaborn 绘制的散点图][2]
|
||||||
|
|
||||||
在程序末尾添加如下代码行并再次运行。
|
在程序末尾添加如下代码行并再次运行。
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
sns.kdeplot(data=df.iloc[:, [5, 7]].head(50), x=’Ave’, y=’Runs’)
|
sns.kdeplot(data=df.iloc[:, [5, 7]].head(50), x=’Ave’, y=’Runs’)
|
||||||
|
|
||||||
```
|
```
|
||||||
![图 3:使用 seaborn 绘制的核密度估计图][3]
|
![图 3:使用 seaborn 绘制的核密度估计图][3]
|
||||||
|
|
||||||
这行代码调用 `kdeplot()` 函数绘制第 5 列和第 7 列数据的 <ruby>核密度估计<rt>Kernel Distribution Estimation</rt></ruby>(KDE)图。KDE 图可以描述连续或非参数数据变量的概率密度函数。这个定义可能无法让您了解函数 `kdeploy()` 将要执行的实际操作。图 3 是在单个图像上绘制的 KDE 图和散点图。从图中我们可以看到,散点图绘制的数据点被 KDE 图分组成簇。seaborn 还提供了许多其他绘图功能。在图 1 中程序的第 7 行分别替换为下面的的代码行(一次一行),并再次执行该程序,你会看到不同风格的绘图显示。探索 seaborn 提供的其他绘图功能,并选择最适合你需求的功能。
|
这行代码调用 `kdeplot()` 函数绘制第 5 列和第 7 列数据的 <ruby>核密度估计<rt>Kernel Distribution Estimation</rt></ruby>(KDE)图。KDE 图可以描述连续或非参数数据变量的概率密度函数。这个定义可能无法让您了解函数 `kdeploy()` 将要执行的实际操作。图 3 是在单个图像上绘制的 KDE 图和散点图。从图中我们可以看到,散点图绘制的数据点被 KDE 图分组成簇。seaborn 还提供了许多其他绘图功能。在图 1 中程序的第 7 行分别替换为下面的的代码行(一次一行),并再次执行该程序,你会看到不同风格的绘图显示。探索 seaborn 提供的其他绘图功能,并选择最适合你需求的功能。
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
sns.histplot(data=df.iloc[:, [5, 7]].head(50), x=’Ave’, y=’Runs’)
|
sns.histplot(data=df.iloc[:, [5, 7]].head(50), x=’Ave’, y=’Runs’)
|
||||||
|
|
||||||
sns.rugplot(data=df.iloc[:, [5, 7]].head(50), x=’Ave’, y=’Runs’)
|
sns.rugplot(data=df.iloc[:, [5, 7]].head(50), x=’Ave’, y=’Runs’)
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### 更多概率论
|
### 更多概率论
|
||||||
@ -63,7 +60,7 @@ seaborn 是一个基于 Matplotlib 的数据可视化 Python 库。用它能够
|
|||||||
|
|
||||||
![图 5:概率分布的图像][5]
|
![图 5:概率分布的图像][5]
|
||||||
|
|
||||||
现在,让我们学习线性回归。使用线性回归分析可以根据一个变量来预测一个变量的值。线性回归的一个重要应用是数据拟合。线性回归非常重要,因为它很简单。机器学习中的监督学习范式实际上就是是回归建模。因此,线性回归可以被认为是一种重要的机器学习策略。这种学习范式通常被统计学家称为统计学习。线性回归是机器学习中的重要操作。NumPy 和 SciPy 都提供了线性回归的函数。下面我们展示使用 NumPy 和 SciPy 进行线性回归的示例。
|
现在,让我们学习线性回归。使用线性回归分析可以根据一个变量来预测一个变量的值。线性回归的一个重要应用是数据拟合。线性回归非常重要,因为它很简单。机器学习中的监督学习范式实际上就是回归建模。因此,线性回归可以被认为是一种重要的机器学习策略。这种学习范式通常被统计学家称为统计学习。线性回归是机器学习中的重要操作。NumPy 和 SciPy 都提供了线性回归的函数。下面我们展示使用 NumPy 和 SciPy 进行线性回归的示例。
|
||||||
|
|
||||||
![图 6:使用 NumPy 进行线性回归][6]
|
![图 6:使用 NumPy 进行线性回归][6]
|
||||||
|
|
||||||
@ -75,7 +72,7 @@ seaborn 是一个基于 Matplotlib 的数据可视化 Python 库。用它能够
|
|||||||
|
|
||||||
![图 8:使用 SciPy 进行线性回归][8]
|
![图 8:使用 SciPy 进行线性回归][8]
|
||||||
|
|
||||||
下面我解释一下这个程序的工作原理。第 1 行和第 2 行导入库 NumPy 和 Matplotlib。第 3 行从库 SciPy 导入 stats 模块。第 4 到 8 行与前面的程序执行类似的任务。第 9 行使用 SciPy 的 stats 模块的 `linregression()` 函数计算两组测量值的线性最小二乘回归——在在本例中是数组 `x` 和 `y` 中的值。该函数返回值中的 `m` 和 `c` 分别表示回归直线的<ruby>斜率<rt>slope</rt></ruby>和<ruby>截距<rt>intercept</rt></ruby>。第 10 行使用斜率和截距的值生成回归线。第 11 行用绿色绘制回归线。最后,第 12 行显示所有的图像(见图 9),其中数据点以黄色显示,回归线以绿色显示。
|
下面我解释一下这个程序的工作原理。第 1 行和第 2 行导入库 NumPy 和 Matplotlib。第 3 行从库 SciPy 导入 stats 模块。第 4 到 8 行与前面的程序执行类似的任务。第 9 行使用 SciPy 的 stats 模块的 `linregression()` 函数计算两组测量值的线性最小二乘回归——在本例中是数组 `x` 和 `y` 中的值。该函数返回值中的 `m` 和 `c` 分别表示回归直线的 <ruby>斜率<rt>slope</rt></ruby>和<ruby>截距<rt>intercept</rt></ruby>。第 10 行使用斜率和截距的值生成回归线。第 11 行用绿色绘制回归线。最后,第 12 行显示所有的图像(见图 9),其中数据点以黄色显示,回归线以绿色显示。
|
||||||
|
|
||||||
![图 9:线性回归散点图 2][9]
|
![图 9:线性回归散点图 2][9]
|
||||||
|
|
||||||
@ -83,7 +80,7 @@ seaborn 是一个基于 Matplotlib 的数据可视化 Python 库。用它能够
|
|||||||
|
|
||||||
### Keras 简介
|
### Keras 简介
|
||||||
|
|
||||||
Keras 一般与 TensorFlow 一起使用。因此,我们先从使用 TensorFlow 开始。图 10 所示的程序虽然只包含四行代码,但确实构建了在本系列中的第一个神经网络。下面我来介绍它的工作原理。第 1 行导入库 TensorFlow。第 2 行创建了一个名为 `x` 的张量。第 3 行和第 4 行分别在张量 `x` 上应用 ReLU (Rectified Linear Unit,整流线性单元)和 Leaky ReLU 激活函数。在神经网络中,激活函数定义了节点的输出由输入计算出的规则。ReLU 激活函数是定义为 $Relu(x) = \max(0,x)$。第 3 行代码的输出如图 10 所示。可以观察到,在应用 ReLU 激活函数后,张量 `x` 中的负值被替换为零。Leaky ReLU 是 ReLU 激活函数的改进版本。从图 10 中的第 4 行代码的输出可以看出 Leaky ReLU 激活函数保留了全量的正值和 20% 的负值。在后面我们将会继续讨论 Keras,同时学习更多神经网络和激活函数的知识。
|
Keras 一般与 TensorFlow 一起使用。因此,我们先从使用 TensorFlow 开始。图 10 所示的程序虽然只包含四行代码,但确实构建了在本系列中的第一个神经网络。下面我来介绍它的工作原理。第 1 行导入库 TensorFlow。第 2 行创建了一个名为 `x` 的张量。第 3 行和第 4 行分别在张量 `x` 上应用 ReLU(<ruby>整流线性单元<rt>Rectified Linear Unit</rt></ruby>)和 Leaky ReLU 激活函数。在神经网络中,激活函数定义了节点的输出由输入计算出的规则。ReLU 激活函数是定义为 `Relu(x) = max(0,x)`。第 3 行代码的输出如图 10 所示。可以观察到,在应用 ReLU 激活函数后,张量 `x` 中的负值被替换为零。Leaky ReLU 是 ReLU 激活函数的改进版本。从图 10 中的第 4 行代码的输出可以看出 Leaky ReLU 激活函数保留了全量的正值和 20% 的负值。在后面我们将会继续讨论 Keras,同时学习更多神经网络和激活函数的知识。
|
||||||
|
|
||||||
![图 10:使用 TensorFlow 实现的神经网络][10]
|
![图 10:使用 TensorFlow 实现的神经网络][10]
|
||||||
|
|
||||||
@ -97,6 +94,8 @@ Keras 一般与 TensorFlow 一起使用。因此,我们先从使用 TensorFlow
|
|||||||
|
|
||||||
本文中我们开始涉及到神经网络,并通过 Keras 接触到了第一个数据集。在下一篇文章中,我们将继续讲解神经网络和 Keras,并通过使用该数据集训练自己的模型。我们还会遇到 scikit-learn, 它是另一个强大的机器学习 Python 库 。
|
本文中我们开始涉及到神经网络,并通过 Keras 接触到了第一个数据集。在下一篇文章中,我们将继续讲解神经网络和 Keras,并通过使用该数据集训练自己的模型。我们还会遇到 scikit-learn, 它是另一个强大的机器学习 Python 库 。
|
||||||
|
|
||||||
|
*(题图:DA/2f8f2e0c-c9a7-4a55-8a03-3b5105721013)*
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
via: https://www.opensourceforu.com/2023/01/ai-introduction-to-keras-and-our-first-data-set/
|
via: https://www.opensourceforu.com/2023/01/ai-introduction-to-keras-and-our-first-data-set/
|
||||||
@ -104,7 +103,7 @@ via: https://www.opensourceforu.com/2023/01/ai-introduction-to-keras-and-our-fir
|
|||||||
作者:[Deepu Benson][a]
|
作者:[Deepu Benson][a]
|
||||||
选题:[lujun9972][b]
|
选题:[lujun9972][b]
|
||||||
译者:[toknow-gh](https://github.com/toknow-gh)
|
译者:[toknow-gh](https://github.com/toknow-gh)
|
||||||
校对:[校对者ID](https://github.com/校对者ID)
|
校对:[wxy](https://github.com/wxy)
|
||||||
|
|
||||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||||
|
|
||||||
@ -122,3 +121,4 @@ via: https://www.opensourceforu.com/2023/01/ai-introduction-to-keras-and-our-fir
|
|||||||
[10]: https://www.opensourceforu.com/wp-content/uploads/2022/11/Figure-10-TensorFlow-for-Neural-Networks-2-590x121.png
|
[10]: https://www.opensourceforu.com/wp-content/uploads/2022/11/Figure-10-TensorFlow-for-Neural-Networks-2-590x121.png
|
||||||
[11]: https://www.opensourceforu.com/wp-content/uploads/2022/11/Figure-11-Our-first-data-set-590x219.png
|
[11]: https://www.opensourceforu.com/wp-content/uploads/2022/11/Figure-11-Our-first-data-set-590x219.png
|
||||||
[12]: https://www.opensourceforu.com/wp-content/uploads/2022/11/Figure-12-A-sample-from-the-data-set.png
|
[12]: https://www.opensourceforu.com/wp-content/uploads/2022/11/Figure-12-A-sample-from-the-data-set.png
|
||||||
|
[0]: https://img.linux.net.cn/data/attachment/album/202401/24/093419f88e88zchzzauuul.jpg
|
Loading…
Reference in New Issue
Block a user