## 房价影响因素分析
**摘要**:
本文主要分析影响房价的因素,数据来源为链家网,机器学习模型的使用中,采用了三种线性模型,一种非线性模型,最后得出的结论是房子的大小,房子的位置,房子的建造年份以及房子的高度对房价影响较大。
### 问题描述
现在房价居高不下,特别是上海等一线城市,房价更是高的离谱,那么在决定一个房子的价格中,哪些因素占了主要的地位,如何让想买房的人快速获取大概的房价信息。那么本文介绍的就是如何用机器学习去训练上海房价信息并生成模型然后进行分析的过程。
### 数据收集及处理
**数据源选择**
经过在网上对几个房价信息网的比较,
![](https://www.writebug.com/myres/static/uploads/2021/12/25/e031fda679fe7e7731abead47798b44d.writebug)
安居客房价信息
![](https://www.writebug.com/myres/static/uploads/2021/12/25/a6ce1f0353ebac0e1f3e9c7fdb48f14c.writebug)
搜房网房价信息
![](https://www.writebug.com/myres/static/uploads/2021/12/25/947e2fece5f0c52343582cfee8dc105f.writebug)
链家网房价信息
可以看到,各个房价网站展示的房价信息差别不大,另外根据百度上查到链家网的房价与实际的房价差距较小,所以就把链家网的房价数据作为数据源。
目前上海的新房较少,链家网上上海的新房信息只有约 400 套,数据集过小,不适合进行训练,所以选择了二手房信息作为数据集进行训练。在链家网上,上海二手房数据有几万套,可以进行机器学习的训练。
**数据收集**
使用爬虫从链家网上爬取房价信息的数据,爬虫使用 python 编写,并存入 MongoDB 数据库,以备之后的训练。爬虫代码见附录
**数据处理**
由之前截图可见,房价信息数据还不能直接用于机器学习的训练,所以对其中的一些数据进行处理使得更适合训练。
首先是房型![](https://www.writebug.com/myres/static/uploads/2021/12/25/a2cf9bb48c119c32fac862ec57fb771b.writebug)可以看到这里可以比较轻松的把房型拆分为几个房间,几个客厅。![](https://www.writebug.com/myres/static/uploads/2021/12/25/d501f5ea1d0b02b189c7c2640d970a0f.writebug)对于楼层高度,总共有 6 层高,房子位于中层,那么就用 6*0.5 表示房子的高度。同样,对于低层和高层的房子,分别用楼高乘以 0.2 和 0.8 表示房子的高度。
![](https://www.writebug.com/myres/static/uploads/2021/12/25/a23ace7a15a396a65d3ded17246315a6.writebug)
对于地址,调用了高德地图的地址查询 API 把它转换成了经纬度信息。
其他的数据信息都比较标准,不需要进行额外的处理。
### 采用的模型及原因
所有的模型训练都是把已有的数据集按照 80% 作为训练集,20% 作为测试集来进行模型的训练的。
**线性回归模型**
线性回归模型是比较基本的房价训练模型,在预测波士顿房价的这个机器学习案例中使用的就是线性回归模型。并且,给每个房价的特征赋予一个系数来生成具体的房价是一个直观上感觉很正确的方法。
**神经网络**
目前比较流行的机器学习方法,对于数据的训练通常会有比较好的结果,因为通过反向传播算法不断迭代使得预测结果逼近实际值,可以作为与线性回归模型的对比来看看是否会有更好的表现。
**支持向量机**
也是比较流行的机器学习算法,对于线性模型的训练效果一般会优于线性回归模型,使用这个模型也是想看能不能对线性回归模型进行一些提高。
### 使用的 python 机器学习库
因为目前 python 对机器学习的支持比较好,有大量机器学习的库可以调用,而且我的爬虫也是使用机器学习编写的,所以决定使用 python 的 sklearn 库中的机器学习算法来进行训练及预测。
Sklearn 作为目前机器学习中一个常用的 python 第三方模块,封装了许多机器学习的算法,它的官网是,在 GitHub 上可以看到相应的介绍和源代码。这个库是在 2007 年 Google 的一个暑期项目中由 David Cournapeau 开发并由 800 多位 contributor 合力开发出的机器学习库。
### 建模过程
**数据特征分析**
总共爬取了 39622 条房源信息,爬取的特征如下:
![](https://www.writebug.com/myres/static/uploads/2021/12/25/fb2cbfc46c0e3b621732c614967a0ec9.writebug)
其大部分的特征都是 number 类型,根据平时对于房价的影响因素的了解,目前认为比较重要的特征有房子大小,房子位置,房子的建造年份这几个特征。
在训练时按序输入的特征如下:房子中的房间数,房子中的客厅数,房子的大小,房子的建造年份,房子的高度,房子所在那栋楼的高度,房子的经度,房子的纬度。一共八个特征。
**调参**
在训练的过程中,根据训练出的结果中特征的重要程度不同进行调参,把不重要的特征删除并再次训练,直到剩下的特征都对结果影响很大。
**结果分析及模型对比**
对于训练出的结果,线性回归模型,神经网络,svm 的误差基本都在每平方米 18000 元左右,这个误差是比较大的。所以,这个房价的模型可能是非线性的,才会产生如此大的误差。
![](https://www.writebug.com/myres/static/uploads/2021/12/25/26577999adb8be2127f01d2c942d24f6.writebug)
由上图可知,线性回归的表现较好,神经网络次之,svm 最差。另外,从线性回归的模型参数来看,每多一个房间,每多一个客厅,房子建的越晚,都会导致房价变低,这显然是不符合常识的。所以这个房价模型应该是一个非线性模型。
### 非线性模型建模
**非线性决策树**
使用了 sklearn 库中自带的 DecisionTreeRegressor 模型,经计算误差在 8500 元每平左右。评分达到了 0.84(满分 1 分)
![](https://www.writebug.com/myres/static/uploads/2021/12/25/9b981b9ec36c7b7eb377998566f39a00.writebug)
**结论**
可以看出,在改用非线性模型之后,结果有了很大的改善。另外根据输出的模型参数权重,可以得知,房子的大小,建造年份,房子的高低以及房子所处的位置对房价有较大的影响,而房子的房型以及房子所在整栋楼的高度对房价的影响很小。另外,房子的经纬度对房价的影响非常大,说明在上海,市区和郊区的房价跨度很明显。
### 房价查询界面
先在链家网上随意找一条房源信息
![](https://www.writebug.com/myres/static/uploads/2021/12/25/270134b8da5f45bf2a99c33f8f62fa4b.writebug)
输入查询界面
![](https://www.writebug.com/myres/static/uploads/2021/12/25/9ec2d001d23c6d91e0c33704fa10989e.writebug)
点击查询进行房价咨询
![](https://www.writebug.com/myres/static/uploads/2021/12/25/b7dee50c23e06af654e5b912901becf1.writebug)
会输出房子的每平米价格及总价,可以看到,链家网上挂出的价格是每平米 64960 元,模型的预测结果为每平米 61417 元,总价相差 40 万,基本达到了帮助用户了解房价的需求。
### 改进措施
**收集更多数据**
![](https://www.writebug.com/myres/static/uploads/2021/12/25/fdc5fe76e7c1a6f9d4e52715872b9505.writebug)
数据集在 20000 条以下时的训练学习曲线
![](https://www.writebug.com/myres/static/uploads/2021/12/25/4f93e4baf62541a68326ae547f44b8d8.writebug)
数据集在 40000 条以下时的训练学习曲线
从上面的两张图可以看出,随着数据集变大,验证集的准确率不断上升,所以需要收集更多的训练数据来精化模型。目前的房价数据还不是非常的多,容易受到部分异常房价信息的影响
**寻找更多特征**
影响房价的因�
程序员奇奇
- 粉丝: 3w+
- 资源: 302
最新资源
- 基于fpga的交通灯设计,要求:A通道绿灯亮30S,黄灯亮5S,左拐灯亮15S,黄灯亮5S,这个过程中B通道一直亮红灯,之后A通道亮红灯,B通道绿灯亮40S,之后黄灯亮5S,之后左拐灯亮15S,之后黄
- 基于阶梯碳交易成本的含电转气-碳捕集(P2G-CCS)耦合的综合能源系统低碳经济优化调度,采用(Matlab+Yalmip+Cplex) 考虑P2G设备、碳捕集电厂、风电机组、光伏机组、CHP机组、燃
- 计及阶梯碳交易成本+多元储能(电储能、氢储能、气储能、热储能)+综合能源系统IES联合低碳优化调度(用Matlab+Yalmip+Cplex) 考虑机组和设备:热电联产机组、燃气机组、甲烷反应生成设备
- (OC)多代理实现 运行看效果
- visual basic 6 安装光盘文件
- 双碳+24小时分时综合能源系统低碳优化调度(用Matlab+Yalmip+Cplex) 包含新能源消纳、热电联产、电锅炉、储能电池、天然气、碳捕集CCS、计及碳交易市场等综合元素,实现系统总运行成本最
- 基恩士KV5500程序 基恩士KV5500,威伦通触摸屏,搭载KL-N20V.远程IO模块,KV-MC02V凸轮定位模块,KV-L2*V串行通信模块 全自动锂电池注液机 伺服轴进行位置控制,等
- 电力系统(30节点)机组组合优化调度 基于Matlab、yalmip、cpelx求解最优 针对机组组合问题,提出一种混合整数线性模型,相比传统方法,采用二进制变量和约束,节省计算时间优化收敛速度 为
- 基于门控循环单元GRU做多个特征变量输入,单个因变量输出的拟合预测建模 程序内注释详细,可学习性强 程序直接替数据就可以使用,不会替数据的可以免费指导替数据 程序语言是matlab的,需求版本是
- 图像处理领域的频域处理和复原:运动模糊和失焦模糊修复研究
- dmidecode-3.6
- 多目标遗传算法电力系统系统分布式电源选址定容(matlab程序) 基于IEEE14节点的电力系统多目标优化的遗传算法分布式电源选址定容 对于网损、容量和、电压稳定值的目标优化出来的选址定容 分为有DG
- Simulink 车用永磁同步电机弱磁控制 基于矢量控制 FOC
- GAPSO-LSTM,遗传粒子群优化算法来优化LSTM网络做预测,预测精度高于普通的PSO-LSTM 这里把遗传算法跟粒子群优化算法结合,指的不是用遗传算法来优化PSO的参数,而是解决PSO的容易收
- matlab实现PID控制四旋翼无人机综述模型-PID-四旋翼无人机-matlab
- 2024后台组保姆级学习路线.pdf
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