大数据毕设分享(含算法) 机器学习二手房价格预测及可视化系统(源码+论文)_数据挖掘二手房价预测-程序员宅基地

技术标签: 算法  python  

# 0 简介

今天学长向大家介绍适合作为毕设的项目:

毕业设计 机器学习二手房价格预测及可视化系统(源码+论文)

项目获取:

https://gitee.com/assistant-a/project-sharing

一、项目目的及意义

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

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

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

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

二、技术路线

这是预计的技术路线图:

在这里插入图片描述

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

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,通过百度地图将文字描述的位置转化为对应的经纬度。

相关性分析

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

在这里插入图片描述

异常值寻找

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

在这里插入图片描述

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

数据处理结果

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

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 可视化分析

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

在这里插入图片描述

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

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

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

在这里插入图片描述

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

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

在这里插入图片描述

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

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

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

在这里插入图片描述

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

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

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

在这里插入图片描述

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

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

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

在这里插入图片描述

在这里插入图片描述

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

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

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

在这里插入图片描述

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

3.3 价格预测及聚类分析

回归决策树

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

输出:总价

层数 12

平均绝对误差 MAE = 35.54

均方根误差 RMSE = 57.83

决定系数 r2_score=0.72

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

在这里插入图片描述

最优算法选择

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

在这里插入图片描述

最优算法为 xgboost

聚类分析

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

在这里插入图片描述

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

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

在这里插入图片描述

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

在这里插入图片描述

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

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

3.4 可视化页面

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

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

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

顶部信息栏:

在这里插入图片描述

中央区域:

在这里插入图片描述

底部大屏展示区:

在这里插入图片描述

3.5 卖方价格预测页面

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

在这里插入图片描述

3.6 买方房屋推荐页面

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

在这里插入图片描述

项目分享

项目获取:

https://gitee.com/assistant-a/project-sharing

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/PEEleeer/article/details/136176038

智能推荐

彻底扒光 通过智能路由器拆解看其本质-程序员宅基地

文章浏览阅读1.7k次。可以看到很多联发科的MT芯片摘自:https://net.zol.com.cn/531/5312999.html彻底扒光 通过智能路由器拆解看其本质2015-07-23 00:40:00[中关村在线 原创] 作者:陈赫|责编:白宁收藏文章 分享到 评论(24)关注智能路由器拆解的朋友们注意啦!我们已经将这五款产品彻底扒开,将主板的真容展现在了大家的眼前。网友们可以看见这些智能路由器主板的做工和用料,我们还为网友们展示了主要的电子元器件,供大家品评观赏。..._路由器拆解

Java--深入JDK和hotspot底层源码剖析Thread的run()、start()方法执行过程_jdk的源码hotspot跟jdk是分开的-程序员宅基地

文章浏览阅读2.1k次,点赞101次,收藏78次。【学习背景】今天主要是来了解Java线程Thread中的run()、start()两个方法的执行有哪些区别,会给出一个简单的测试代码样例,快速理解两者的区别,再从源码层面去追溯start()底层是如何最终调用Thread#run()方法的,个人觉得这样的学习不论对面试,还是实际编程来说都是比较有帮助的。进入正文~学习目录一、代码测试二、源码分析2.1 run()方法2.2 start()方法三、使用总结一、代码测试执行Thread的run()、start()方法的测试代码如下:public_jdk的源码hotspot跟jdk是分开的

透视俄乌网络战之一:数据擦除软件_俄乌网络战观察(一)-程序员宅基地

文章浏览阅读4.4k次,点赞90次,收藏85次。俄乌冲突中,各方势力通过数据擦除恶意软件破坏关键信息基础设施计算机的数据,达到深度致瘫的效果,同时窃取重要敏感信息。_俄乌网络战观察(一)

Maven私服仓库配置-Nexus详解_nexus maven-程序员宅基地

