梯度下降法、随机梯度下降法之python实战"/>
多变量线性回归模型——梯度下降法、随机梯度下降法之python实战
这篇文章主要讲述在多变量线性回归模型中运用梯度下降法与随机梯度下降法解决问题的方法。有关于梯度下降法的数学推导不做讲述的重点。在这篇文章里,我们将对一个包含50个样本的数据集使用多变量回归模型进行处理,通过实操来加深对梯度下降法的理解。
一、语言和IDE
python3.7 + pycharm
二、问题陈述
给定一个名为“dataForTraining.txt”的文件。该文件包含广东省广州市海珠区的房价信息,里面包含50个训练样本数据。文件有三列,第一列对应房的面积(单位:平方米),第二列对应房子距离双鸭山职业技术学院的距离(单位:千米),第三列对应房子的销售价格(单位:万元)。每一行对应一个训练样本。请使用提供的50个训练样本来训练多变量回归模型以便进行房价预测,请用(随机)梯度下降法的多变量线性回归模型进行建模。为了评估训练效果,另外给定测试数据集“dataForTesting.txt” (该测试文件里的数据跟训练样本具有相同的格式,即第一列对应房子面积,第二列对应距离,第三列对应房子总价)。
三、问题求解
A、梯度下降法
使用多变量线性回归模型求解,假设函数为
模型参数为3个。初始条件下,theta、theta1、theta2均设定为0,学习率设定为0.00015。使用梯度下降的方法进行训练,对theta0、theta1、theta2进行迭代,迭代规则如下:
误差计算公式如下:
迭代结果如下:
曲线图:
数据记录:
由以上结果可看到梯度下降法的效果很好,训练误差不断收敛,测试误差也保持一个较小的稳定值。
python源码
1. import numpy as np
2. import matplotlib.pyplot as plt
3. from prettytable import PrettyTable
4.
5.
6. def list_to_matrix(filename): # 这个函数将txt文件中的数据读取出来,存进一个matrix中
7. np.set_printoptions(suppress=True) # 使输出不为科学计数法形式
8. fr = open(filename)
9. arrayOLines = fr.readlines()
10. numberOFLines = len(arrayOLines) # 获取此list的行数
11. returnMat = np.zeros((numberOFLines, 3)) # 返回的矩阵是numberOFLines * 3 的
12. index = 0
13. for line in arrayOLines:
14. line = line.strip() # 移除每一行结尾的最后符号,即'\n'符;
15. listFromLine &#
更多推荐
多变量线性回归模型——梯度下降法、随机梯度下降法之python实战
发布评论