📅  最后修改于: 2020-09-27 02:02:48             🧑  作者: Mango
简单线性回归是一种回归算法,可以对因变量和单个自变量之间的关系进行建模。简单线性回归模型显示的关系是线性或倾斜的直线,因此称为简单线性回归。
简单线性回归的关键点在于因变量必须是连续/实数值。但是,可以根据连续值或分类值来测量自变量。
简单线性回归算法主要有两个目标:
可以使用以下方程式表示简单线性回归模型:
哪里,
a0 =它是回归线的截距(可以通过放x = 0来获得)a1 =它是回归线的斜率,它表明该线是增加还是减少。 ε=误差项。 (对于一个好的模型,可以忽略不计)
简单线性回归的问题陈述示例:
在这里,我们获取一个具有两个变量的数据集:薪水(因变量)和经验(因变量)。此问题的目标是:
在本节中,我们将创建一个简单线性回归模型,以找出最佳的拟合线来表示这两个变量之间的关系。
要使用Python在机器学习中实现简单线性回归模型,我们需要执行以下步骤:
步骤1:数据预处理
创建简单线性回归模型的第一步是数据预处理。在本教程的前面,我们已经做到了。但是会有一些更改,这些更改在以下步骤中进行:
import numpy as nm
import matplotlib.pyplot as mtp
import pandas as pd
data_set= pd.read_csv('Salary_Data.csv')
通过执行上面的代码行(ctrl + ENTER),我们可以通过单击变量资源管理器选项在Spyder IDE屏幕上读取数据集。
上面的输出显示了数据集,该数据集具有两个变量:薪金和经验。
注意:在Spyder IDE中,包含代码文件的文件夹必须保存为工作目录,并且数据集或csv文件应位于同一文件夹中。
x= data_set.iloc[:, :-1].values
y= data_set.iloc[:, 1].values
在上面的代码行中,对于x变量,由于我们要从数据集中删除最后一列,因此我们采用-1值。对于y变量,我们将1值作为参数,因为我们要提取第二列并且索引从零开始。
通过执行上面的代码行,我们将获得X和Y变量的输出,如下所示:
在上面的输出图像中,我们可以看到X(独立)变量和Y(独立)变量已从给定的数据集中提取。
# 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= 1/3, random_state=0)
通过执行以上代码,我们将获得x检验,x训练和y检验,y训练数据集。考虑以下图像:
测试数据集:
训练数据集:
步骤2:将简单线性回归拟合到训练集:
现在第二步是将我们的模型拟合到训练数据集。为此,我们将从scikit Learn导入linear_model库的LinearRegression类。导入该类后,我们将创建该类的一个对象,称为回归器。下面给出了此代码:
#Fitting the Simple Linear Regression model to the training dataset
from sklearn.linear_model import LinearRegression
regressor= LinearRegression()
regressor.fit(x_train, y_train)
在上面的代码中,我们使用fit()方法将简单线性回归对象拟合到训练集。在fit() 函数,我们传递了x_train和y_train,这是我们的因变量和自变量的训练数据集。我们已经将回归对象拟合到训练集,以便模型可以轻松地学习预测变量和目标变量之间的相关性。执行以上代码行后,我们将获得以下输出。
输出:
Out[7]: LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None, normalize=False)
步骤:3.测试集结果的预测:
因变量(薪水)和自变量(经验)。因此,现在,我们的模型已准备好预测新观测值的输出。在这一步中,我们将向模型提供测试数据集(新观察值),以检查其是否可以预测正确的输出。
我们将创建一个预测向量y_pred和x_pred,分别包含测试数据集的预测和训练集的预测。
#Prediction of Test and Training set result
y_pred= regressor.predict(x_test)
x_pred= regressor.predict(x_train)
执行上述代码行后,将在变量资源管理器中生成两个名为y_pred和x_pred的变量,这些选项包含针对训练集和测试集的薪水预测。
输出:
您可以通过在IDE中单击变量资源管理器选项来检查变量,也可以通过比较y_pred和y_test中的值来比较结果。通过比较这些值,我们可以检查模型的性能如何。
步骤:4.可视化训练集结果:
现在,在此步骤中,我们将可视化训练集结果。为此,我们将使用pyplot库的scatter() 函数 ,该函数已在预处理步骤中导入。 scatter() 函数将创建观测值的散点图。
在x轴上,我们将绘制员工的工作年限,在y轴上,我们将绘制员工的薪水。在函数,我们将传递训练集的实际值,这表示经验x_train的一年,薪水y_train的训练集和观察值的颜色。在这里,我们采用绿色进行观察,但是根据选择,它可以是任何颜色。
现在,我们需要绘制回归线,为此,我们将使用pyplot库的plot() 函数 。在此函数,我们将传递训练集的年限,训练集x_pred的预计薪水以及线条的颜色。
接下来,我们将给出该图的标题。因此,在这里,我们将使用pyplot库的title() 函数并传递名称(“薪金与经验(培训数据集)”)。
之后,我们将使用xlabel()和ylabel() 函数为x轴和y轴分配标签。
最后,我们将使用show()在图中表示以上所有内容。代码如下:
mtp.scatter(x_train, y_train, color="green")
mtp.plot(x_train, x_pred, color="red")
mtp.title("Salary vs Experience (Training Dataset)")
mtp.xlabel("Years of Experience")
mtp.ylabel("Salary(In Rupees)")
mtp.show()
输出:
通过执行以上代码行,我们将获得以下图形图作为输出。
在上面的图中,我们可以看到绿色点的实际值观察结果,而预测值被红色回归线覆盖。回归线显示因变量和自变量之间的相关性。
通过计算实际值和预测值之间的差异,可以观察到直线的良好拟合。但是,正如我们在上图中所看到的那样,大多数观察值都接近回归线,因此我们的模型对于训练集非常有用。
步骤:5.可视化测试集结果:
在上一步中,我们已经可视化了模型在训练集上的表现。现在,我们将对测试集执行相同的操作。完整的代码将与上面的代码相同,不同的是,我们将使用x_test和y_test代替x_train和y_train。
在这里,我们还更改了观察值和回归线的颜色以区分两个图,但这是可选的。
#visualizing the Test set results
mtp.scatter(x_test, y_test, color="blue")
mtp.plot(x_train, x_pred, color="red")
mtp.title("Salary vs Experience (Test Dataset)")
mtp.xlabel("Years of Experience")
mtp.ylabel("Salary(In Rupees)")
mtp.show()
输出:
通过执行上面的代码行,我们将获得如下输出:
在上面的图中,蓝色给出了观察结果,红色回归线给出了预测结果。如我们所见,大多数观察值都接近回归线,因此我们可以说我们的简单线性回归是一个很好的模型,能够做出很好的预测。