Javatpoint标志
Javatpoint标志

机器学习中的逻辑回归

  • 逻辑回归是最流行的机器学习算法之一,它属于监督学习技术。它用于使用一组给定的自变量来预测分类因变量。
  • 逻辑回归预测一个分类因变量的输出。因此,结果必须是一个分类值或离散值。它可以是Yes或No, 0或1,true或False等,但不是给出0和1的确切值,它给出了介于0和1之间的概率值
  • 逻辑回归与线性回归非常相似,只是它们的使用方式不同。线性回归用于解决回归问题,而逻辑回归用于解决分类问题
  • 在逻辑回归中,我们不是拟合一条回归线,而是拟合一个“S”形逻辑函数,它预测两个最大值(0或1)。
  • 逻辑函数的曲线表明了某些事情的可能性,比如细胞是否癌变,老鼠是否肥胖,等等。
  • 逻辑回归是一种重要的机器学习算法,因为它具有使用连续和离散数据集提供概率和分类新数据的能力。
  • 逻辑回归可以用于使用不同类型的数据对观察结果进行分类,并且可以很容易地确定用于分类的最有效变量。下图显示了logistic函数:
机器学习中的逻辑回归

注意:逻辑回归使用预测建模的概念作为回归;因此,它被称为逻辑回归,但用于对样本进行分类;因此,它属于分类算法。

Logistic函数(Sigmoid函数):

  • sigmoid函数是一个数学函数,用于将预测值映射到概率。
  • 它将任何实值映射到0到1范围内的另一个值。
  • 逻辑回归的值必须在0到1之间,不能超过这个极限,所以它形成了一个类似“S”型的曲线。s型曲线称为Sigmoid函数或logistic函数。
  • 在逻辑回归中,我们使用阈值的概念,它定义了0或1的概率。例如,高于阈值的值趋向于1,低于阈值的值趋向于0。

逻辑回归的假设:

  • 因变量本质上必须是绝对的。
  • 自变量不能多重共线性。

Logistic回归方程:

由线性回归方程得到Logistic回归方程。得到Logistic回归方程的数学步骤如下:

  • 我们知道直线的方程可以写成:
机器学习中的逻辑回归
  • 在逻辑回归中,y只能在0到1之间,因此我们将上面的方程除以(1-y):
机器学习中的逻辑回归
  • 但我们需要从-[无穷]到+[无穷]的范围,然后对方程取对数它会变成:
机器学习中的逻辑回归

上述方程是逻辑回归的最终方程。

逻辑回归类型:

根据分类,逻辑回归可以分为三种类型:

  • 二项:在二项逻辑回归中,只能有两种可能的因变量类型,如0或1,合格或不合格等。
  • 多项:在多项逻辑回归中,因变量可能有3种或更多的无序类型,如“猫”、“狗”或“羊”。
  • 顺序:在有序逻辑回归中,可以有3种或更多可能的有序类型的因变量,如“低”、“中”或“高”。

逻辑回归的Python实现(二项)

为了理解逻辑回归在Python中的实现,我们将使用下面的例子:

例子:有一个给定的数据集,其中包含从社交网站获得的各种用户的信息。有一家汽车制造公司最近推出了一款新的SUV汽车。所以公司想要检查数据集中有多少用户,想要购买这辆车。

对于这个问题,我们将使用逻辑回归算法建立一个机器学习模型。数据集如下图所示。在这个问题中,我们将预测购买变量(因变量)通过使用年龄和工资(自变量)

机器学习中的逻辑回归

逻辑回归的步骤:为了使用Python实现逻辑回归,我们将使用与之前回归主题相同的步骤。步骤如下:

  • 数据预处理步骤
  • 训练集的逻辑回归拟合
  • 预测测试结果
  • 测试结果的准确性(混淆矩阵的创建)
  • 可视化测试集结果。

1.数据预处理步骤:在这一步中,我们将预处理/准备数据,以便我们可以在代码中有效地使用它。这将与我们在数据预处理主题中所做的相同。代码如下所示:

通过执行上面的代码行,我们将得到数据集作为输出。考虑给定的图像:

机器学习中的逻辑回归

现在,我们将从给定的数据集中提取因变量和自变量。下面是它的代码:

在上面的代码中,我们用[2,3]表示x,因为我们的自变量是年龄和工资,它们位于索引2,3处。变量y取4因为因变量的下标是4。输出将是:

机器学习中的逻辑回归

现在我们将数据集分成训练集和测试集。下面是它的代码:

它的输出如下所示:

对于测试集:机器学习中的逻辑回归

对于训练集:

机器学习中的逻辑回归

在逻辑回归中,我们会做特征缩放,因为我们想要准确的预测结果。这里我们只缩放自变量因为因变量只有0和1的值。下面是它的代码:

