预测波士顿的房价|简单的线性回归入门

浏览: 2034

这是菜鸟学Python的第133篇原创文章

阅读本文大概需要3分钟

菜鸟独白

前面介绍完了knn算法(小白入门最简单的机器学习算法),算是机器学习里的Hello World. 机器学习还有好多好多算法,监督学习算法里面有两大类,一类是分类,一类是回归!回归更有趣,可以做很多事情比如数据的预测,这个很牛逼啊!今天我们通过对美国波士顿的房价数据,来学习一下最最简单的线性回归算法。

怎么玩呢:

  • 了解波士顿房价数据

  • 分析数据的特征值

  • 可视化数据

  • 选择线性回归模型来训练数据

  • 测试模型的准确性

1.什么是线性回归

线性回归一般用来解决连续值变量预测问题,针对的是数值型的样本。用来探索自变量和因变量之间是线性相关关系。今天我们介绍入门级别的简单线性回归算法(也叫一元线性回归),何为简单线性回归呢,说白了就是样本特质只有一个值.

比如我们有一份房屋面积和价格的数据,很明显自变量(面积)和因变量(房价)是强相关的,房屋的面积为x,房价为y,这里会有一个方程:y=ax+b

线性回归就是指利用样本(已知数据),产生拟合方程,回归的求解就是求这个回归方程的回归系数。一旦我们得到了这个方程,预测的方法当然十分简单,回归系数乘以输入值再全部相加就得到了预测值。

image.png

既然是要找出一个最佳的拟合线,就是求解线性回归方程,我们喂给机器一堆数据,只要能解析出a和b就可以了!a术语叫斜率,b叫截距.只要我们拿到了a,b就可以画出直线,也就可以预测数据了,下面我们通过一个实例来讲解!

2.导入波士顿房价的数据

1).房价问题是一个热门的话题

通过机器学习算法可以对房价进行预测的,今天我们来看一组美国波士顿房价的数据集。这个数据集是sklearn里面的默认数据集,非常有趣,我们直接导入即可.

image.png

2).数据的大概情况

一共有506套房屋的数据,每个房屋有13个特征值

image.png

这个13个特征值很有意思,比如下面几个:

  • CRIM:城市的人均犯罪率

  • ZN:住宅用地的比例

  • INDUS:城镇中非住宅用地的所占比例

  • RM:每个房子的房间数

  • DIS:距离5个波士顿的就业中心的距离

  • B:城镇的黑人比例

  • LSTAT:低收入房东的比例

看一下数据集

image.png

image.png

3.分析数据并可视化

也就是说有13个变量决定了房子的价格,我们需要先探索一下这些变量和房屋价格的相关行:

image.png

我们发现相关系数最高的是RM高达0.69.也就是说房间数和房价是强相关性.

用sns可视化房间数和房屋价格的图

sns.set(palette="muted", color_codes=True) 
sns.pairplot(boston_df, vars=['RM', 'Target'])

我们放大看一下房间 vs 房价的关系图

image.png

最上面的50万美金的房价的数据点特别密集,构成了一条直线,估计是数据集采集的时候,大于50W都写50W,下面我会处理一下这块数据.

4.简单线性回归

1).去掉一些脏的数据,比如50W美金的数据

image.png

2).构建线性模型

image.png

3).看一下预测分数

image.png

这个模型的准确率只有74.5%,然后我们得到的13个相关系数,发现相关性最强的是第5个,这个就是RM,也就是房间数.

结论:


好,简单线性回归就讲到这样,机器学习的难度比爬虫和数据分析要大很多,小伙伴学的时候要有耐心,虽然是简单的套用公式,但是对算法本身的理解其实非常重要,至少我觉得线性代数一定要恶补一下。

衡量线性回归有误差有很多方法:比如均方误差,均方根误差和和平均绝对误差.这些背后全部都是公式,而简单线性回归模型后面还有多项式回归,逻辑回归,路漫漫其修远兮,吾将上下而求索,我们继续加油!

推荐 0
本文由 菜鸟学Python 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册