![Python机器学习算法: 原理、实现与案例](https://wfqqreader-1252317822.image.myqcloud.com/cover/317/27563317/b_27563317.jpg)
上QQ阅读APP看书,第一时间看更新
1.4 算法实现
1.4.1 最小二乘法
首先,我们基于最小二乘法实现线性回归,代码如下:
![](https://epubservercos.yuewen.com/889FA0/15825992205221106/epubprivate/OEBPS/Images/Figure-P17_33014.jpg?sign=1738855876-llID59zNOb7Qm8tUF72wk4xSozrfaBhx-0-6aeab2fe1f5db8592bc6f11dddec6657)
此段代码十分简单,简要说明如下。
- _ols()方法:最小二乘法的实现,即
。
- _preprocess_data_X()方法:对
进行预处理,添加
列并设置为1。
- train()方法:训练模型,调用_ols()方法估算模型参数
,并保存。
- predict()方法:预测,实现函数
,对
中每个实例进行预测。
1.4.2 梯度下降
接下来,我们基于(批量)梯度下降实现线性回归,代码如下:
![](https://epubservercos.yuewen.com/889FA0/15825992205221106/epubprivate/OEBPS/Images/Figure-P18_33015.jpg?sign=1738855876-bNEAcZ5urB4tqEoCUG2nF9rnHTLQ1ha3-0-efe00dcba27c07c519196781e13a4318)
![](https://epubservercos.yuewen.com/889FA0/15825992205221106/epubprivate/OEBPS/Images/Figure-P19_33017.jpg?sign=1738855876-xDARseNjg4S7Dj8ZvN32cUeQkZeuljkr-0-a42ea390049531aaa5cb62a63a6af0b4)
![](https://epubservercos.yuewen.com/889FA0/15825992205221106/epubprivate/OEBPS/Images/Figure-P20_33018.jpg?sign=1738855876-Tkfw6xDV9F9Zbrvcn5KUB7HY3SplzsPO-0-dcd8a88ee9340c3e229326c00d3e4de2)
上述代码简要说明如下(详细内容参看代码注释)。
- __init__()方法:构造器(也称为构造函数),保存用户传入的超参数。
- _predict()方法:预测的内部接口,实现函数
。
- _loss()方法:实现损失函数
,计算当前
下的损失,该方法有以下两个用途。
- ◆ 供早期停止法使用:如果用户通过超参数tol启用早期停止法,则调用该方法计算损失。
- ◆ 方便调试:迭代过程中可以每次打印出当前损失,观察变化的情况。
- _gradient()方法:计算当前梯度
。
- _gradient_descent()方法:实现批量梯度下降算法。
- _preprocess_data_X()方法:对
进行预处理,添加
列并设置为1。
- train()方法:训练模型。该方法由3部分构成:
- ◆ 对训练集的X_train进行预处理,添加
列并设置为1。
- ◆ 初始化模型参数
,赋值较小的随机数。
- ◆ 调用_gradient_descent()方法训练模型参数
。
- ◆ 对训练集的X_train进行预处理,添加
- predict()方法:预测。内部调用_predict()方法对
中每个实例进行预测。