项目工作思路
整体项目的工作思路包括观察数据、清洗&转换数据、建立模型&预测这三大模块。
观察数据、清洗及转换数据是实施项目的大前提,主要包括以下操作:
- 观察属性特征
数据中除了房价之外的属性一共21项,包括具有地理位置属性的district、name、address、circle等,也有与房子建筑相关的building_type、floor_type、building_structure,还有小区内部相关的的property_fee、greening_rate、first_hand、plot_area等,还有与时间相关的date、age,部分也可以根据常识判断是否会对房价产生影响。
- 删除极端值和无用属性
房价price的数值特征如上显示,最小为2100元 ,最大为239887元,平均5.5万/平米,没有出现负值。再分析房价与房龄的散点图,发现一些偏离的极端值,删除掉;
floor_type、building_structure、tags属性的类型混乱,选择删除属性。
- 空缺值&数值变形处理
空缺值:
除了city 、name 、first_hand这三个属性,其它的属性都有数值缺失。
price数据的完整度为98.03%,date完整度为99.99%,空缺数据并不多,所以可以直接删掉空缺的数值;
age 、plot_area等的空缺值使用均值填充;
数值变形:
building_type需要合并类型,由原来的19种类型合并为5种类型,同时进行哑编码改造,将其每个属性值转化为一个二元属性维度,值对应为0或1;
有些属性的数据是偏态分布的,这种数据不均衡会影响算法准确性,所以需要对偏度较大数据做log变换;
date属性从字符型改为int型,值更改为距今的月数,以便做相关性分析;
为了实现在统一数据范围内的考量,需要对数据进行归一化处理;
- 建立模型和预测
问题分析与代码实现
经过以上数据预处理,综合回答以下的问题:
1、数据中其余信息是否与房价相关?相关性如何?
2、空余的信息是否可以通过房价进行预测补全?比如物业费
数据中除了房价之外的属性一共21项,包括具有地理位置属性的district、name、address、circle,与房子建筑相关的building_type、floor_type、building_structure,还有小区内部相关的的property_fee、greening_rate、first_hand、plot_area等,还有与时间相关的date、age,以上这些属性根据常识判断都与房价息息相关。
- 相关系数分析
数据进行前处理之后,将他们与price做correlation matrix 分析,选择正相关的属性,根据相关系数图表判断相关程度。
操作结果如下:
old number of features: 17
drop columns: [‘households’, ‘users’, ‘greening_rate’, ‘date’, ‘hot’, ‘building_type_BL’, ‘building_type_TL’, ‘building_type_others’, ‘first_hand_true’]
New number of features : 8
从相关性系数计算结果和作图分析:在原来17个属性中,删除了9个非正相关属性,包括’households’, ‘users’, ‘greening_rate’, ‘date’, ‘hot’, ‘building_type_BL’, ‘building_type_TL’, ‘building_type_others’, ‘first_hand_true’。经过选取的属性中,与price相关性较大的是for_rent、deal、age、property_fee、plot_area等属性。
经过预处理得到的相关系数结果看出来,property_fee、or_rent、deal、age、plot_area等这些属性都与房价有一定的相关性,适合用房价来补全。
- 房价和地理位置
数据中前几个属性district、name、address、circle,都含有地理位置信息,但是district 和 circle字段的内部分类不统一,既有区县(如:朝阳、海淀),也有商区(如:西单、新街口)和其它类型等,name(楼盘)虽然没有缺失值,但是楼盘名称并非唯一,不同的城市可能具有同样名称的楼盘,想要定位到真实的点位会有偏差。最终,选择具有唯一性的address属性,删除掉18.94%的空缺值,探讨地理位置与房价的关系。
想要探讨北京房价与地理位置的关系,我们先排除时间变化的影响,即探讨在同一时期的房源里,房价与地理位置的关系。将数据按照date分为11组,提取其中三组做对比分析,选择2016年1月1日、2016年8月1日和2017年6月1日这三个时间点数据的address和price属性,借助百度地图的api接口,在地图上呈现房价热力图如下(热力图参数设置为统一标准):
图1–2016年1月1日房价热力图(左图:北京全景,右图:北京五环内)
图1–2016年8月1日房价热力图(左图:北京全景,右图:北京五环内)
图3–2017年6月1日房价热力图(左图:北京全景,右图:北京五环内)
从以上房价热力图可以观察到:三个时间点下的房价空间变化特征相似,高房价主要集中在四环内。其中,以西城区、海淀区、朝阳区、东城区为代表,西城区的房价最高,以北海公园、西四和金融街附近的房价为代表,海淀学区整体房价较高,朝阳区东三环附近的国贸等CBD区域也是高房价热点。望京、国家体育场、北京南站附近房价也相对较高。
结合北京房价的空间特征来看,金融中心、旅游景区、学区房、火车站等所代表的经济、教育、交通等资源因素是影响北京房价最重要的因素。
- 代码部分
数据前处理