【机器学习报告】我用链家的数据做了一个超过链家模型的二手房房价预测模型
我用链家的数据做的二手房房价预测模型,打败了链家自己的模型
- 前言
- 数据准备
-
- 爬虫准备
- 特征展示
- 变量统计性描述
- 数据处理
-
- 数据清洗与异常值过滤
- 数据截断
- 数据集划分:
- 特征处理
- 模型与分析
-
- 第一轮迭代
- 第二轮迭代
- 模型融合
-
- K折验证
- PK链家模型
-
- 链家估价模型
- 测试集准备
- 模型PK
- 代码开源
前言
在二手房交易市场中,普遍存在挂盘价与成交价偏差大的问题,如何精准预测二手房成交价成为一大难题。本模型的目标是训练出一个根据二手房相关特征来数据预测二手房成交价的模型,保证预测准确度要优于网站的预测模型,并给二手房出售标价提供参考价值。
(好吧这其实是我这学期数据挖掘课的大作业)
数据准备
爬虫准备
- 数据来源: 数据来自链家的官方交易网站https://bj.lianjia.com/chengjiao/,为了保证数据量足够大,我们的任务瞄准了北京的二手房成交信息。
- 数据获取: 使用python编写异步爬虫脚本,该多线程脚本大大减少了爬虫所需的时间,使用了aiohttp、asyncio、lxml等相关库
- 获取分布合理的数据集: 考虑到网站上只列出了100页具有相同约束的交易记录,总计达3000条记录,这对于训练数据集来说太小了。因此,我们选择使用几个属性的组合来扩展网站提供的记录。用价格和面积相结合,可以得到56*100页的数据量,同时也保证了数据分布的流畅性。
特征展示
- 决策变量:
- 特征变量:
变量统计性描述
- 决策变量 total_price 成交价:对0-1500万的房屋绘制直方图和密度图,我们可以发现数据是比较均匀的,绝大部分处于100-500万。
- average_price 小区交易成交均价:对小区交易成交均价绘制直方图和密度图,均价集中在1-7万。
- district 所在行政区:对所在行政区绘制柱状图,可以看出我们的数据分布在北京各个行政区,较为平衡。其中,在昌平区和朝阳区的交易二手房较多。
- date_of_deal 成交日期:通过成交日期的柱状图,我们可以看出大部分数据是分布在2019、2020年,其他年份的数据是较少的。
- completion_year 建成年限:通过柱状图可以看出,房屋的建成年限集中分布在1990年到2014年。
- 成交价与建筑面积的相关性分析:通过散点图,我们可以看出成交价与建筑面积呈现明显的正相关趋势,这暗示建筑面积是个强相关变量。
数据处理
数据清洗与异常值过滤
- 去除数据中house_type为车位的数据
- 去除total_price、average_price、built_up_area为空数据
- 去除built_up_area > 10000 and built_up_area < 5的数据
- 去除total_price > 10亿的数据
数据截断
对于回归问题,考虑到数据的分布以及模型训练的有效性,我们将目标锁定为:
- 售价小于2000万的样本
- 包含成交10个及以上的小区样本
- 成交年份在2019至2020年的样本
- 最终我们得到共77766条有效样本
数据集划分:
- 考虑到数据和模型的时效性,我们将成交于2020年的样本随机划分为7比3的份额,将2019年数据与70%的2020年数据作为训练集,30%的2020年数据作为验证集。
- 最终我们得到65897个训练样本,11869个验证样本。
- 训练集与验证集total_price、build_up_area数
郢中歌353: 请问能分享一下数据集吗
Tajo: 楼主 这文章好像变vip文章了,请问这是您的意思吗,因为我知道平台会自动把一些文章转为vip文章。
2301_76766679: 跪求开源代码!邮箱2812820173@qq.com
-bw-: 跪求开源代码和数据集,邮箱:1329696875@qq.com
weixin_41508814: 您好,请问下,hj+指的是负样本吗,看论文这个地方有点迷糊,既然是负样本为啥不写个符号要写成hj+,还以为是正样本