机器学习编程:从编码到深度学习
上QQ阅读APP看书,第一时间看更新

2.2 编写线性回归代码

回顾一下我们的目标:要编写一个能够根据已知的座位预订数预测比萨销量的程序。这个程序遵循在1.3节中所介绍的方法,即首先在训练阶段构造某个函数来拟合样本数据;然后在预测阶段使用所构造的函数来预测比萨销量。

在一般情况下,找到一个能够有效拟合数据的函数通常需要做大量的工作。然而,在这个应用实例中,我们十分幸运。我们的样本数据点大致上对齐,因此可以使用一个特别简单的函数,即使用直线来近似拟合数据。

现在我们来看看这条直线是什么样的。首先,选择一条经过坐标轴原点的直线,因为这样更容易开始。

我们一旦找到了所需要的直线,训练阶段就结束了。可以说这条直线是表示座位预订数与比萨销量之间的数量关系的数学模型。

在预测阶段,我们使用这条直线根据输入变量的数值预测标签的数值。例如,如果有20个预订,那么预期可以卖出多少个比萨?为了回答这个问题,可以选择“预订”轴上x=20这个点,然后从那里一直往上走直到与这条直线相交,然后向左拐弯,直到与“比萨”轴相交,得到y=42。

这样我们就得到了答案:当预订数为20个时,可以预期卖出42个比萨。

在监督学习出现之前,统计学家就已经在使用这种方法了,并将其称为线性回归。“线性”的意思是我们寻找的是一条直线而非一条曲线,“回归”是统计学家的说法,它的含义是:“找出两个变量之间的关系”。

总结一下,这就是使用线性回归进行监督学习的方法:

训练阶段:画出一条可以拟合样本数据的直线;

预测阶段:使用这条直线根据输入变量值预测相应的标签值。

诚然,并不是所有的数量关系都可以使用直线函数进行表示。如果样本数据是沿曲线变化的,或者没有明显的分布形状,那么就不能使用这种简单的方法。然而,Roberto的样本数据大致分布在一条线上,所以使用线性回归方法对于这个特定的具体问题应该是足够了。

现在让我们找到一种使用代码实现线性回归的方法。