线性回归是学习数据科学的第一步。因此,即使你是这个领域的新手,你也必须了解这些概念,因为这些算法大多被数据科学研究人员所使用。这些算法也很容易理解,可以开始机器学习的旅程。
在本教程中,我们将看到numpy(polyfit)回归模型。
函数numpy.polyfit()通过最小化平方误差之和找到最佳拟合线。这个方法接受三个参数。
- x--输入数据
- y--输出数据
- 多项式程度值(整数
那么,让我们开始逐步使用polyfit方法。
第1步:导入所有需要的库和包来运行这个程序。
第91行:我们导入NumPy和matplotlib库。polyfit 自动归入NumPy,所以不需要导入。matplotlib用于绘制数据,matplotlib inline用于在jupyter笔记本中绘制图形。
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
第2步:现在,我们的下一步是创建数据集(x和y)。
第83行。我们随机生成x和y的数据。
x= [28, 8, 11, 37, 15, 25, 51, 11, 32, 34, 43, 2, 40, 16, 40, 25, 40, 17, 21, 57]
y= [8, 8, 9, 72, 22, 51, 85, 4, 75, 48, 72, 1, 62, 37, 75, 42, 75, 47, 57, 95]
第3步:我们只是要把特征(x)和目标(y)绘制在图上,如下所示。
plt.scatter(x,y)
第4步:在这一步,我们要在数据x和y上拟合直线。
这一步非常简单,因为我们将使用polyfit方法的概念。polyfit方法直接与Numpy一起出现,如上图所示。这个方法接受三个参数。
- x--输入数据
- y--输出数据
- 多项式程度值(整数)
在这个程序中,我们使用的是多项式的度数值1,这表示它是一个一级多项式。但是我们也可以把它用于二度和三度多项式。
1 model = np.polyfit(x, y, 1)
当我们按回车键时,polyfit计算出线性回归模型并存储到右侧的变量模型中。
拟合线背后的逻辑
所以,我们可以看到,只要按一下回车键,我们就得到了线性回归模型。所以,现在我们在想,这种方法的背后究竟是什么在起作用,它们是如何拟合直线的。
polyfit方法背后的工作方法被称为普通最小平方法。有些人把它叫做OLS。它通常被用户用来拟合直线。背后的原因是它非常容易使用,而且能提供90%以上的准确性。
让我们来看看OLS的表现。
首先,我们需要了解一下误差。误差是通过X和Y数据之间的差异来计算的。
例如,我们在回归模型上拟合一条线,看起来像下面这样。
蓝点是数据点,红线是我们用polyfit方法在数据点上拟合的。
让我们假设x=24,y=58
当我们拟合直线时,直线的计算值为y=44.3。实际值和计算值之间的差异是特定数据点的误差。
因此,OLS(普通最小平方)方法使用以下步骤计算拟合。
1.计算拟合模型和数据点之间的误差。
2.然后我们对每个数据点的误差进行平方。
3.将所有的数据点误差平方相加。
4.最后,确定该平方误差之和最小的那条线。
所以,polyfit使用上述方法来拟合直线。
第5步:模型
我们已经完成了机器学习的编码部分。现在,我们可以检查储存在模型变量中的x和y的值。为了检查x和y的值,我们必须打印模型,如下图所示。
最后,我们得到了一个大纲方程。
y = 1.75505212 * x - 1.27719099
通过使用这个线性方程,我们可以得到y的值。
上述线性方程也可以用ploy1d()方法求解,如下所示。
predict = np.poly1d(model)
x_value = 20
predict(x_value)
我们得到的结果是33.82385131766588。
我们从手工计算中也得到了同样的结果。
y = 1.75505212 * 20 – 1.27719099
y = 33.82385131766588
所以,上述两个结果都表明,我们的模型正确地拟合了这条线。
第6步:模型的准确性
我们还可以检查模型的准确性,它是否能给出正确的结果。模型的准确性可以通过R平方(R2)来计算。R平方(R2)的值在0和1之间。接近1的结果将表明模型的准确性很高。因此,让我们检查一下上述模型的准确性。我们将导入另一个库,sklearn,如下所示。
from sklearn.metrics import r2_score
r2_score(y, predict(x))
结果显示,它接近于1,所以它的准确率很高。
第7步:绘制模型
绘图是在数据点上直观地看到模型拟合线的方法。它给出了模型的清晰图像。
x_axis = range(0, 60)
y_axis = predict(x_axis)
plt.scatter(x, y)
plt.plot(x_axis, y_axis, c = 'g')
下面是对上述绘图方法的简单解释。
第1行:它是我们想在绘图上显示的范围。在我们的代码中,我们使用的是0到60的范围值。
第2行:所有从0到60的范围值将被计算出来。
第3行:我们将这些x和y的原始数据集传递给散点方法。
第4行:我们最后绘制我们的图表,绿色的线就是上图中的拟合线。
总结
在这篇文章中,我们已经学习了线性回归模型,这是机器学习之旅的开始。还有一些回归模型,在另一篇文章中会有解释。在这里,我们有一个干净的数据集,因为那是一个假的,但在现实生活中的项目中,你可能会得到一个肮脏的数据集,你必须对其进行特征工程,以清理数据集用于模型中。如果你没有完全理解这个教程,即使这样也能帮助你轻松学习另一个回归模型。
线性回归模型是数据科学最常使用的算法。如果你想在这个领域有自己的事业,你必须有关于回归模型的想法。所以,请保持联系,我们很快就会带着新的数据科学文章回来。