![机器学习编程:从编码到深度学习](https://wfqqreader-1252317822.image.myqcloud.com/cover/201/38335201/b_38335201.jpg)
上QQ阅读APP看书,第一时间看更新
4.4 告别偏置
到目前为止,我们执行了如下预测公式:
![](https://epubservercos.yuewen.com/432DF4/20180619108106606/epubprivate/OEBPS/Images/054-2-i.jpg?sign=1738867392-uFpVTwRSImf61VtDf5mXtX5Xgk8GYhoH-0-b7b3ed4ed101f7bf90a8419b0222b0f7)
现在我们按如下方式将偏置放回预测公式:
![](https://epubservercos.yuewen.com/432DF4/20180619108106606/epubprivate/OEBPS/Images/054-3-i.jpg?sign=1738867392-f8VywuRWhtn0wjtD0GzgocytcpDHOzfs-0-32e21b687ea8a06f3ea97a51d14e3c15)
我们可以像上一章那样,匆忙地编写代码并在每个地方添加偏置,但是请稍等一下。我可以教你一个技巧,可以让偏置更加顺利地融入代码当中。
再看一下前面的公式,偏置和权重之间有什么区别呢?它们之间唯一的区别在于,权重乘以某个输入变量x,而偏置并非如此。现在假设系统中还有一个输入变量(我们称之为x0),它的值总是1。那么可以将公式改写成如下形式:
![](https://epubservercos.yuewen.com/432DF4/20180619108106606/epubprivate/OEBPS/Images/054-4-i.jpg?sign=1738867392-vwTMcTmERJRpL1CsgiobbZ4ousD7l0Yk-0-212f589298a2f2b8180d1adb79b1150a)
现在偏置和权重之间没有任何区别。偏置就是一个输入变量的权重,而这个输入变量的取值恒为常数1。这就是我说的技巧,可以添加一个取值恒为1的虚拟输入变量,这就不再需要显式地表示偏置了。
我们可以通过在pizza_3_vars.txt文件中添加一列1来加入这个常量输入变量,如下图所示:
![](https://epubservercos.yuewen.com/432DF4/20180619108106606/epubprivate/OEBPS/Images/055-i.jpg?sign=1738867392-aWQOZVdI3vixOm35DofZxvD57k2zDbhy-0-3fcb6e4f6faa5d33be983e283667c252)
然而,通常最好避免打乱原始数据的结构,我们可以在加载数据之后将一列1插入X中。这个偏置列的位置并不重要,但通常将它作为第一列插入,如下所示:
![](https://epubservercos.yuewen.com/432DF4/20180619108106606/epubprivate/OEBPS/Images/055-2-i.jpg?sign=1738867392-17q3EzqtdGPRA0FjeW1kjwyLcpcqw2F9-0-dfa9246af4e4dd257963244e152dfa7f)
我们可以利用这个机会在程序中添加一些打印输出命令。首先,打印权重矩阵(转置后的,使之适合于一行),然后打印前5个样本的预测值和标签值,这样就可以对它们进行比较了。
这样,我们的多元线性回归程序就完成了。