基于Python的二手房价格分析与多种机器学习房价预测

需要本项目的同学可以私信我,提供部署讲解服务和文档

近年来,中国各个城市的房价问题一直是人们所关心的焦点之一。随着新建房价的不断上涨,城市内建筑新房的用地也越来越少,加上对房屋刚性的需求,人民群众对二手房的需求增加,二手房交易市场不断扩大。由于互联网的蓬勃发展、信息存储技术日益成熟、海量数据以指数形式爆炸增长。怎样通过大数据分析、并获取其中有效信息给人们带来便利就成了当前人们关注的话题。在网络上,房屋信息丰富,因此我们希望通过Python第三方库requests和Pandas库,让人们能够更加全面地了解二手房市场的变化趋势和房屋信息。我们还将通过pyecharts库,对二手房供应数量进行深度分析和可视化展示,以便让人们能够了解重庆市的二手住宅供求情况和价格变化,为消费者提供更加精准的购房指导。

本文首先对论文的研究背景、研究意义以及相关的理论与技术作了必要的说明;接着,从对项目需求分析、项目概要设计和项目设计与实现三个层面进行分析。进而设立项目目标,构建了总体架构;从设计流程、代码实现对项目实施流程,包括数据爬取、存储、处理、分析及可视化作出了相关的阐述;在最后,对部分数据进行了模型预测。

引言

研究背景

房地产是关乎国家民生的重要经济产业,民生问题是人民群众最关心的问题,民生问题改善好,人民群众才会获得幸福感。近年来,随着国家大力推进城市化进程,政府出台了一系列的房地产调控措施,全民关注的焦点也逐渐放在房地产市场的未来走向。由于疫情影响,经济下行,人们将目光更多的投向二手房市场。与新房相比,二手房具有更多优势:与新房相比,二手房具有更多的优势:首先,它们的地理位置更加优越,近年来,随着土地资源的日益稀缺,市区内的楼盘数量也越来越少,大多数都建立在郊外或者偏僻的地方;其次,它们的早期建筑物也更加集中,更加符合当前的居住需求;最后,它们的交通也更加便利,与新房相比,它们的距离更近,更容易获得更多的出行机会;拥有完善的交通系统,使得交通环境更加舒适;价格合理,新楼盘的起步价格较高,但二手房的转让价格却比较低,这也成为吸引购房者的关键原因;风险可控,新房存在期房的风险,但可以保证其安全性;而二手房则可以直接出售,其质量和周围的发展状况可以清晰地看出。针对房产二次交易,买方对商品了解程度远小于卖方,仍是目前我国二手交易市场所存在的痛点,买方和卖方对在售房屋的了解信息也具有不对等性[1],购房者会花大量时间和精力去了解心仪的房源,这无疑大大降低市场效率,从而抑制交易市场潜力,也成为其市场发展的一大阻力。

此处省略 ...

研究意义

目前,我国房地产行业面临着变革,二手房已经逐渐成为我国房地产市场不可缺少的一部分,逐渐成为房地产交易市场的主导。无论是房产中介、开发商还是消费者,想要对房地产市场进行针对性地管控和规划,必须深入了解其中的变化。二手房市场发展至今,其成交量逐年增多,尤其在一些一线城市,二手房成交量远超新房。由此可见未来二手房市场会吸引到更多的消费和投资。研究二手房成交价格能够为人们在住房选择和购买上提供更多选择,有一定的参考价值。为了提升二手房行业的发展潜力,让其健全发展,利用Python技术,挖掘出二手房相关数据信息的价值,能够为居民带来合理预期,优化购房需求配置。

此处省略...

国内外研究现状

