1-单变量的房价预测--线性回归问题

本文介绍了使用Python和TensorFlow解决单变量房价预测问题,通过线性回归模型实现。首先,作者展示了如何自编基础代码,包括数据预处理、梯度下降算法和代价函数计算。然后,利用TensorFlow简化实现,并探讨了学习率的选择。最后,文章提到了正规方程作为替代方法,但指出其局限性。
摘要由CSDN通过智能技术生成

下面所讲的问题,是第一节ml课老师布置的一个编程题,题目的要求如下:

下面我使用的语言是python,主要提供两种方法:

第一种是基于tensorflow的方法,第二种是自己进行损失的计算和梯度下降算法的书写。本人代码水平有限,欢迎大佬们指错!

一、自己编写最基础的代码,为了让结构更清晰,我多建了几个py文件,这样可以很清楚的看到每一个py文件做了什么。

文件目录如下:当然你可以不跟我一样,随便自己啦

建立一个名字为houseprice的文件夹,下面存在以下的文件,我现在列出他们的名字,根据名字你可以大致猜出每一个文件的作用,有house.txt存储的是房子的数据,第一列是房子的年份,第二列是房子的价格,中间以空格隔开;

file2_matrix.py将txt文件里面的数据变成一个矩阵的形式,这个文件返回的是一个矩阵,这个矩阵的第一列是房子的年份,第二列是房子的价格;

plot_data.py用来绘制我的数据的,x轴为年份,y轴为房价;不仅这个函数会绘制出我们的数据点的散点图,还绘制出我们的拟合直线;

normalization.py进行数据的归一化操作(我之前认为只有一个特征的问题是无需进行归一化操作的,所以我直接将数据进行线性回归,但是发现最后出现的结果为nan,出来的拟合结果是一条接近水平的直线,很显然我们的数据是递增的!我在octave上跑了一遍,发现提示我可以scale data,我就试了一下,还真行了);

compute_cost.py很显然是来计算代价的,根据公式J(\theta)=\frac{1}{2m}\sum_{i=1}^{m}(h_{\theta}(x^{(i)})-y^{(i)})^2,h(x^{(i)})=\theta_0+\theta_1x^{(i)},注意这里的上标i表示的是对第几个样本来讨论;

gradient_descent.py是进行梯度下降来最优化参数theta的函数;

total.py将以上得代码汇总之后,运行得到我们想要的结果;

chooce_lr.py我想看看有没有最佳的学习率,又写了一个根据不同的学习率来比较谁能够让问题更快的收敛。

数据和代码详见:

house.txt:

2000 2.000
2001 2.500
2002 2.900
2003 3.147
2004 4.515
2005 4.903
2006 5.365
2007 5.704
2008 6.853
2009 7.971
2010 8.561
2011 10.000
2012 11.280
2013 12.900

file2matrix.py:

import numpy as np
def file2matrix(filename):
    fr=open(filename)
    arrayolines=fr.readlines()
    numberoflines=len(arrayolines)
    returnmat=np.zeros((numberoflines,2))
    index=0
    for line in arrayolines:
        line=line.strip()
        listfromline=line.split(' ')
        returnmat[index,:]=listfromline[0:2]
        index=index+1
    return returnmat,numberoflines

if __name__=='__main__':
    print(file2matrix("./house.txt"))

plot_data.py:这里绘制数据,我的参数写的*args,这是为了有时候对绘图的要求不一样,传入的参数也不一样,*args可以传递任意数量个参数,比如说当我想要仅仅绘制我的原始数据的图像的时候,那么我直接传入的参数为file2matrix.py的第一个返回值returnmat,但是如果我想既绘制原始的图像也要绘制拟合的直线,我需要传入的参数还有X\Theta。(这里的字体设置你可以全部丢掉

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REaDME.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值