基于python机器学习 Django的二手房交易预测及展示系统 完整代码+报告文档

简介: 基于python机器学习 Django的二手房交易预测及展示系统 完整代码+报告文档

一、项目目的及意义


项目的目的是在采集自贝壳二手房交易平台的成都市二手房成交数据的基础上,对数据进行处理和挖掘,以网站为载体实现二手房交易分析、卖方价格预测和买方房屋推荐三个主要功能。


二手房交易分析功能服务于统计人员,对成都的二手房交易做完整的统计分析,使用折线图、散点图、饼图等展示属性间的关系,提供交互功能,可以对成都市行政区划地图进行点选,展示不同区的具体信息并选择不同的区进行对比。


卖方价格预测功能服务于卖方,通过用户提供的二手房的各种属性预测其成交价,为二手房交易中的卖方提供一个参考值,使卖方对于自己房子的价格有一个较为准确的估计,并在地图上标记房子。


买方房屋推荐功能服务于买方,通过买方选取的各个属性可接受的范围,为买方列出可以选择的二手房范围,在地图上进行标记,使买方在购房前有一个心理预期。


二、技术路线

这是预计的技术路线图:

8c77a458ae3ec7644edb56895fd73111.png



以下为实际技术路线以及部分关键节点:


10-15


确定选择的原始数据集为成都二手房交易信息列表,对原始数据集的字段进行了分析和初步筛选


10-17


制定了初步的技术路线图


10-18


明确了要实现的目标为:买方、卖方预测系统;可视化页面


10-19


确定了使用网页的形式来完成我们的系统并进行展示


10-25


对数据进行了初步预处理,使用正则表达式、数值化等方式得到了经过第一次预处理的数据集


10-26


使用回归决策树的方式,基于十个特征对房价进行了预测,得到了合理的平均误差和方差。


10-27


开始使用经过第一次预处理的数据集进行可视化工作


11-02


进一步确定了可视化的具体展示形式


11-03


使用爬虫获取了时间数据


11-06


使用爬虫和百度地图API获取了地址和经纬度数据


11-11


发现爬取的地址存在一定格式上的问题,重新进行了处理,并找到和删除了部分异常数据,并进行了相关性分析,得到相关性的热力图。得到第三次预处理后的数据集


11-18


实现可视化页面点击中央大地图展示周围子图的功能。实现卖方、买方预测页面的底层功能。


11-19


实现网页后端


11-21


完成网页前端


11-22


对聚类进行了分析实践,对不同分类预测算法进行了评估,选择了效果最好的预测算法。


总结:


通过整个项目的实践,我们亲身体会了数据挖掘的那张路线图,预处理、分析之后发现问题(Knowledge),再进行新的处理,再重新分析挖掘,做评估,然后发现新的问题,再从头开始,在这几个过程的循环往复中完成了整个项目。


三、研发情况

3.1 数据预处理


数据集描述


我们采用的数据集为采集自贝壳二手房交易平台的成都的二手房成交信息列表。数据集中一共有 20001 条数据,原始数据集每条数据有 14 个字段。


该原始数据集的 14 个字段中存在 2 个字段与内容无关/无效,存在 2 个字段需要深入获取信息,另外部分字段的内容需要拆解。


第一阶段我们选取的有效字段为['区','所处楼层级别','总楼层数','建造年份','面积','朝向','关注数','是否有 VR 房源','是否近地铁','单位价格','总价']


数据提取和数值化


原数据集数据存在多个不同数据挤在一个字段中的问题,我们使用正则表达式对需要的字段进行提取,然后对必要的文本型数据进行数值化。


爬虫


为了获取更多的数据,我们从原数据集的房屋链接字段爬取房屋的挂牌年月日;从小区链接字段爬取房屋所处小区的具体位置(文字描述)。然后申请百度地图的 ak,通过百度地图将文字描述的位置转化为对应的经纬度。


相关性分析


通过相关性分析的方式,找出字段之前的关联性。