长期以来,房价问题一直是社会各界关注的焦点之一。房地产的城市规划和消费者的选择计划,一份基于未来房价趋势预测的精确报告,能够为其提供更为有用的市场参考。二手房价格预测是面对消费者,或以各种不同的房产交易平台为基础,对其进行评估,以此提高消费者对房产的了解和认识。传统的房地产估价方法有成本法、收益法和市场比较法这三大基本方法、但由于估价业务量的不断增长,仅靠上述这三种评估方法无法快速有效地得出结论,于是就产生了批量估价法,批量估价早在上世纪初被突出,首次将统计学思想应用于房地产批量估价中,运用多元回归分析来解决房地产的批量估价问题[5]。在房地产估价领域中最早运用数学方法为多元线性回归方法,这种方法通过回归分析来探索不同自变量和因素之间的相互影响,通过调整自变量的参数,能够更准确的预测因变量的值[6]。通过对房地产价格的分析,我们发现它受到多种因素的影响。为了更好地理解这种关系,以价格作为因变量,以影响因素作为自变量,通过计算,设想这些因素之间存在关系,求出自变量的数值,并用多元线性回归方法构建模型。

此处略

本研究内容与组织结构

本课题的核心内容是以重庆市二手房交易市场为例,挖掘相关数据、进行数据处理并可视化,运用机器学习建立模型,对重庆市二手房价格及相关因素进行了预测。先通过查阅大量资料文献,了解可能使用的模型,以及用于二手房房价预测时可考虑的特征自变量。其次从链家网爬取重庆市的二手房数据,对获取到的数据进行清洗,缺失值填充以及可视化分析,完成了部分数值型数据的转换。之后用相关系数分析绘制热力图,进行下一步的特征选择,先用训练集来训练模型,然后用测试集检验模型。最后对数据进行特征筛选和预测。

本文重点解决以下问题:

(1) 如何爬取挖掘所需二手房网站相关信息数据内容。

(2) 如何清洗处理所抓取数据。

(3) 如何将数据信息以可视化方式展现。

(4) 如何划分数据集和训练集进行模型训练,提升模型效果做特征筛选。

本文从七个方向对项目进行说明,并以此划分为七章:

第一章阐明了研究背景及意义,同时,本文还对国内外有关房地产市场的研究状况进行了梳理,概括了本篇文章的组织架构。

第二章对本文所涉及的理论基础作了相应说明,对本文所用到相关理论和机器学习算法原理作出梳理。

第三章为项目需求分析,大致概述了项目的功能结构,并从可行性和功能性需求进行分析,大致了解了重庆市房地产现状。

第四章为重庆市二手房项目概要设计。简述了项目的总体设计架构。

第五章为本项目的设计与实现。展现了数据爬取,数据处理,数据可视化的流程与关键代码。重点由可视化分析了影响重庆市二手房各项指标因素的原因。

第六章建立重庆市二手房市场的预测模型,并根据数据实际情况,对影响房屋价格的因素进行筛选和调整,并对其进行调整,建立并对其中的模型进行对比,选择出最优。

第七章对论文进行总结与思考,针对重庆市二手房市场现状和存在问题提出建议,对探索过程中的不足做了反思,明确了改进方向。

本文的创新点在于当前国内外学者研究城市主要是针对于一线大城市,房屋数据较多且比较好采集,而本文选取重庆市作为研究目标,对当地居民较有参考性。

相关理论与技术介绍

二手房市场相关理论

二手房市场存在以下特点:二手房比起新房,虽有很多优势,但也存在着很多不足。比如与新房交易相比,由于政府政策的不断完善,手续也在更加复杂繁琐。

此处略

特征筛选

此处略

机器学习相关算法

爬虫技术介绍

网络爬虫,也被称为网页蜘蛛或者网络机器人,更官方的名字叫数据采集,英文一般称作Spider[24]。这个软件或者脚本能够在一个特定的规则下,自动地捕捉和处理数据。网络爬虫的基本工作原理如图2.2所示。

通用爬虫技术其实现过程如下:

(1) 首先,获得原始 URL,分析目标网站,构建新的种子 URL。

(2) 将新构建的 URL插入到要捕获的队列中。

(3) 从队列中读出一个新的定位符,然后在从一个新的页面上获得一个新的 定位符之时,根据这个地址来访问新的网页。

(4) 在队列中对定位符进行分析,对其他URL进行解析,把这些 URL放到要捕捉的队列中,然后重复操作。

(5) 当满足停止条件时(如设定爬取100页),则停止爬取。

项目需求分析

项目概述

本项目选取重庆市(13个区)为预测分析的数据来源,展现数据的采集、处理、分析和可视化。对采集到的数据进行分析,得出重庆市二手房市场的影响因素。又由此做出可视化分析,更进一步展示了关于重庆市二手房各要素之间的相互关联。项目功能结构如图3.1所示。

