Press "Enter" to skip to content

用神经网络思维准备Logistic回归数据

Logistic回归是一种二分类方法。在这个完整的教程中对猫和狗的图像进行训练之后,然后给出一张它以前从未见过的猫(y=0)或狗(y=1)的图片,我们将发现机器是否能够预测正确的类型。正如我们将看到的,即使是像Logistic回归这样的简单算法也能令人惊讶地很好地完成这项任务。

 

我们想创建一个可以接受任意数量的输入并将输出限制在0到1之间的模型。您可能会问,我们将如何做到这一点?答案很简单–一个神经元,具有乙状结肠激活功能。使用一个神经元,有一种方法可以衡量我们的预测输出与真实标签相比有多好。

 

这意味着我们计划建立一个具有神经网络思维方式的Logistic回归模型。

 

在本教程中,我将逐步指导您如何做到这一点,因此我还将磨练您对深度学习的直觉。

 

在本教程中,我们将使用优化算法(梯度下降)构建学习算法的一般体系结构,包括参数初始化、代价函数及其梯度计算。之后,我们将按照正确的顺序将上述三个函数集合到主模型函数中。总而言之,我们不会在您的代码中使用循环(For/While),除非这是最大化代码性能所必需的。

 

首先,导入此任务期间需要的所有包:

 

在本教程中,我将使用免费的狗与猫Kaggle数据集。你可以在这里下载:链接。我不会使用所有的图像,因为对于我们的模型来说,这是一个太大的数据集。在我的示例中,我将使用3000只猫和3000只狗作为训练模型。为了测试这个模型,我将使用500只猫和500只狗的图像。您可以从这里下载我的数据集:链接。LINK
LINK

 

首先,我们应该定义我们的图像大小。因为我们数据集中的图像具有不同的大小,所以我们需要将它们的大小调整到某个特定的大小。我选择64px作为我的教程。然后我定义我的训练和测试图像位置。在最后一步中,我从训练和测试数据集中读取所有图像位置,并将它们作为列表放置:

 

接下来,我们需要创建一个简单的函数,我们将使用该函数从文件路径中读取每个图像,调整其大小并将其返回以供将来使用:

 

现在,我们将创建一个函数来准备数据以供进一步使用。在下面的函数中,我们将分离数据,因此,如果我们的图像带有一只狗,我们将给出索引1,如果将有一只猫,我们将给出索引0:

 

现在,让我们调用我们创建的函数来读取文件夹中的所有测试和训练图像:

 

现在,我们应该在形状的NumPy数组中重塑形状(行、列、通道)的图像(行、列、通道)(Rows∗Cools∗Channels,1)。在此之后,我们的训练(和测试)数据集将表示平面化图像:

 

让我们打印我们的数据形状:

 

打印完我们的形状后,我们应该会看到它们:

 

要表示彩色图像,必须为每个像素指定红色、绿色和蓝色通道(RGB),因此像素值实际上是从0到255的三个数字的向量。

 

机器学习中一个常见的预处理步骤是将我们的数据集居中并标准化,这意味着我们从每个示例中减去整个NumPy数组的平均值,然后将每个示例除以整个NumPy数组的标准差。但对于图片数据集,将数据集的每一行除以255(像素通道的最大值)会更简单、更方便,并且几乎同样有效:

 

完整教程代码:

 

现在我们知道了如何准备图像数据集。在下一个教程中,我们将创建学习算法的通用体系结构,并开始构建其功能。

 

最初发表于https://pylessons.com/Logistic-Regression-part4
https://pylessons.com/Logistic-Regression-part4

Be First to Comment

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注