个性化阅读
专注于IT技术分析

Logistic回归机器学习

本文概要

  • Logistic回归是最流行的机器学习算法,来监督学习技术,下一个。它用于使用一组给定自变量的预测分类因变量。
  • 逻辑回归预测一个分类因变量的输出。因此,结果必须是明确的或离散值。它可以是Yes或No,0或1,是真是假,等,但不是给准确值0和1,它给人的概率值,其中0和1之间。
  • Logistic回归是非常类似于线性回归,只是如何使用它们。线性回归用于解决回归问题,而Logistic回归用于解决分类问题。
  • 在Logistic回归,代替拟合回归线,我们适合的“S”形的逻辑函数,其预测两个最大值(0或1)。
  • 从逻辑函数的曲线表示诸如细胞是否是癌或没有,鼠标是肥胖或不基于其体重等的东西的可能性
  • Logistic回归是一个显著的机器学习算法,因为它提供使用连续和离散数据集的概率和分类的新数据的能力。
  • Logistic回归可以用于使用不同类型的数据的观察分类,并可以容易地确定用于分类的最有效的变量。下面的图像示出了逻辑函数:

注:Logistic回归使用预测模型为回归的概念;因此,它被称为逻辑回归,但是用于分类样本;因此,它属于分类算法下。

Logistic函数(双曲线函数)

  • S形函数是用于预测值映射到概率的数学函数。
  • 它的任何实际值映射到范围的0和1内的另一个值。
  • Logistic回归的值必须在0和1之间,不能超越这个限制,所以它形成像“S”形的曲线。 S-型曲线称为Sigmoid函数或逻辑函数。
  • 在逻辑回归中,我们使用的阈值,其定义的0或1的概率的概念如值高于所述阈值趋于1,且低于阈值的值趋近于0。

假设对于逻辑回归

  • 因变量必须在性质分类。
  • 自变量不应该有多重共线性。

Logistic回归方程

的Logistic回归方程可从线性回归方程来获得。得到Logistic回归方程给出如下的数学步骤:

  • 我们知道的直线方程可以表示为:
  • 在Logistic回归y可以是0和1之间只,因此对于这让的除以(1-y)的上述等式中:
  • 但是我们需要之间的范围 – ∞,到+∞,,然后坐式也将成为对数:

上述等式是用于逻辑回归最终方程。

Logistic回归类型

在分类的基础上,Logistic回归可以分为三种类型:

  • 二项式:在二项式Logistic回归,只能有两种可能类型的因变量,如0或1,通过或失败等
  • 多项式:在多项式Lo​​gistic回归,可以有3种或更多个可能的无序类型因变量,如“猫”,“狗”,或“绵羊”
  • 序:在序Logistic回归,可以有3种或更多可能的有序类型因变量,如“低”,“中”,或“高”。

Logistic回归的Python实现(二项)

要了解Logistic回归的Python中的实施,我们将使用下面的例子:

例如:有一个给定的数据集,其包含来自社交网站获得用户的各种信息。有一个汽车制造公司,已最近推出了新的SUV车。因此,该公司希望从数据集中检查有多少用户,想要购买的汽车。

对于这个问题,我们将使用Logistic回归算法建立一个机器学习模型。数据集被示出下面的图所示。在这个问题中,我们将预测使用的年龄和薪水(自变量)购买的变量(因变量)。

在Logistic回归的步骤:要使用Python,我们将使用相同的步骤,我们在回归以前的题目都做执行Logistic回归。下面是步骤:

  • 数据前处理步骤
  • 拟合Logistic回归训练集
  • 预测测试结果
  • 结果的测试精度(混淆矩阵的创建)
  • 可视化测试集的结果。

1.数据预处理步骤:在这一步骤中,我们将预处理/准备数据,使我们可以在我们的代码有效地使用它。这将是相同的,因为我们在数据预处理的话题做了。这样做的代码下面给出:

#Data Pre-procesing Step
# importing libraries
import numpy as nm
import matplotlib.pyplot as mtp
import pandas as pd

#importing datasets
data_set= pd.read_csv('user_data.csv')

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

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

#Extracting Independent and dependent Variable
x= data_set.iloc[:,[2,3]].values
y= data_set.iloc[:,4].values

在上面的代码,我们采取[2,3]对于x,因为我们的独立变量是年龄和薪水,其在索引2,3。我们已经采取4为变量y,因为我们的因变量是在索引4。输出将是:

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

# Splitting the dataset into training and test set.
from sklearn.model_selection import train_test_split
x_train,x_test,y_train,y_test= train_test_split(x,y,test_size= 0.25,random_state=0)

该输出下面给出:

测试设置:

对于训练集:

在回归,我们会做的功能,缩放,因为我们想要预测准确的结果。在这里,我们将只规模的独立变量,因为因变量只​​有0和1的值。下面是它的代码:

#feature Scaling
from sklearn.preprocessing import StandardScaler  
st_x= StandardScaler()  
x_train= st_x.fit_transform(x_train)  
x_test= st_x.transform(x_test)

经缩放的输出给出如下:

2.拟合Logistic回归训练集:

我们已经准备好我们的数据集,而现在我们将利用训练训练集数据集。对于训练集提供培训或拟合模型,我们将导入逻辑回归类sklearn库。

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

#Fitting Logistic Regression to the training set
from sklearn.linear_model import LogisticRegression
classifier= LogisticRegression(random_state=0)
classifier.fit(x_train,y_train)

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

出[5]:

LogisticRegression(C=1.0,class_weight=None,dual=False,fit_intercept=True,intercept_scaling=1,l1_ratio=None,max_iter=100,multi_class='warn',n_jobs=None,penalty='l2',random_state=0,solver='warn',tol=0.0001,verbose=0,warm_start=False)

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