bb906ea102fd91bbc11b562e5d136cfb.png异常值寻找

利用相关性分析,选取相关性高的两个特征(面积和总价),作出两个特征间的散点图


1921f44e94b88cb617d23054efd07c2a.png


可以看到在最右侧出现面积非常大而价格特别低的点,可以认为这是异常点删去;在最上方也出现面积较小但价格异常高的点,可以认为是异常点删去。

数据处理结果

最终我们处理得到了两份数据,一份用于可视化,一份用于算法。具体数据说明如下:


processedDataForVisual的数据字段为:'编号','位置','区','房型','所处楼层级别','总楼层数','建造年份','面积','朝向','关注数','是否有VR房源','是否近地铁','单位价格','挂牌年','挂牌月','挂牌日','总价','纬度','经度'processedDataForCalculate的数据字段为:'区','所处楼层级别','总楼层数','建造年份','面积','朝向','是否近地铁','挂牌年','挂牌月','挂牌日','纬度','经度','总价'


数值化数据字段说明

区:

{'双流':0,'天府新区':1,'成华':2,'武侯':3,'温江':4,'郫都':5,'金牛':6,'锦江':7,'青羊':8,'高新':9,'高新西':10}


房型:

1|1 指一室一厅,以此类推

所处楼层级别:

{'地下室':0,'低楼层':1,'中楼层':2,'高楼层':3}


朝向:

{'北':1,'东北':2,'东':3,'东南':4,'南':5,'西南':6,'西':7,'西北':8}


是否有 VR 房源/是否有地铁:

1 表示是,0 表示否

3.2 可视化分析


我们根据相关性以及感兴趣的部分做出大量图表,现对部分图表进行分析。


928a38489aad43d96a9a70ae69273b2c.png



中心城区(成华区、青羊区、锦江区、武侯区)单位房价更高。在正常的认知下,中心城区的房屋单位价格都要高于相对比较偏远的地区,在较大城市更加明显。我们以行政区为类别,计算量每个行政区房屋单位价格的中位数并标以颜色深浅。从图中可以看到,较靠近中心的几个行政区颜色都较外围行政区要高,在上右图(2020 年数据)体现的尤为明显。


单位房价在随时间升高。从 2018 年到 2020 年,肉眼可见的,每个行政区的颜色在加深,即单位价格在升高。每个行政区,即每个局部的单位价格在升高,可以合理地推断出由局部组成的总体的单位价格在升高。


中心城区(成华区、青羊区、锦江区、武侯区)二手房的关注数更高,更多人关注这些地区的房屋。我们对每个区计算在该行政区内二手房的关注总数:



c006c8a97c98e11c3dd93f266f823459.png

005dfec3e6ca0aecfd13ca18cae35559.png

f087219c2d505b904916420c6f42d38e.png


上方三张图为锦江、武侯、青羊三个中心行政区的总关注人数。

下方三个图为双流、郫都、温江三个较边缘行政区的总关注人数。



2e8e1bf2b06750e7b366388785de6e66.pnga9257e165851e11d103578e15cd69257.png


fa321eaf1af448477ae0c0d6145b51e2.png

可以看到,中心行政区的总关注数要远远大于较边缘的区域。


我们认为这是由于中心区域在交通、地理位置、教育资源、娱乐等各方面都相对比较发达和完善所导致的。人们在选择房子时往往会考虑到周边环境。


中心城区的二手房的挂牌量在进入 2020 年后飙升,而边缘城区的挂牌量则在进入 2020 年后显著下降。



b062ce084e628ec015980fdc6e8123b6.png


2f0491d31e473fd89f54f1f72a11d25b.png

其中锦江和青羊均为地理位置上的中心区,郫都和双流为地理位置上的边缘区。

这一现象我们暂时无法解释,可能与政府政策有很大的关系,也可能是数据集本身的原因。但是我们依然认为这一现象有讨论的价值。

中心城区的房屋建造年份普遍较早。


ad52f7d59e8df14d011662d06256e077.png


