多变量线性回归模型——梯度下降法、随机梯度下降法之python实战

本文通过实例展示了在多变量线性回归中,如何使用梯度下降法和随机梯度下降法对广东省广州市海珠区的房价数据进行建模。讨论了不同学习率、数据预处理对模型训练的影响,并提供Python代码实现。
摘要由CSDN通过智能技术生成

这篇文章主要讲述在多变量线性回归模型中运用梯度下降法与随机梯度下降法解决问题的方法。有关于梯度下降法的数学推导不做讲述的重点。在这篇文章里,我们将对一个包含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 = line.split(' ')   # 移除每一行中出现的' '符;  
16.	        returnMat[index, :] = li
  • 5
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值