3.预测的测试结果

我们的模式是训练有素的训练集,所以我们现在就预测使用测试数据集的结果。下面是它的代码:

#Predicting the test set result
y_pred= classifier.predict(x_test)

在上面的代码中,我们已经创建了一个y_pred矢量预测测试集结果。

输出:通过执行上面的代码,一个新的载体(y_pred)将可变探险选项下被创建。它可以被看作是:

上述输出图像显示谁想要购买或不购买该车对应的预测的用户。

4.结果的测试精度

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

#Creating the Confusion matrix
from sklearn.metrics import confusion_matrix
cm= confusion_matrix()

输出:

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

我们可以通过解释混淆矩阵找到了预测结果的准确性。通过上面的输出,就可以解释该65 + 24 = 89(正确的输出)和图8 + 3 = 11(不正确的输出)。

5.可视化训练集结果

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

#Visualizing the training set result
from matplotlib.colors import ListedColormap
x_set,y_set = x_train,y_train
x1,x2 = nm.meshgrid(nm.arange(start = x_set[:,0].min() - 1,stop = x_set[:,0].max() + 1,step  =0.01),nm.arange(start = x_set[:,1].min() - 1,stop = x_set[:,1].max() + 1,step = 0.01))
mtp.contourf(x1,x2,classifier.predict(nm.array([x1.ravel(),x2.ravel()]).T).reshape(x1.shape),alpha = 0.75,cmap = ListedColormap(('purple','green' )))
mtp.xlim(x1.min(),x1.max())
mtp.ylim(x2.min(),x2.max())
for i,j in enumerate(nm.unique(y_set)):
    mtp.scatter(x_set[y_set == j,0],x_set[y_set == j,1],c = ListedColormap(('purple','green'))(i),label = j)
mtp.title('Logistic Regression (Training set)')
mtp.xlabel('Age')
mtp.ylabel('Estimated Salary')
mtp.legend()
mtp.show()

在上面的代码中,我们导入了ListedColormap类Matplotlib库的创建可视化效果的颜色表。我们已经创建了两个新的变量x_set和y_set更换x_train和y_train。在此之后,我们已经使用了nm.meshgrid命令来创建一个矩形网格,其具有范围为-1(最小)到1(最大)。我们所采取的像素点是0.01的分辨率。

要创建一个充满轮廓,我们已经使用mtp.contourf命令,它会创建提供的颜色(紫色和绿色)的区域。在这个函数中,我们已经通过了classifier.predict显示由分类预测的预测数据点。

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

该曲线图可以在下面的点进行说明:

  • 在上面的图中,我们可以看到,有紫色区域内的绿色区域内的一些绿点,紫点。
  • 所有这些数据点从训练集,其中显示了购买的变量结果的观测点。
  • 该曲线图是通过使用在x轴和估计薪水在y轴的两个独立变量,即年龄制成。
  • 紫色的点观测对于其购买的(因变量)可能是0,即,谁没有购买SUV汽车用户。
  • 绿点观测对于其购买的(因变量)可能是1种手段的用户谁购买的SUV车。
  • 我们也可以从图中估计,谁是年轻与低工资的用户,没有购买汽车,而老用户以高薪水,估计购买的汽车。
  • 但也有在绿色区域的一些紫色的点(买车)和一些绿色点在紫色区域(未买车)。因此,我们可以说,高薪水,估计年轻用户购买的汽车,而具有低估计工资没买车的旧用户。

分类的目的:

我们已经成功地可视化训练集结果的回归,以及我们对这种分类的目标是谁除以购买SUV车,谁没有购买汽车的用户。因此,从输出图中,我们可以清楚地看到这两个区域(紫色和绿色)与观察点。紫色区域是为那些谁没有购买汽车的用户,以及绿色区域是谁购买汽车的用户。

线性分类:

正如我们可以从图中看到,该分类器是因为我们已经用于Logistic回归线性模型在自然界中的直线或线性的。在进一步的主题,我们将学习非线性分类。

可视化测试集的结果:

我们的模型是使用训练数据集训练有素。现在,我们将可视化的新的观测(试验组)的结果。对于测试集代码将保持相同,所不同的是,这里我们将使用x_test和y_test代替x_train和y_train的。下面是它的代码:

#Visulaizing the test set result
from matplotlib.colors import ListedColormap
x_set,y_set = x_test,y_test
x1,x2 = nm.meshgrid(nm.arange(start = x_set[:,0].min() - 1,stop = x_set[:,0].max() + 1,step  =0.01),nm.arange(start = x_set[:,1].min() - 1,stop = x_set[:,1].max() + 1,step = 0.01))
mtp.contourf(x1,x2,classifier.predict(nm.array([x1.ravel(),x2.ravel()]).T).reshape(x1.shape),alpha = 0.75,cmap = ListedColormap(('purple','green' )))
mtp.xlim(x1.min(),x1.max())
mtp.ylim(x2.min(),x2.max())
for i,j in enumerate(nm.unique(y_set)):
    mtp.scatter(x_set[y_set == j,0],x_set[y_set == j,1],c = ListedColormap(('purple','green'))(i),label = j)
mtp.title('Logistic Regression (Test set)')
mtp.xlabel('Age')
mtp.ylabel('Estimated Salary')
mtp.legend()
mtp.show()

输出:

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

因此,我们的模式非常好,准备做这个分类问题的新的预测。


赞(0)
未经允许不得转载:srcmini » Logistic回归机器学习

评论 抢沙发

评论前必须登录!