左图为武侯区。我们可以看到,武侯区在 2005 年以前建造的房屋比例(红色和黄色)要远远大于双流区,而双流区在 2015 年以后建造的房屋的比例(深蓝色)要远远大于武侯区。


这与成都市的历史有比较大的关系,锦江区、青羊区、武侯区大致在 1953 年就已经存在(当时为东、西城区),而双流等周边行政区是在 1976、2016、2017 才划分出来的。


房型越大,单位价格越高:

a21e9f662c4ea76b61cd8fcf1b5e90c6.png



ce263691dfa383a4adcc411f0d3fba9f.png


总体而言,随着房型的增大,厅室的增多,单位价格在逐步上升。在部分区的趋势很明显,而在少数几个区(例如双流)趋势比较不明显。

其原因大致可以这样推导:

首先,房型增大,面积在变大,这是符合实际情况和逻辑的:


38d995ad3edee393fbab9a684951ed7f.png

其次,面积与单位价格的相关性为 0.73,正相关,且相关性比较高,可以认为随着面积的增大,单位价格在增大。根据传递性,房型增大-> 面积增大,面积增大-> 单位价格升高,则房型增大-> 单位价格升高。

3.3 价格预测及聚类分析

回归决策树


输入:'区','所处楼层级别','总楼层数','建造年份','面积','朝向','是否近地铁','挂牌年','挂牌月','挂牌日','纬度','经度’


输出:总价


层数 12


平均绝对误差 MAE = 35.54


均方根误差 RMSE = 57.83


决定系数 r2_score=0.72


决策树局部展示:(字段为英文)


7efc9189ba1fca3a53bdb2f39a2646fa.png


最优算法选择


回归决策树的结果不尽如人意,为了进行更准确的预测,我们使用线性回归,KNN,支持向量回归,岭回归 Lasso 回归,神经网络,决策回归树,极端随机树,xgboost,随机森林, Adaboost,gradientboost,袋装等算法进行回归预测,使用平均绝对误差、均方误差、决定系数作为评价标准,以期选出最优算法。对算法按照评价标准从优到劣排序如下:

b8bb48d575b2b2ef77a23c67f9ba9c12.png


最优算法为 xgboost

聚类分析

首先找出合适的 k 值。使用轮廓系数和肘方法,作图如下:

e6451195f49686595fc0b1cdb26aff71.png


设置 k=6,进行聚类。对聚类结果进行三维展示。

设置 x 轴为面积, y 轴为单价,z 轴为‘区’,‘所处楼层级别’,‘总楼层数’,‘建造年份’,‘面积’,‘朝向‘等属性中的一个。


fd1380c48dcf33f178b23da10e41cd7d.png

经过对比发现聚类结果仅与面积和单价相关,与其它属性(z 轴)均无关。因此使用二维图展示聚类结果。


881cdc21976e4a6668d78dfa059d4246.png


对数据进行观察后,可以对聚类结果做如下分析:

小面积高价格的房屋多为市区旧建小宅,大面积高价格多为市区新建大宅,极大面积为豪宅,大面积低价格的房屋多为郊区偏远大宅,小面积低价格多为地段不好的小宅,极低价格为老旧小区住宅。

3.4 可视化页面


可视化页面的设计思路是:以中心的成都市的部分行政区划的地图为核心,以行政区划为类别,展示不同行政区划的各个图表。


利用 echarts 的点击事件,使得用户可以通过点击某个行政区划,来讲该行政区划的图表展示在周围的子表当中。


同时,如果用户对某个子表产生兴趣,并想要做区之间的对比的话,可以点击子表中的任何一点,将想看的子表展示在下方的“大屏”上。


顶部信息栏:



00d247b62c4539c62579a7a000718809.png


中央区域:

999b559dfe125c49922ae6de529ab3dc.png


底部大屏展示区:


image.png



3.5 卖方价格预测页面


卖方在左侧表单内输入房子的各种属性(填空值可以缺省),点击提交,右侧显示预测价格,并在地图上将该房子标出来。