缩放后的输出如下:

机器学习中的逻辑回归

2.训练集的逻辑回归拟合:

我们已经准备好了我们的数据集,现在我们将使用训练集来训练数据集。为了提供训练或将模型拟合到训练集,我们将导入LogisticRegressionsklearn图书馆。

在导入类之后,我们将创建一个分类器对象,并使用它将模型拟合到逻辑回归中。下面是它的代码:

输出:通过执行上面的代码,我们将得到下面的输出:

[5]:

因此,我们的模型很好地拟合了训练集。

3.预测测试结果

我们的模型在训练集上得到了很好的训练,所以我们现在将通过使用测试集数据来预测结果。下面是它的代码:

在上面的代码中,我们创建了y_pred向量来预测测试集的结果。

输出:通过执行上面的代码,将在变量explorer选项下创建一个新的向量(y_pred)。可以看作是:

机器学习中的逻辑回归

上面的输出图像显示了相应的预测用户,他们想购买或不购买汽车。

4.测试结果的准确性

现在我们将在这里创建混淆矩阵来检查分类的准确性。要创建它,我们需要导入confusion_matrixsklearn库的功能。在导入函数之后,我们将使用一个新变量来调用它厘米.该函数主要有两个参数y_true(实际值)和y_pred(分类器返回的目标值)。下面是它的代码:

输出:

通过执行上面的代码,将创建一个新的混淆矩阵。考虑下面的图片:

机器学习中的逻辑回归

通过对混淆矩阵的解释,可以发现预测结果的准确性。通过以上输出,我们可以理解为65+24= 89(正确输出),8+3= 11(错误输出)。

5.可视化训练集结果

最后,我们将训练集结果可视化。为了可视化结果,我们将使用ListedColormapmatplotlib库的类。下面是它的代码:

在上面的代码中,我们导入了ListedColormapMatplotlib库的类来创建用于可视化结果的颜色图。我们创建了两个新变量x_sety_set来代替x_trainy_train.在那之后,我们使用了nm.meshgrid命令创建一个矩形网格,其范围为-1(最小)到1(最大)。我们所取的像素点分辨率为0.01。

为了创建填充轮廓,我们使用mtp.contourf命令,它将创建提供颜色(紫色和绿色)的区域。在这个函数中,我们传递了classifier.predict显示分类器预测的数据点。

输出:通过执行上面的代码,我们将得到下面的输出:

机器学习中的逻辑回归

该图表可以用以下几点来解释:

  • 在上面的图表中,我们可以看到有一些绿点在绿色区域内紫色的点在紫色区域内。
  • 所有这些数据点都是来自训练集的观察点,它显示了购买变量的结果。
  • 这张图是由两个独立变量组成的,x轴表示年龄y轴表示估计工资
  • 紫点观测,其已购买(因变量)可能为0,即未购买SUV汽车的用户。
  • 绿点观测(因变量)可能为1,表示购买SUV汽车的用户。
  • 我们还可以从图中估计,工资较低的年轻用户没有购买汽车,而估计工资较高的老年用户购买了汽车。
  • 绿色区域有一些紫色点(买车)紫色区域有一些绿色点(不买车)所以我们可以说,估计工资高的年轻用户购买了这辆车,而估计工资低的老用户没有购买这辆车。

分类器的目标:

我们已经成功地将训练集结果可视化,用于逻辑回归,我们的分类目标是划分购买SUV汽车的用户和未购买SUV汽车的用户。因此,从输出图中,我们可以清楚地看到两个区域(紫色和绿色)的观察点。紫色区域是没有购买汽车的用户,绿色区域是购买了汽车的用户。

线性分类器:

从图中可以看出,分类器本质上是直线或线性的,因为我们使用线性模型进行逻辑回归。在进一步的主题中,我们将学习非线性分类器。

可视化测试集结果:

我们的模型使用训练数据集进行了很好的训练。现在,我们将可视化新的观察结果(测试集)。测试集的代码将与上面相同,只是这里我们将使用X_test和y_test而不是X_train和y_train.下面是它的代码:

输出:

机器学习中的逻辑回归

上图显示了测试集的结果。正如我们所看到的,图表被分为两个区域(紫色和绿色)。绿色的观测值在绿色区域,紫色的观测值在紫色区域。所以我们可以说这是一个很好的预测和模型。一些绿色和紫色的数据点位于不同的区域,可以忽略,因为我们已经使用混淆矩阵计算了这个误差(11个不正确的输出)。

因此,我们的模型非常好,可以为这个分类问题做出新的预测。


下一个话题 k -最近邻(KNN)算法





Youtube 视频加入我们的Youtube频道:现在加入

反馈


帮助别人,请分享

脸谱网 推特 pinterest

学习最新教程


准备


热门的技术


b .技术/马华






Baidu
map