毕设开源 机器学习二手房价格预测及可视化系统(源码+论文)-程序员宅基地

技术标签: 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/noopier/article/details/138028622

智能推荐

软件测试流程包括哪些内容?测试方法有哪些?_测试过程管理中包含哪些过程-程序员宅基地

文章浏览阅读2.9k次,点赞8次,收藏14次。测试主要做什么?这完全都体现在测试流程中,同时测试流程是面试问题中出现频率最高的,这不仅是因为测试流程很重要,而是在面试过程中这短短的半小时到一个小时的时间,通过测试流程就可以判断出应聘者是否合适,故在测试流程中包含了测试工作的核心内容,例如需求分析,测试用例的设计,测试执行,缺陷等重要的过程。..._测试过程管理中包含哪些过程

政府数字化政务的人工智能与机器学习应用:如何提高政府工作效率-程序员宅基地

文章浏览阅读870次,点赞16次,收藏19次。1.背景介绍政府数字化政务是指政府利用数字技术、互联网、大数据、人工智能等新技术手段,对政府政务进行数字化改革,提高政府工作效率,提升政府服务质量的过程。随着人工智能(AI)和机器学习(ML)技术的快速发展,政府数字化政务中的人工智能与机器学习应用也逐渐成为政府改革的重要内容。政府数字化政务的人工智能与机器学习应用涉及多个领域,包括政策决策、政府服务、公共安全、社会治理等。在这些领域,人工...

ssm+mysql+微信小程序考研刷题平台_mysql刷题软件-程序员宅基地

文章浏览阅读219次,点赞2次,收藏4次。系统主要的用户为用户、管理员,他们的具体权限如下:用户:用户登录后可以对管理员上传的学习视频进行学习。用户可以选择题型进行练习。用户选择小程序提供的考研科目进行相关训练。用户可以进行水平测试,并且查看相关成绩用户可以进行错题集的整理管理员:管理员登录后可管理个人基本信息管理员登录后可管理个人基本信息管理员可以上传、发布考研的相关例题及其分析,并对题型进行管理管理员可以进行查看、搜索考研题目及错题情况。_mysql刷题软件

根据java代码描绘uml类图_Myeclipse8.5下JAVA代码导成UML类图-程序员宅基地

文章浏览阅读1.4k次。myelipse里有UML1和UML2两种方式,UML2功能更强大,但是两者生成过程差别不大1.建立Test工程,如下图,uml包存放uml类图package com.zz.domain;public class User {private int id;private String name;public int getId() {return id;}public void setId(int..._根据以下java代码画出类图

Flume自定义拦截器-程序员宅基地

文章浏览阅读174次。需求:一个topic包含很多个表信息,需要自动根据json字符串中的字段来写入到hive不同的表对应的路径中。发送到Kafka中的数据原本最外层原本没有pkDay和project,只有data和name。因为担心data里面会空值,所以根同事商量,让他们在最外层添加了project和pkDay字段。pkDay字段用于表的自动分区,proejct和name合起来用于自动拼接hive表的名称为 ..._flume拦截器自定义开发 kafka

java同时输入不同类型数据,Java Spring中同时访问多种不同数据库-程序员宅基地

文章浏览阅读380次。原标题:Java Spring中同时访问多种不同数据库 多样的工作要求,可以使用不同的工作方法,只要能获得结果,就不会徒劳。开发企业应用时我们常常遇到要同时访问多种不同数据库的问题,有时是必须把数据归档到某种数据仓库中,有时是要把数据变更推送到第三方数据库中。使用Spring框架时,使用单一数据库是非常容易的,但如果要同时访问多个数据库的话事件就变得复杂多了。本文以在Spring框架下开发一个Sp..._根据输入的不同连接不同的数据库

随便推点

EFT试验复位案例分析_eft电路图-程序员宅基地

文章浏览阅读3.6k次,点赞9次,收藏25次。本案例描述了晶振屏蔽以及开关电源变压器屏蔽对系统稳定工作的影响, 硬件设计时应考虑。_eft电路图

MR21更改价格_mr21 对于物料 zba89121 存在一个当前或未来标准价格-程序员宅基地

文章浏览阅读1.1k次。对于物料价格的更改,可以采取不同的手段:首先,我们来介绍MR21的方式。 需要说明的是,如果要对某一产品进行价格修改,必须满足的前提条件是: ■ 1、必须对价格生效的物料期间与对应会计期间进行开启; ■ 2、该产品在该物料期间未发生物料移动。执行MR21,例如更改物料1180051689的价格为20000元,系统提示“对于物料1180051689 存在一个当前或未来标准价格”,这是因为已经对该..._mr21 对于物料 zba89121 存在一个当前或未来标准价格

联想启天m420刷bios_联想启天M420台式机怎么装win7系统(完美解决usb)-程序员宅基地

文章浏览阅读7.4k次,点赞3次,收藏13次。[文章导读]联想启天M420是一款商用台式电脑,预装的是win10系统,用户还是喜欢win7系统,该台式机采用的intel 8代i5 8500CPU,在安装安装win7时有很多问题,在安装win7时要在BIOS中“关闭安全启动”和“开启兼容模式”,并且安装过程中usb不能使用,要采用联想win7新机型安装,且默认采用的uefi+gpt模式,要改成legacy+mbr引导,那么联想启天M420台式电..._启天m420刷bios

冗余数据一致性,到底如何保证?-程序员宅基地

文章浏览阅读2.7k次,点赞2次,收藏9次。一,为什么要冗余数据互联网数据量很大的业务场景,往往数据库需要进行水平切分来降低单库数据量。水平切分会有一个patition key,通过patition key的查询能..._保证冗余性

java 打包插件-程序员宅基地

文章浏览阅读88次。是时候闭环Java应用了 原创 2016-08-16 张开涛 你曾经因为部署/上线而痛苦吗?你曾经因为要去运维那改配置而烦恼吗?在我接触过的一些部署/上线方式中,曾碰到过以下一些问题:1、程序代码和依赖都是人工上传到服务器,不是通过工具进行部署和发布;2、目录结构没有规范,jar启动时通过-classpath任意指定;3、fat jar,把程序代码、配置文件和依赖jar都打包到一个jar中,改配置..._那么需要把上面的defaultjavatyperesolver类打包到插件中

VS2015,Microsoft Visual Studio 2005,SourceInsight4.0使用经验,Visual AssistX番茄助手的安装与基本使用9_番茄助手颜色-程序员宅基地

文章浏览阅读909次。1.得下载一个番茄插件,按alt+g才可以有函数跳转功能。2.不安装番茄插件,按F12也可以有跳转功能。3.进公司的VS工程是D:\sync\build\win路径,.sln才是打开工程的方式,一个是VS2005打开的,一个是VS2013打开的。4.公司库里的线程接口,在CmThreadManager.h 里,这个里面是我们的线程库,可以直接拿来用。CreateUserTaskThre..._番茄助手颜色

推荐文章

热门文章

相关标签