3.2 可行性分析

可行性分析分别从技术、需求和社会三个方面进行调研和研究,结合当今实际状况,合理利用资源信息,以作出合理决策为目的。

3.2.1 技术可行性

本次项目主要采用Python语言进行爬取数据以及建模与可视化。

Python在80年代末被Guido van Rossum所设计,是一种面向对象、免费、开源,结合编译性、解释性、互动性的高级开发语言,该系统功能强大,易于阅读,并内置各种数据处理模块及第三方数据库,其功能包括:数据爬取、数据分析、图像绘制、模型构建等。语法简单且可拓展性强,使用Python语言开发系统,省去了大量繁琐的工作[25]。

而Python中的爬虫模块,则根据特定规则,从指定的网站抓取数据。在当前时代,二手房数据规模扩大,种类繁多,利用Python的爬取技术可以从不同平台获取想要的数据。

3.2.2 经济可行性

在政府采取一系列宏观政策的调控,随着各种因素的影响,重庆市房地产重心逐渐转向了二手房市场。重庆市二手房市场越来越受到人们的重视。本项目结合现实因素,作出对重庆市二手房的分析,有利于对相关人员(如房产中介,购房者)的意愿进行参考,帮助更好的做出选择,具有一定的经济效应。

3.2.3 社会可行性

近几年,重庆市新建商品房的销售面积和竣工面积相对平衡,增长幅度不大。由于房地产税的存在,重庆市的商品房积压状况并不显著。重庆市住宅市场均价自2008年起连续上涨,但在2015年后,商品成交量明显大于供应量,出现了供不应求的现象。2016年及以前,增长幅度较为稳定,2017年起,增长幅度较大,2018年同样也出现了较大幅度的增长。2019年在学区房禁令等政策出台的影响下,供求和销量都有所下降,从整体看来,重庆市商品房销售价格增长幅度较为合理,没有出现大涨大跌的情况,依旧是供小于求、2020年初因为受到疫情的影响,房产企业延迟复工,商品房的供应量急剧减少。房地产行业几乎陷入冰点,处于停滞状态。

二手房市场与商品房市场息息相关,商品房市场的停滞,导致重庆市二手房存量过多,房源存量持续上升。2018年起,重庆市二手房销售价格开始出现下跌,直到2019年才基本止跌。2019年重庆市二手房市场开始回暖。2019年底受疫情影响,整个房地产市场遭受冲击,当疫情情况好转时,购房者对二手房的需求开始强劲反弹。但疫情反复,直到2022年回暖过程仍为温和状态。

将二手房选取为本项目分析的案例的主要因为:首先,在宏观调控的政策影响下,市民对二手房需求逐渐扩大。其次,二手房存量受商品房供小于求的影响,存量足,分布广,随着新地皮扩展,城市化不断加强,与新房相比,居民更喜欢处于交通便利处的二手房。此外,二手房的数据资料收集较为方便,价格受市场供求情况影响波动更为显著。而本项目以二手房成交价格的实际数据为基础,结合实际做出分析,有助于推进重庆市二手房市场的健康发展,具有参考意义和社会价值。

3.3 功能性需求

项目主要使用Python语言进行编写。针对重庆市的二手房价格预测分析项目主要包含数据抓取、数据处理、数据可视化和数据预测四个模块。

3.3.1 数据抓取

随着网络发展,互联网已经成为大量信息的载体,在购买住宅之前,许多人会通过各种网络平台来了解相关资讯。其中链家网作为房源网站中领头角色,具有一定优势,但如何分析大量数据,提高对资源的利用效率,找到我们所需要的信息,就需要用到爬虫技术。本项目选择运用爬虫技术获取相关房源信息,其中步骤描述如下:

(1) 数据爬取:利用Requests编写爬虫程序。向需要爬取的网页发送request请求,对目标网站URL进行解析,抓取需要的房源信息。需要采集的房源数据主要包括二手房的基本信息,基本属性,交易属性。爬取流程如图3.2所示。

接下里我直接放入结果展示图,对于过多的文字就不做过多的介绍了

