2024年5月2日发(作者:)
基于大数据的二手房交易数据可视化研
究
摘要:本文设计并实现了一个城市二手房交易数据的可视化系统,从历史和
实时两个维度充分挖掘和展示二手房交易数据中的价值信息。本文采用了 GBDT
模型来预测在售房源中短期内会被售出的热门部分,并用余弦相似度构建在售房
源间的相似关联关系。此外,本文设计了一个高效、友好的可视化界面,使用了
筛选框、二维地图热力图、关系图、螺旋柱状图、折线图和文本图等多种视图模
式,帮助用户探索和获取更多价值信息。
关键词:二手房交易数据;可视分析;多视图协同
城市的住房问题,作为日常生活的根本,其市场发展成为人们最为关注的问
题。各项统计数据表明,城市中二手房的交易数量和规模正在超越一手房,逐渐
占据房地产交易市场的主导地位。但是,目前市场上不仅缺少对行业相关数据查
看平台,更是少有相关工具能够使人们实时了解城市二手房市场的发展与现状。
一方面是市场相关需求的旺盛,城市二手房市场经济的繁荣;另一面是信息获取
不对称,相关分析工具的缺失。为了解决上述问题,本文的目标是设计并实现城
市二手房交易数据的可视化系统,为用户实收集城市二手房市场交易数据信息并
进行可视化的分析与展示。
一、系统需求分析
目前,二手房市场发展繁荣并逐渐占据房地产市场交易的主导地位,二手房
成为越来越多城市居民解决购房需求的首选。链家网的房产数据库中存储了大量
的城市二手房交易数据,这些数据包含实时在售和历史交易数据,涵盖了房屋地
理位置、总价、单价、面积、交易时长等诸多市场行为属性信息。如何有效展示
已有信息,并不挖掘数据背后的价值信息是本文研究的初衷。能够有效的获取这
些二手房交易数据,进行存储与处理,并可视分析出这些交易信息的时空属性及
演变变化,挖掘房源间相似关系,预测热门房源,都是本系统建设和研究的方面。
本系统的总体目标是,通过数据挖掘技术发现数据潜在的价值信息,并由可视化
技术友好的展示出来。设计并实现面向用户的城市二手房交易数据可视化系统,
支持用户筛选、点击、关联等交互操作筛选出感兴趣的数据展示。本系统可帮助
用户充分理解城市二手房交易的历史演变,并快速宏观理解实时在售房源的市场
概况、微观发现城市中的热门房源以及同类别房源。从而帮助用户充分理二手房
的市场状态,进而辅助用户进行市场行为决策或市场监管决策等。为了实现研究
目的,本系统将需要实现以下功能需求:
(1)历史交易数据及实时在售数据的获取;
(2)原始数据经纬度及异常数据处理;
(3)多维数据存储与管理;
(4)实时在售房源数据的可视化展示;
(5)预测出短期内将售出的热门房源并可视化展示;
(6)挖掘出相似度较高的同类房源并可视化展示;
(7)挖掘历史交易数据演变并可视化展示;
(8)支持筛选、点击、统计等交互操作;
(9)相关筛选结构的统计展示及链家网对应网页的跳转。
根据系统总体功能的需求分析,可以将系统更细化为数据获取、数据处理以
及数据可视化展示几个模块,各模块内部独立设计并实现,模块间协同工作,共
同完成系统全局各功能的实现。
二、城市二手房交易数据可视化系统实现
2.1 数据获取模块
数据抓取部分的工作,本文首先是从链家网的二手房第一级的列表页入手,
在列表页我们能够看到现在市场上目前正在售卖的二手房跟已经成交的二手房。
但是列表页仅展示了几个的房源属性数据,如价格、面积等。为了获取更多的房
源属性信息,爬取工作以列表为起点,进而抓取详情页的信息。抓取采用的工具
是 Java 的 HTTP Client,HTTP Client 是对 http 请求进行封装,可以方
便的去发起请求获取网页内容。在抓取的过程中,遇到了仅能够获取 1000 条数
据项的限制。为了能够获取更多的数据,这里对抓取策略进行了修改,通过组合
查询方式的方法,可以突破的限制,进而获取到十几万的数据。同时链家网为了
防止被恶意攻击,对请求进行了限制。对此,在访问链家网时添加了用户的
cookie,同时限制抓取的频率。
抓取的过程中会遇到很多死链,在死链判断上对爬虫进行了优化工作。首先
将死链分为物理死链和逻辑死链 2 种:物理死链是指我们访问时不存在的连接,
逻辑死链是指通过列表页跳转后是 404 的页面,链家网的死链大部分是逻辑死
链。针对物理死锁,在抓取时进行了判断工作,将不存在的访问请求直接过滤。
针对逻辑死锁的页面,采用对返回的状态码进行判断策略。
通过对抓取策略的修改,可以方便的抓取链家网的数据。抓取网页后,系统
通过 Jsoup 对 html 网页内容进行分析,获取其中我们需要的数据。其中,
Jsoup 是一个 Java 语言的 HTML 解析器,能够用于直接捷信个 URL 地址
和 HTML 文本内容。详细的数据获取流程如下图。
2.2 数据处理模块
在数据处理阶段,首先确认了链家网上可以获取到的数据信息,包括小区名、
面积、单价、总价等,这些数据基本可以满足系统对原始数据的需求。但在实际
抓取过程中,遇到了部分数据质量较差的情况。一些早期的历史交易数据存在部
分属性字段,如总价、成交时间等数据缺失问题,对于这部分数据,采用了直接
丢弃的过滤方式。而对于一些可以通过其他值可以计算得出的属性字段,如单价、
成交周期等,采用了计算的方式进行填充。
针对房源关键的空间属性信息,链接网采用文字描述,无法直接获取数据经
纬度的问题。采用调用地图产品 API 接口的方式解决,本文调用了百度地图的
API 接口,采根据中文地理位置来获取具体的经纬度坐标。
在采用百度地图的接口获取经纬度的过程中,同样遇到了数据缺失的问题,
即无法直接通过房源名称获取地图接口的经纬度信息。这里利用缺失数据的其他
相关属性,如所在的小区名、行政区以及其他对位置简单描述的信息来确定并填
充该数据的经纬度坐标。
完成了初步的数据预处理,还需要为后续数据挖掘进行相关数据准备工作。
本文使用的 GBDT 预测模型和余弦相似度算法都需要数据以向量的形式进行计算,
这里将数据表中的 Parlour(厅)、Room(室)、 Acreage(面积)、
Total_price(总价)、Unit_price(单价)、Lat(维度)、Lng(经度)等属
性项抽取并构成了一条的房源数据的空间向量,进行余弦相似度的计算。
2.3系统架构实现
根据系统架构的总体设计,在系统中数据存储在 MySQL 数据库中,整个后
端的架构采用的是 springboot+springMVC+JPA 的方式,JPA 是一个 ORM 框
架,是在 hibernate 基础之上抽象的一层,这样可以很方便的访问数据库并且
省去编写重复 SQL 的过程。
在使用过程中需要:(1)配置 MySQL 连接信息,(2)注解数据库映射类,
(3)继承 JpaRepository 编写 hql。
springBoot 的作用是简化 spring 应用的初始搭建以及开发过程,使用特
定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。之前在新建
一个web 应用时,需要先在 里配置 spring 信息,然后需要在 spring
的配置文件中定义很多 Bean。而采用 springboot,这些配置都可以用注解来实
现。
springMVC 框架是对 servlet 的封装,是 javaEE 中应用最广泛的 web 框
架,可以方便的对外暴露 API 接口。springmvc 的@RequestMapping 注解,可
以指定接口的名称,@ResponseBody 注解,可以自动序列化返回结果并以 json
的方式进行返回。
2.4 数据可视化模块
为了实现对房源的多视图展示的可视化需求,本文在可视化模块采用了
,Bootstrap,jQuery,Leaflet 和 Echarts 等多种前端可视化工具,达
到多维度可视分析的需求。其中,Bootstrap 自带栅栏的网页布局,可以实现响
应式布局。本文的整个可视化系统就是采用的 Bootstrap 布局,将系统分为 5
种维度的可视化展示,下面将从几个主视图来说明可视化模块的具体实现过程。
(1)二维地图热力图是基于 leaflet 框架实现的,在 GIS 地图上对房价
进行的热力图展示,同时将推荐的房源绘制在地图上。在整个 Bootstrap 布局
中,需要优先定义一个 p 作为 Leaflet 初始化的容器,Leaflet 的初始化函数
需要指定初始化容器,中心点以及最大最小放大范围。本文采用的中心点
是天津火车站的经纬度坐标 39.123826, 117.217497。为了保证在操作过程中不
超出天津的地理范围,本文获取了天津范围的 geojson 数据,作为整个地图范
围限制。Leaflet是采用 layer 的方式来描绘地图,本文二维地图热力图有三个
layer:地图背景tileLayer,初始化时需要指定一个地图瓦片服务;热力图
heatLayer,需要将房价信息初始化;推荐房源采用的是 FeatureGroup。同时配
合 ajax,异步的请求服务器后端接口,获取房源数据渲染在前端。
(2)相似关系图展示的房源之间的关系信息,在实现中,该视图采用的是
Echarts,用户点击推荐房源信息时,会调用 drawRelationChart()函数,然
后用ajax 发送 post 请求,传输点击房源的 id 信息,经过后台处理后,调用
handleRelationData(),将服务器回传的数据设置 option 的 data 跟 edges
属性。通过关系图的对象 relationChart,调用 setOption 函数,Echarst 自
动刷新视图。
(3)螺旋图展示的是天津一个行政区内所有小区的销售情况,包括销售量,
成交周期,成交价格。在实现上,采用的 D3 中的 select()函数初始化容
器,并且调用 append 一个 svg 设置宽跟高为 400px。通过圆的半径
numSpirals * * R 来计算圆的周长,坐标系采用极坐标的方式,通
过 inear()映射到坐标轴上。由于系统设计柱状图的颜色与销售量
相关,这里需要调用getColor()映射函数获取颜色信息,并在每个矩形上增加
事件,重写 mouseon、mouseover、mouseout 方法:在 mouserover 时,通过
tooltip 弹出一个提示框;在mouseon 的时候,修改选中矩形的颜色,在
mouseout 时再恢复。
(4)折线图展示的是每个区的历史成交价格跟销售量,折线图的实现是采
用的 Echarts,与普通的折线图不一样,本文采用的折线图是在一个表格中展示
了 2 个折线图,并且一个是正向一个是反向,在定义坐标系时,xAxis 与 y
Axis都需要初始化 2 个,并且在其中一个坐标系中指明索引 gridIndex。在数
据填充时,需要声明是坐标系,且其中一个 y 坐标系的方向是反 inverse 需要
设置为 true。
总结
本文的主要贡献如下:(1)使用一个数据预测模型为用户筛选出在售房源
中短期将被售出的热门房源部分,并构造了房源间的相似关系,得到相似性高的
同类型的房源。(2)设计并实现了城市二手房交易数据的可视化系统,以多角
度、多视图和友好交互的可视化表达方式,解决二手房交易数据信息海量、分散
和结构性差为用户带来的理解困难。文章首先介绍了进行城市二手房交易数据研
究的重要性和意义,尤其对市民、房产中介机构具有重要参考价值。为了帮助读
者更好的理解,针对本文涉及的数据爬虫技术、数据挖掘技术和数据可视化技术
做了概括介绍。由具体的案例分析证明了本系统的易用性和价值性,主要是实现
了帮助用户宏观了解城市二手房市场的关键信息,包括历史交易数据的演变趋势
以及实施在售房源的分布与相似关系,继而辅助用户进行相关市场决策。
参考文献
[1]赵凯,杨云帆,宋卓远,陈镱尹,杨秀璋,罗子江. 数据挖掘视角下二手房市
场与调控政策研究[J]. 情报探索,2020,(04):87-93.
[2]祝瑾,熊杨. 多方机制下二手房市场价格影响因素与发展趋势研究——基
于成都市二手房市场交易数据[J]. 大众投资指南,2020,(01):241-242+244.
[3]尤修成. 空间Hedonic模型二手房住宅价格研究[D].江西财经大学,2019.
发布者:admin,转转请注明出处:http://www.yc00.com/web/1714635938a2485236.html
评论列表(0条)