文章浏览阅读1.7w次,点赞23次,收藏139次。Maven 私服是一种特殊的Maven远程仓库,它是架设在局域网内的仓库服务,用来代理位于外部的远程仓库(中央仓库、其他远程公共仓库)。当然也并不是说私服只能建立在局域网,也有很多公司会直接把私服部署到公网,具体还是得看公司业务的性质是否是保密的等等,因为局域网的话只能在公司用,部署到公网的话员工在家里也可以办公使用。_nexus maven

基于AI的计算机视觉识别在Java项目中的使用 (四) —— 准备训练数据_java ocr ai识别训练-程序员宅基地

文章浏览阅读934次。我先用所有的样本数据对模型做几轮初步训练,让深度神经模型基本拟合(数万条记录的训练集,识别率到99%左右),具备初步的识别能力,这时的模型就是“直男”。相较于训练很多轮、拟合程度很高的“油腻男”,它的拟合程度较低,还是“直男愣头青”。..............._java ocr ai识别训练

hibernate 数据库类型 date没有时分秒解决_hibernate解析時間只有年月日沒有時分秒-程序员宅基地

文章浏览阅读688次。一、问题现象:  在数据库表中日期字段中存的日期光有年月日,没有时分秒。二、产生原因:三 解决办法   检查表的相应映射xml文件。 <property name="operateDate" type="Date">如果同上面所写,那问题出在 type类型上了正确写法 :<property name="operateDate" type="java.util..._hibernate解析時間只有年月日沒有時分秒

随便推点

springbbot运行无法编译成功,找不到jar包报错:Error:(3, 46) java: 程序包org.springframework.context.annotation不存在-程序员宅基地

文章浏览阅读1k次,点赞2次,收藏2次。文章目录问题描述:解决方案:问题描述:提示:idea springbbot运行无法编译成功,找不到jar包报错E:\ideaProject\demokkkk\src\main\java\com\example\demo\config\WebSocketConfig.javaError:(3, 46) java: 程序包org.springframework.context.annotation不存在Error:(4, 46) java: 程序包org.springframework.conte_error:(3, 46) java: 程序包org.springframework.context.annotation不存在

react常见面试题_recate面试-程序员宅基地

文章浏览阅读6.4k次,点赞6次,收藏36次。1、redux中间件中间件提供第三方插件的模式,自定义拦截 action -&gt; reducer 的过程。变为 action -&gt; middlewares -&gt; reducer 。这种机制可以让我们改变数据流,实现如异步 action ,action 过滤,日志输出,异常报告等功能。常见的中间件:redux-logger:提供日志输出redux-thunk:处理异步操作..._recate面试

交叉编译jpeglib遇到的问题-程序员宅基地

文章浏览阅读405次。由于要在开发板中加载libjpeg,不能使用gcc编译的库文件给以使用,需要自己配置使用另外的编译器编译该库文件。/usr/bin/ld:.libs/jaricom.o:RelocationsingenericELF(EM:40)/usr/bin/ld:.libs/jaricom.o:RelocationsingenericELF(EM:40)...._jpeg_utils.lo: relocations in generic elf (em: 8) error adding symbols: file

【办公类-22-06】周计划系列(1)“信息窗” (2024年调整版本)-程序员宅基地

文章浏览阅读578次,点赞10次,收藏17次。【办公类-22-06】周计划系列(1)“信息窗” (2024年调整版本)

SEO优化_百度seo resetful-程序员宅基地

文章浏览阅读309次。SEO全称为Search Engine Optimization,中文解释为搜索引擎优化。一般指通过对网站内部调整优化及站外优化,使网站满足搜索引擎收录排名需求,在搜索引擎中提高关键词排名,从而把精准..._百度seo resetful

回归预测 | Matlab实现HPO-ELM猎食者算法优化极限学习机的数据回归预测_猎食者优化算法-程序员宅基地

文章浏览阅读438次。回归预测 | Matlab实现HPO-ELM猎食者算法优化极限学习机的数据回归预测_猎食者优化算法