892d969473b6c28d365ee1d2cc163ee7.png

3.6 买方房屋推荐页面

买房在上方表单内输入自己有意向购买的房屋的属性范围(填空值可以缺省),点击提交,下方左边表格内显示系统推荐房屋的信息,右侧地图上标记出这些房子的位置。


579e6119471ae436dc90ad131dd1b185.png


完整项目代码:https://download.csdn.net/download/qq_38735017/87416445


相关文章
|
1月前
|
设计模式 前端开发 数据库
Python Web开发:Django框架下的全栈开发实战
【10月更文挑战第27天】本文介绍了Django框架在Python Web开发中的应用,涵盖了Django与Flask等框架的比较、项目结构、模型、视图、模板和URL配置等内容,并展示了实际代码示例,帮助读者快速掌握Django全栈开发的核心技术。
186 45
|
24天前
|
机器学习/深度学习 存储 运维
分布式机器学习系统:设计原理、优化策略与实践经验
本文详细探讨了分布式机器学习系统的发展现状与挑战,重点分析了数据并行、模型并行等核心训练范式,以及参数服务器、优化器等关键组件的设计与实现。文章还深入讨论了混合精度训练、梯度累积、ZeRO优化器等高级特性,旨在提供一套全面的技术解决方案,以应对超大规模模型训练中的计算、存储及通信挑战。
57 4
|
28天前
|
机器学习/深度学习 算法 数据挖掘
C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出
本文探讨了C语言在机器学习中的应用及其重要性。C语言以其高效性、灵活性和可移植性,适合开发高性能的机器学习算法,尤其在底层算法实现、嵌入式系统和高性能计算中表现突出。文章还介绍了C语言在知名机器学习库中的作用,以及与Python等语言结合使用的案例,展望了其未来发展的挑战与机遇。
44 1
|
1月前
|
机器学习/深度学习 自然语言处理 Linux
Linux 中的机器学习:Whisper——自动语音识别系统
本文介绍了先进的自动语音识别系统 Whisper 在 Linux 环境中的应用。Whisper 基于深度学习和神经网络技术,支持多语言识别,具有高准确性和实时处理能力。文章详细讲解了在 Linux 中安装、配置和使用 Whisper 的步骤,以及其在语音助手、语音识别软件等领域的应用场景。
65 5
|
1月前
|
安全 数据库 开发者
Python Web开发:Django框架下的全栈开发实战
【10月更文挑战第26天】本文详细介绍了如何在Django框架下进行全栈开发,包括环境安装与配置、创建项目和应用、定义模型类、运行数据库迁移、创建视图和URL映射、编写模板以及启动开发服务器等步骤,并通过示例代码展示了具体实现过程。
67 2
|
1月前
|
安全 数据库 C++
Python Web框架比较:Django vs Flask vs Pyramid
Python Web框架比较:Django vs Flask vs Pyramid
44 1
|
2月前
|
安全 数据库 C++
Python Web框架比较:Django vs Flask vs Pyramid
Python Web框架比较:Django vs Flask vs Pyramid
46 4
|
2月前
|
机器学习/深度学习 API 计算机视觉
基于Python_opencv人脸录入、识别系统(应用dlib机器学习库)(下)
基于Python_opencv人脸录入、识别系统(应用dlib机器学习库)(下)
46 2
|
2月前
|
机器学习/深度学习 存储 算法
基于Python_opencv人脸录入、识别系统(应用dlib机器学习库)(上)
基于Python_opencv人脸录入、识别系统(应用dlib机器学习库)(上)
60 1
|
2月前
|
安全 数据库 C++
Python Web框架比较:Django vs Flask vs Pyramid
【10月更文挑战第10天】本文比较了Python中三个最受欢迎的Web框架:Django、Flask和Pyramid。Django以功能全面、文档完善著称,适合快速开发;Flask轻量灵活,易于上手;Pyramid介于两者之间,兼顾灵活性和安全性。选择框架时需考虑项目需求和个人偏好。
40 1