爬虫

数据预处理

python 复制代码
1	# 定义转化函数
2	def ratioTH(df, flag):
3	    CN_NUM = {'十': 10, '一': 1, '二': 2, '三': 3, '四': 4, '五': 5, '六': 6, '七': 7, '八': 8, '九': 9, '零': 0, '两': 2}
4	    if pd.isna(df['梯户比例']) or "" == df['梯户比例']:
5	        return 0
6	    strList = df['梯户比例'].split("梯")
7	    T = strList[0]
8	    H = strList[1]
9	    numTList = list(T)
10	    numHList = list(H)  
11	    numTStr = '0'
12	    for i in range(len(numTList)):
13	        if numTList[i] in CN_NUM.keys():
14	            numTStr = str(int(numTStr) + CN_NUM[numTList[i]])    
15	    numHStr = '0'
16	    for i in range(len(numHList)):
17	        if numHList[i] in CN_NUM.keys():
18	            numHStr = str(int(numHStr) + CN_NUM[numHList[i]])    
19	    if flag == 1:
20	        return int(numTStr)
21	    elif flag == 2:
22	        return int(numHStr)
23	    else:
24	        return int(numHStr)/int(numTStr)
25	data['梯户比例_梯'] = data.apply(lambda x:ratioTH(x, 1), axis=1)
26	data['梯户比例_户'] = data.apply(lambda x:ratioTH(x, 2), axis=1)
27	data['梯户比例_比例'] = data.apply(lambda x:ratioTH(x, 3), axis=1)

可视化

观察最主要的前12中户型,如图5-4所示。由图可知,在重庆市二手房中,3室2厅1厨2卫是最多的,有609套。近年来随着二胎、三胎政策的放宽,家庭对3室的需求日益增加,尤其2个卫生间,比较适合大家庭的日常起居。其次是2室1厅1厨1卫,有489套。这种户型普遍存在于老房子,对于独居青年和新婚夫妇比较合适,并且户型小,面积不大,与新房相比,负担的经济压力显著减轻。

(2)二手房面积分布分析

由于面积种类多,从25平方米到360平方米不等,因此将面积进行简单的分割分类,以25为一类,划分为(0,50],(50,100]一个区间,以此类推,得到如下图5.5结果。



房价模型预测

指标定义




最后再比较一下各模型的预测结果。

重新定义一个评估函数,记录各个模型的误差以及R2得分


构建机器学习模型简单的进行了分析和预测。将数据划分输入和结果集,切分训练集和测试集。利用训练集的数据进行建模,并代入模型得到预测结果,再根据预测价格与成交价格来进行对比,随机森林的预测结果是最优的。但这并不代表完全最优,因为对模型并未进行调参优化,仍存在不足,经过调参后模型效果还有提升可能。

每文一语

实践是检验真理的唯一标准

相关推荐
正义的彬彬侠几秒前
《XGBoost算法的原理推导》12-14决策树复杂度的正则化项 公式解析
人工智能·决策树·机器学习·集成学习·boosting·xgboost
千天夜10 分钟前
使用UDP协议传输视频流!(分片、缓存)
python·网络协议·udp·视频流
测试界的酸菜鱼13 分钟前
Python 大数据展示屏实例
大数据·开发语言·python
羊小猪~~17 分钟前
神经网络基础--什么是正向传播??什么是方向传播??
人工智能·pytorch·python·深度学习·神经网络·算法·机器学习
放飞自我的Coder1 小时前
【python ROUGE BLEU jiaba.cut NLP常用的指标计算】
python·自然语言处理·bleu·rouge·jieba分词
正义的彬彬侠1 小时前
【scikit-learn 1.2版本后】sklearn.datasets中load_boston报错 使用 fetch_openml 函数来加载波士顿房价
python·机器学习·sklearn
资源补给站1 小时前
论文2—《基于柔顺控制的智能神经导航手术机器人系统设计》文献阅读分析报告
机器学习·机器人·手术机器人
张小生1801 小时前
PyCharm中 argparse 库 的使用方法
python·pycharm
秃头佛爷1 小时前
Python使用PDF相关组件案例详解
python
Dxy12393102161 小时前
python下载pdf
数据库·python·pdf