版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1绪论研究背景自改革开放以来,我国中西部地区形成了一股向北上广深等经济高速发展区域寻找工作的浪潮。截止于2020年,我国每年都有数亿人背井离乡选择到大城市去寻找工作。因为远离家乡,所以衣食住行是他们每天必须要考虑的事情。对于刚到大城市的人来说,租房就成了他们的首要选择。城市的租房价格差异巨大,房子价格因区域,交通,环境等因素而大受影响。楼房会因为靠近校区或是紧邻地铁线而价格上涨,同一区域的住房也会因为某栋楼房的采光和通风好而价格上涨,这些因素都影响着房屋的价格。未经过改造的老旧小区即使是环境破旧也会因为地理位置的优势而导致价格高于环境良好、地理位置不佳的新建小区。随着社会的发展,北上广等地区为了改变城市面貌,开始拆除“城中村”区域,改造老旧小区。这样的改变导致大量可供出租的房屋被拆除,给长期租房的打工者们带来了巨大的生活压力。另一方面,随着城市的不断扩建,大量的新楼房被建成,但由于商圈没有形成、人文环境差等因素,许多拥有多处房产的户主也选择出租房子。出于房价和工作变更的考虑,租房就成为了就业者最具性价比的选择。本文便是在这一时代热点下,通过租房的价格数据建立模型来完成对租房价格的分析与预测。1.2研究的目的和意义1.2.1研究的目的房子是一个人的安生立命之所,不管是为了组建家庭还是为了事业而拼搏,有房可居始终是一个前提。随着社会经济的发展,老百姓的生活水平有了显著的提高。在基本上已经解决温饱问题的今天,人们开始追求更高层次的精神生活,也开始越来越注重子女的教育。“学区房”、“独栋别墅”等新型住房概念层出不穷。房子不再仅仅被赋予简单的居住意义,而带来了更多的商业价值。过去几年中出现的“炒房热”更是让房价一飞冲天。尽管政府已经出台大量住房相关的政策,为了控制房价更是提出了“房子是用来住的,不是用来炒的”的口号,但现如今的房子价格依旧让不少人望而兴叹。对于即将踏入社会的大学毕业生群体,租房会是他们的第一选择。但是,还是有不少人利用租房价格的信息差来赚取利益。2017年,“深圳女二手房东拥有400多套出租房,年收入过百万”一事火遍全国。一个低价的房子经过二次转手出租便可从中攫取利益,可见租房现状中存在信息不透明导致的价格差异问题。在实际生活当中,研究租房的相关问题有利于解决当地的就业问题。研究各个特征同租房价格的关系能够帮我们找到其中影响租房价格的主要因素。通过分析这些因素的影响能够帮助有租房需求的人提供更多的现实考虑。1.2.2研究的意义对于刚参加工作的年轻人来说,租房是一个占比非常大的开支。但是房租的价格又是同城市的生活水平息息相关。为了吸引更多的大学生在当地进行就业,解决他们的住房问题就能够为当地吸引更多的人才。根据生活的经验来看,人们在租房的时候会根据自己的实际需求去选择租房。本文通过建立模型的方式能够找到与房租价格相关的特征,帮助当地政府把握租房市场的价格调动风向。同时也能够帮助租房市场中的销售人员提供合理的租房房价指导。在研究各个因素同租房价格的关联关系时需要用到大量的数据,研究人员需要通过复杂的处理步骤来进行数据处理,在数据处理这一过程当中,从租房数据的采集到数据清洗,把清洗后的数据进行分析,每一个步骤都有可能产生错误。因此我们需要理论结合实际,对于那些无关紧要的数据可以进行删除操作,然后对数据进行进一步的特征处理。国内外关于价格预测相关的研究项目非常之多,其中研究房价的预测是主流问题。但是影响房价的因素众多,从不同的角度去研究房价问题,即使是运用了相同的模型,这样也会导致结果产生非常大的差异。模型的泛化能力差,模型参数不能更新也会导致价格预测的结果不准确。正是出于这样的考虑,房价预测的相关研究一直是一个值得被关注的题目。当地政府在研究和指定一个与房价相关的政策时,往往会听取专家的意见,但如果专家进行预测的模型不能准确地预测未来租房市场地走向,这样会使得与租房相关的政策不能很好地落实。因此必须要运用租房价格预测模型从多角度进行分析,选择不同地参数对模型进行调优,使模型能都预测更加准确地结果。本文正是通过建立xgboost模型对租房价格进行预测,为租房价格预测问题提供了一种角度进行分析。1.3国内外研究现状1.3.1国内研究现状徐富强等人利用线性组合预测模型对合肥房地产地房价进行预测,他们对模型的改进方法是利用误差的绝对值并且使这些误差达到最小。通过计算树增益的方法,计算单个模型的预测值在整个模型中的权重来建立能预测的模型。该模型的优势是利用了神经网络和支持向量机在多种影响变量的环境中能够良好地训练的优势,显著地提高了模型对预测结果地准确度。罗党等人在传统的GM(1,1)模型上做出改进,在原有的模型上加入BP神经网络模型,建立了一个基于灰色BP神经网络的组合模型,并利用该模型对郑州市的商品房价格进行预测。他们采用两种模型分别进行对比,将GM(1,1)模型对郑州市的商品房价格预测结果与灰色BP神经网络的组合模型对郑州市的商品房价格预测结果进行对比。结果显示,灰色BP神经网络的组合模型相比于传统的GM(1,1)模型在预测的结果方面有更高的精确度,对实际问题的适应性更强。郭小娟同样是使用对比的方法对灰色残差修正模型进行改进。一种是基于BP神经网络的灰色残差修正模型,一种是基于UGM模型的灰色残差修正模型。实验首先建立了灰色残差修正模型,得到模型的预测结果。再分别通过BP神经网络和UGM模型对灰色残差模型加以改进,得到改进后的模型预测结果。结果显示,改进后的模型更能反应房价市场的变化趋势。魏云云等人利用灰色关联分析的方法对西安市近几年房价的统计数据进行数据处理。他们得到影响房价的主要特征。再利用BP神经网络模型对房价进行预测。这种处理的思路是在模型进行预测之前,利用灰色关联分析的方法获得主要的特征。这样能够提高模型的训练速度,得到的预测结果也会更好。张志峰抓取南京市二手房的数据集,通过对数据进行简单的数据处理,再对数据进行可视化分析。经过简单的分析之后,对数据集进行特征提取。最后建立xgboost模型使用处理后的数据进行训练,并对预测的结果同线性回归和lasso回归得出的结果进行比较。最后得出的结论是xgboost相比与回归模型具有更好的预测效果,应用性更强。1.3.2国外研究现状Kotakinabalu等人通过比较的方法,将反向传播人工神经网络的预测误差和模糊回归的预测误差相比较。反向传播人工神经网络的预测结果比模糊回归的预测结果要好。Bla等人通过建立非结构化的协方差矩阵混合模型对旧金山地区的短租房销售业绩进行分析。分析结果显示短租房的收入业绩与供给等特征无关。这一结果为Airbnb短租房公司提供了建设性的帮助。1.4本文组织结构本文主要研究的是短租房的租房价格分析与价格预测的问题,从现时情况出发,选取正规租房网站的短租数据集。首先对数据的结构进行了简单的分析,然后删除重复的数据,经过对数据集进行特征提取,运用决策树模型进行特征选择,然后根据xgboost算法进行建模,把特征数据输入进行训练。根据网格搜索的方法对模型的参数进行调优,最后画出模型预测值和真实值之间的对比图并以此来判断模型预测的结果。本文的结构为如下五章:第一章的绪论部分介绍了本文的研究背景,研究问题的目的和意义。同时阐述了国内外有关房价数据分析与价格预测的研究内容。第二章相关理论与技术部分介绍了项目开发所需要用到的开发环境,与数据处理有关的技术,用于进行特征选择的决策树模型以及xgboost算法。第三章数据特征处理与可视化部分介绍的是对数据基本的数据清洗操作、对数据进行特征提取以及提取完特征后数据的可视化。第四章基于xgboost模型的租房价格预测部分介绍的是介绍的模型的构建过程,这其中包括模型相关的参数介绍以及利用网格搜索进行调参,最后是模型预测结果的对比图。第五章总结与不足部分介绍的是对项目设计和所遇到的问题的总结,包括技术和沟通等方面。不足是对设计完成后项目还可以改进的总结。1.5本章小结本章主要介绍了研究租房数据分析与价格预测的研究背景。讨论了自改革开放以来我国出现的外地打工热潮。并随着社会经济的快速发展,当人们的工资上涨速度跟不上房价上涨速度时,相比于买房,租房就成为了大多数人的选择。这种租房选择的原因是多方面的,旧城改造与城中村的拆毁给长期租房的人带来了巨大的生活压力。而另一方面利用租房信息差二次出租房屋也成为了一种赚钱的手段。这一章还对研究的目的和意义进行了讨论。房子是一个人安家立命之本,但是房子不再仅仅只拥有的居住功能,还附带了更多的商业价值。希望通过本文的研究,可以对那些真正有租房需求的人提供一点现实的考量。本章的第三部分是对国内外有关租房价格预测研究的一个概括。通过研究可以发现,国内对于房价预测的研究主要是运用的神经网络模型和XGBboost模型,并通过参数调优的方式和多模型的融合来增强模型的预测精度。国外的研究方式也是通过人工神经网络或者是混合模型的方法来对与房价有关的问题进行研究。本章的第四个部分讨论了项目的主要设计流程,以及论文撰写的结构设计。主要是从现时情况出发,通过选取正规租房网站的短租数据集。首先对数据的结构进行了简单的分析,然后删除重复的数据,经过对数据集进行特征提取,运用决策树模型进行特征选择,然后根据XGBoost算法进行建模,把特征数据输入进行训练。根据网格搜索的方法对模型的参数进行调优,最后画出模型预测值和真实值之间的对比图并以此来判断模型预测的结果。论文撰写的主体思路是依照项目设计的功能模块进行撰写的,详细地阐述了各个部分的设计内容。2相关理论与技术2.1项目开发环境本次项目开发所用的开发工具是pycharm,这是一款由Jetbrains开发的Python的IDE编辑工具。Pycharm开发工具具有根据已编写的代码对剩下的代码进行填补,能够自动检查代码中的错误并用红线提示,能对项目中缺失的模块进行报错处理,还同时具有强大的导航界面等一系列特色功能。此外,因为pycharm拥有丰富的web框架,所以在pycharm中还可以进行web项目的开发。最为重要的是pycharm能够从互联网中下载各种数学和科学包,这些操作都可以通过pycharm中包含的控制台上轻松完成。本次项目开发所用的编程语言是python。Python编程开发语言发展至今已经形成了多个版本,本次项目所使用的python版本是3.7版本,这是目前主流的项目开发版本。Python具有许多强大丰富的功能,例如资源众多的函数库。Python的优点有如下5个方面。一是相比于c语言或是java语言,python的语法更加容易让人理解。对于没有其它编程语言基础的人来说,python语言的易读性会让新手更加快速学会这门编程语言。通过了解程序的业务逻辑能够更加容易设计出想要的应用程序。二是python代码的开源性使得python的程序代码能够不断地被优化。程序中的漏洞能够被找到且成为开发者学习的案例,其他人也能够通过设计新的功能或者利用算法来对程序进行优化。三是在编写python代码的过程中,用户能够直接在运行窗口进行编写。编写的程序不需要编译器,这是因为python自带的解释器能够独立对代码进行编译。用户也可以在未写完整个程序的情况下进行运行和测试。四是python拥有许多内置的类和模块,在编写程序的时候只需要将类或者是模块直接进行调用就可以完成想要的功能。如果python中没有想要调用的包,用户可以通过python指令在互联网上下载安装。用户还可以自己编写模块,然后直接调用。五是python代码有很强的平台移植性。用户可以在不同的操作系统,不同的接口中对程序的代码进行测试和运行。程序项目中的虚拟环境能够使程序在不同设备上调试时无需重新安装包。2.2标签编码本次项目对数据进行特征处理所需要用到的技术为labelencoder,也就是标签编码,也叫标准化标签。该技术对数据进行处理的手段通常将数据集中单个标签的全部离散数据进行数值化。如果数据包含8个数据,则标签编码就将数据转换成0到7之间的数。标准化标签技术通常用于处理含有大小关系的数据。在数据处理中还有一种技术通常也会被用到。这种技术叫独热编码,在国外的学术期刊中通常把该技术称之为one-hotcode。对于包含多个特征的数据,独热编码用1来表示单个特征,用0来表示其他特征。这种独特的编码方式解决了含有多个特征的复杂数据处理问题,同时也为数据处理的过程提供了更多的特征。但是这种方式处理有多个属性多个状态的数据时会使得处理结果更加复杂。所以在一般情况下,在使用这种编码方式的同时还需要使用pca主成分分析法来对数据的多个特征进行降维处理。在分析实际问题的过程中,一些数据间大小关系本身具有实际意义,不能直接将其简单地数值化。再加上有一些模型对数据的大小关系比较敏感,直接将特征数值化会影响模型训练的结果,比如逻辑回归模型的预测结果就能被数据的特征处理过程所影响。还有其他一些对数据不太敏感的模型,比如说树模型。所以在使用labelencoder进行标签编码的时候要考虑使用范围。对于在哪种场景下使用标签编码,在哪种场景下使用独热编码,可以做一个大致的分类。对于那些不考虑数据间的逻辑关系且数据的特征不众多复杂,数据的标签可以直接进行数值化的情况下可以是使用独热编码。比如对性别,地球七大洲名称等数据特征少且不存在逻辑关系的特征进行特征处理就可以使用独热编码。在编码的过程中,对男性特征标记为1,女性则标记为0,这样便实现了对标签的编码过程。对于那些需要考虑逻辑关系的数据,需要使用标签编码。逻辑关系包含顺序逻辑关系。比如成绩的排名,家庭不同成员的辈份。这些数据的特征间都一个固定的排序关系。使用标签编码便可以在不破坏数据原有的逻辑关系的同时对数据进行编码。选用那种模型还可以通过所使用的模型来进行判断。对于数值间的逻辑关系不敏感的模型,比如说树模型,就可以使用标签编码。因为一些树模型在训练的过程中,它的最大深度被限制。如果使用独热编码产生非常多的特征,但是树模型又无法继续分裂而不得不将一些多余的特征舍弃。对于数值间逻辑关系比较敏感的模型则需要使用独热编码。例如逻辑回归模型,对特征进行简单的编码处理会使得模型的训练效果下降。如果要考虑特征间的逻辑关系则需要使用独热编码。2.3决策树决策树是树模型的一种。其树模型是由根节点、父亲节点、子节点和叶子结点组成。每个数据的样本特征会从根节点输入。经过不同的分裂路径,最终的叶图2-3决策树子节点便是最终的决策结果。(2-3)一个好的决策树模型是要对数据的属性进行最优的划分,尽量把相同的属性样本划分到同一范围。我们可以使用纯度对划分的准确度来进行描述,划分的准确度越高则属性的纯度越高,划分的准确度越低则属性的纯度越低。属性的纯度可以通过计算的方式来进行描述。计算的结果称为信息熵。现在假设数据集的样本为D,则样本集的信息熵为:通过计算出来的值越小,则样本的纯度越高。决策树模型的另一个特点就是节点分裂。在节点分裂的过程中决策树魔心会使用信息增益比来选择如何去分裂。通常情况下,决策树会选择分支较多的属性进行分裂。通过类似求平均数的过程去用信息增益率来除以节点个数得到信息增益率,这样的分裂效果比较合理。其计算公式如下:(2-3)其中Info_Ratio
表示信息增益,
InstrinsicInfo表示分裂子节点数据量的信息增益,其计算公式为:(2-3)其中instrinsicinfo是分裂节点的熵,如果子节点个数越大,分裂节点的熵值越大,由此得到的信息增益比就会越小,就会导致决策树模型在分裂的过程中的效果变差。通过增加决策树分裂时的信息增益率能够使得节点在分裂时选择多属性的结点进行分裂的概率变低。通过公式可以看出,如果决策树模型的信息增益率越高,表明分裂时的效果越好。2.4XGBoost算法XGBoost模型是由在国外进行学习研究的陈天奇等人提出。XGBoost模型的相关论文一经发表便在学术领域产生了巨大的反响。现如今,XGBoost模型被广泛地应用于机器学习竞赛以及国内的一些深度学习网站中。XGBoost模型在原有的提升树模型基础上作出改进,并取得了很好的效果。XGBoost的主要算法思想是:不断地添加子树模型,通过树模型的节点进行特征分裂。每次生成的新的树模型便相当于一个新的函数,用于计算之前预测的差值。如果我们要预测一个样本,就可以把这个样本的特征输入到子树模型中。子树模型就对应这一个叶子节点,叶子节点得到的数值是子树模型的预测分数,将每个叶子节点的数值相加即可得到该样本特征的最终预测结果。XGBoost算法的目标函数:(2-4)XGBoost模型的目标函数由两部分组成。观察值与预测值之间的残差以及目标函数的正则化项。我们通过调试观测值与预测值之间的残差来优化目标函数。通过不断地生成决策树来拟合之前预测地残差,使得残差越来越小以达到优化目标函数的目的。之前我们介绍了如何通过计算叶子节点的分数以及如何用这写叶子节点的分数相加得到最终XGBoost模型预测的结果。我们还需要知道增强树模型结构是如何生成的。决策树的生成必须要考虑节点的分裂方式。在增强树模型中去寻找最佳分裂点和最佳特征是该模型的分裂方式。XGBoost利用贪心算法即通过遍历每一个特征的分裂点,并且利用XGBoost模型的目标函数值来对特征分裂点进行评价。通过判断分裂后的函数值与叶子节点的目标函数值之间的信息增益比,如果增益比较高则进行分裂;否则不分裂。同时XGBoost还设置了阈值来限制树分裂的最大深度。2.5网格搜索GridSearchCV的通俗说法是网格搜索法。网格搜索包含两个部分,第一部分是网格搜索(GridSearch),第二部分是交叉验证(CV)。网格搜索是指在指定的参数范围内,按照指定的步骤对参数依次进行调整,通过对不同参数组合进行训练和比较,找到最优的参数组合。网格搜索这种调优手段是通过遍历范围内的全部的参数,有点类似于贪心算法,直到最终找到模型训练的最优组合参数。第二部分交叉验证,在进行交叉验证的过程中通常是指定一个参数值,通过实验经验选择的交叉验证参数为10的参数值。或者是使用交叉验证参数为n的参数值,这种交叉验证方法称为留一法。在进行机器学习模型训练的时候,一些参数的调优往往需要人工去调整,这种参数被称之为超参。最常见的超参有人工神经网络模型中的隐藏层的个数、树模型中树分裂的最大深度等参数。参数的调优出现问题会导致模型的预测结果出现问题。一般情况下有两种调优方式。一种是通过实验经验得到的参数调优方法;一种是通过一定的方法对各个参数进行调优。本项目中使用到的网格搜索法便是这一种。网格搜索的缺点是只能调优模型中的几个参数,当需要调优的参数个数很大时,调优的复杂度增大,调优的时间也会变得很长。2.6r2评分标准r2评分标准即为决定系数。决定系数表示的是因变量被自变量所影响的程度。通过该决定系数模型对数据的预测准确度。如果决定系数越大,则模型的预测准确度越高;如果决定系数越小则模型的预测准确度越低。其表达式为:(2-6)公式中SSR是总体离差平方和,SST是回归平方和。从公式中我们可以知道,r2评分标准即决定系数是总体离差平方和与回归平方和之比。决定系数的最终取值在0到1之间,决定系数越接近1,说明模型的解释程度越好。通过该系数我们能判断出模型对预测结果的解释程度。判断模型预测的优劣程度通常使用的是r2评分标准。2.7本章小结本章主要介绍了项目设计过程中涉及到的相关理论与技术。主要介绍了项目的运行环境,项目开发语言与使用的模型和调参技术。Pycharm开发工具具有根据已编写的代码对剩下的代码进行填补,能够自动检查代码中的错误并用红线提示,能对项目中缺失的模块进行报错处理的优点。项目使用的编程开发语言Python的优点有相比于c语言或是java语言,python的语法更加容易让人理解。对于没有其它编程语言基础的人来说,python语言的易读性会让新手更加快速学会这门编程语言。python代码的开源性使得python的程序代码能够不断地被优化。python自带的解释器能够独立对代码进行编译。本章还介绍了标签编码技术,并于数据处理中常用的独热编码作为对比,从数值类型,模型选择等方面对两种技术进行了类比。比如说在哪种场景下使用标签编码,在哪种场景下使用独热编码,做了一个大致的分类。对于那些不考虑数据间的逻辑关系且数据的特征不众多复杂,数据的标签可以直接进行数值化的情况下可以是使用独热编码。对于那些需要考虑逻辑关系的数据,需要使用标签编码。本章提及了两种树模型,一种是决策树,一种是增强树模型即XGBoost模型。决策树模型是由根节点、父亲节点、子节点和叶子结点组成。决策树模型通过对数据的属性进行最优划分,尽量把相同的属性样本划分到同一范围。通过类似求平均数的过程去用信息增益率来除以节点个数得到信息增益率,如果决策树模型的信息增益率越高,表明分裂时的效果越好。这便是决策树的构建关键步骤。XGBoost算法的主要算法思想是通过不断地添加子树模型,通过树模型的节点进行特征分裂。把每次生成的新的树模型当成一个新的函数,用来计算之前预测的差值。子树模型对应这一个叶子节点,叶子节点得到的数值是子树模型的预测分数,将每个叶子节点的数值相加即可得到该样本特征的最终预测结果。最后还介绍了调参方法-网格搜索法。网格搜索是指在指定的参数范围内,按照指定的步骤对参数依次进行调整,通过对不同参数组合进行训练和比较,找到最优的参数组合。通过对这些技术的概括使我对python技术以及机器学习模型特别是树模型有了更加全面的了解。3数据特征处理与可视化3.1数据来源本次项目的实验数据来源于网络博主通过爬虫技术爬取的2020年4月份链家网站北京市各个区域的租房数据。数据的属性包括单条数据的url,房源区域,房源维护时间,房源编号,租赁方式,房屋类型,房屋类型厅室,房屋类型面积,房屋类型精装修,经纪人,面积,朝向,维护,入住,楼层,电梯,车位,用水,用电,燃气,采暖,租期,看房,付款方式,租金,押金,服务费,中介费。url是单个租房网页的网址。通过访问这个url可以找到房屋出租信息的页面。房源区域是出租房屋所处在的北京市的地址,其中包含行政区,所属街道,所属小区。房源维护时间是上一次维护该出租房屋的时间,房子的维护时间以年月日的形式显示,其它未标注维护时间的房屋以井号形式显示。房源编号是链家网站给每个出租房屋的编号,通过房源编号也能够找到该出租房屋的房源信息。租赁方式是出租房屋的方式,通过观察链家租房数据集中的数据可以发现,租赁方式属性中包含的数据都为整租的租赁方式,对后面数据的分析和特征的提取没有帮助,所以将该属性剔除。房屋类型是出租房屋的结构类型,其中包括房屋的室、厅、卫的数量和房屋面积。房屋类型厅室的数据与房屋类型的数据相同。可能是在爬取的过程中对页面数据的范围选取有问题,导致不同名称的属性包含的数据相同。对于重复的属性,在开始的数据处理中采用删除操作。房屋类型面积是出租房屋的总面积,房屋类型属性的数据与后面面积属性的数据相同。所以在开始的数据处理中对面积属性进行删除。房屋类型精装修表示出租房屋经过精装修,未经过精装修或其它的数据用井号显示。经纪人是出租房屋所属经纪人,该属性包含的数据较多,并且还含有缺失值。朝向是出租房屋的面朝方向,包含东、南、西、北和它们的组合朝向。维护是距离上一次维护房屋的时间,数据用今天,几天前或者几周前显示。入住是可入住的时间,房屋的入住显示三种可入住时间,分别是随时入住,可以入住的时间以及用井号显示未标注的入住时间。楼层表示出租房屋的所在楼层。分别用高中低楼层和楼层数显示房屋的楼层。电梯表示出租房屋是否可以搭乘电梯。用有和无表示。车位表示出租房屋附带车位的情况,分别用免费使用,租用车位和暂无数据显示。用水、用电表示出租房屋的用水、用电方式,用水方式使用民水,商水,暂无数据显示;用电方式使用民电、商电、暂无数据显示。燃气表示出租房屋附带燃气的情况,用有、无、暂无数据表示。采暖表示出租房屋的采暖方式。用集中供暖,自供暖,暂无数据显示。租期表示出租房屋约定的租期,用几年以内,几个月以内,和暂无数据表示。看房表示出租房屋约定的看房时间,通过表示需要提前预约和一般下班后表示。付款方式表示出租房屋付款的方式,用季付和需咨询表示。租金表示出租房屋的月付金额。该数据集爬取的租房信息包含多个属性,但是其中一部分属性虽然名称不同但是数据相同,如房屋类型厅室、面积、押金、服务费、中介费等属性,对于数据的分析过程没有帮助,属于重复数据,所以剔除这些属性。还有部分属性如url、房源编号、租赁方式,这部分属性虽然不是重复数据,但是对房价数据分析无实际意义,所以同样需要剔除。原数据集没有行索引,所以还要给该数据集添加行索引。3.2数据特征处理3.2.1区域拆分转化首先对区域属性进行特征处理,该属性数据包含的是三个区域的字符串,所以要首先对字符做一个拆分,将一个区域字符串拆分成三个区域,分别是区域1、区域2和区域3。再分别对三个区域特征进行标签化。图3-2区域拆分转化流程图在进行字符串拆分的过程中采用的是split函数对以空格为分隔符的字符串进行分割,并利用lambd函数把值传递给apply函数,最后通过apply函数把把值存储到区域_1列表中。利用labelencoder函数对列表中的所有离散型数据转换成数值,再对数值特征进行标准化处理。最后得到数值型的区域特征。区域_2和区域_3的数据存储过程和数值化以及标准化过程也是如此。3.2.2日期提取通过datetime.datetime构造函数对房源维护时间数据进行提取,并利用lambd函数把值传递给apply函数,最后通过apply函数把值存储到新构建地列表号中。3.2.3房屋类型处理首先建立三个空列表用于存储房屋类型中室、厅、卫三个特征的数值。构建一个名为fw(房屋)的函数,re.findall正则表达式来获取室、厅、卫中三个特征的数值。通过append方法把数值存储到三个列表中。图3-2房屋类型处理流程图3.2.4房屋类型精装修处理房屋精装修属性只包含#和精装修两个标签,所以在replace方法中使用0和1来代替#和精装修。并最终存储到房屋类型精装修列表中。3.2.5维护时间提取构建一个名为wh(维护)的函数,把维护属性中为“今天”的数据作为0返回。其他包含数值的字符串用正则表达式提取数字。把结果最终村春到一个名为维护的列表中。图3-2维护时间提取流程图3.2.6入住时间提取先分别构建两个用来存储入住月份和入住日的列表。建立一个名为rz(入住)的函数,把入住时间属性中“随时入住”标签不存入列表中。再利用strptime方法分别提取入住月份和入住日。最后将值存储到新的列表中。图3-2入住时间流程图3.2.7楼层特征处理先构建一个列表,再构建一个名为lc(楼层)的函数,在函数中使用split方法对字符串进行切片,再返回楼层中高、中、低三个标签。最后利用labelencoder进行标签编码。把编码后的数值存储到列表中。3.2.8其他特征处理在对数据集进行特征处理的过程中,有一些标签的数据结构比较简单,只需要通过labelencoder方法对这些离散的数据进行数值化处理,并将最终的数据存储到列表中便完成了特征处理工作。对于一些含有重复数据的标签或者是与租金特征无关的一些标签未被存储到新的列表中,相当于对这些数据实现了删除操作。3.3特征重要性可视化在对初始的数据集进行特征处理后,得到了一个新的数据集。该数据集中的数据全部经过标签编码化处理,这样能够提升模型的训练效果。通过1:3的比例把数据集拆分成测试集和训练集。通过调用决策树模型,并经过决策树模型对数据的训练。通过来观察出数据中每个特征的重要性程度。 图3.3特征重要性从上面特征重要性一图中可以看到,区域_1、区域_2、区域_3、房屋类型面积以及楼层等特征的重要性相比于其他特征较高,说明这几个特征是影响租房价格的主要因素。3.4相关热力图通过观察特征重要性图,我们选择特征重要性在0.01以上的特征。这样得到了区域_1、区域_2、区域_3、房屋类型面积、经纪人、朝向、楼层、号等特征。 图3.4相关性热力图在图中可以看到,与租金相关性较大的特征为区域_1、区域_2、区域_3。表示区域特征对于租金价格的变化影响较大。3.5本章小结 本章介绍了数据的来源、数据结构和对数据的一些特征处理方法以及对特征的可视化过程。实验数据来源于网络博主通过爬虫技术爬取的2020年4月份链家网站北京市各个区域的租房数据。数据的属性包括单条数据的url,房源区域,房源维护时间,房源编号,租赁方式等。介绍了数据集中数据的结构。比如租赁方式是出租房屋的方式,通过观察链家租房数据集中的数据可以发现,租赁方式属性中包含的数据都为整租的租赁方式,对后面数据的分析和特征的提取没有帮助,所以将该属性剔除。房屋类型是出租房屋的结构类型,其中包括房屋的室、厅、卫的数量和房屋面积。房屋类型厅室的数据与房屋类型的数据相同。可能是在爬取的过程中对页面数据的范围选取有问题,导致不同名称的属性包含的数据相同。对于重复的属性,在开始的数据处理中采用删除操作。该数据集爬取的租房信息包含多个属性,但是其中一部分属性虽然名称不同但是数据相同,如房屋类型厅室、面积、押金、服务费、中介费等属性,对于数据的分析过程没有帮助,属于重复数据,所以剔除这些属性。还有部分属性如url、房源编号、租赁方式,这部分属性虽然不是重复数据,但是对房价数据分析无实际意义,所以同样需要剔除。原数据集没有行索引,所以还要给该数据集添加行索引。接下来是对数据特征提取操作。代码的展示通过流程图加文字介绍的形式进行演示。以区域划分特征提取为例。在进行字符串拆分的过程中采用的是split函数对以空格为分隔符的字符串进行分割,并利用lambd函数把值传递给apply函数,最后通过apply函数把把值存储到区域_1列表中。利用labelencoder函数对列表中的所有离散型数据转换成数值,再对数值特征进行标准化处理。最后得到数值型的区域特征。最后通过化特征重要性图来表示提取特征对租金特征的重要程度。相关性热力图表示的是各个特征之间的相关程度,相关系数越高,表示特征的关联程度越高。4基于XGBoost模型的租房价格预测4.1XGBoost模型通过引入XGBRegressor函数来完成XGBoost模型的建立。根据实验的经验总结,我设定了一些模型初始的参数。如:1.learning_rate=[0.01,0.05,0.1]2.n_estimators=[300,500,700,900]3.max_depth=[3,6,10,15]这些值是通过前人的经验总结给出的,这些值以字典的格式储存在param_grid中。4.2网格搜索调优我采用网格搜索的方法对模型中的参数进行调优。使用这种调优方式是因为这是目前最为广泛的对XGBoost模型进行参数调优的方式。网格搜索调优法的大致思路是通过给定的参数范围和评分标准。网格搜索对模型在给定参数范围的所有排列组合进行评分,选出最优的参数组合。评分的方式是通过网格搜索中包含的交叉验证方式实现的,交叉验证的参数通常回取一个特定的值。本次项目所选用的评分标准是r2评分标准,交叉验证参数是10。使用网格搜索方法按顺序依次对learning_rate(学习率)、n_estimators(优化树个数)、max_depth(树最大深度)的参数进行调节。最终得到的最优参数组合为:1.learning_rate=0.052.n_estimators=5003.max_depth=6r2评估指标的评估分数为0.8545,这表明经过调优后的该模型预测效果较好。4.3房租价格对比图这是房租价格对比图,横轴表示的是样本数量,纵轴表示的是租金价格。蓝色折线表示的是真实租金,黄色折线表示的预测租金。通过观察两段折线的拟合程度,可以看到两段折线的拟合程度较高,说明模型预测租金的结果比较准确。 图4-3预测对比图4.4本章小结本章介绍了XGBoost模型的参数选择,利用网格搜索法对模型参数进行调优。根据实验的经验总结,我设定了一些模型初始的参数。如学习率设置在0.01到0.1之间;优化树个数设置在300到900之间;树的最大深度设置在3到15之间。通过网格搜索的方法找到最优的参数组合模型。使用这种调优方式是因为这是目前最为广泛的对XGBoost模型进行参数调优的方式。网格搜索调优法的大致思路是通过给定的参数范围和评分标准。网格搜索对模型在给定参数范围的所有排列组合进行评分,选出最优的参数组合。评分的方式是通过网格搜索中包含的交叉验证方式实现的,交叉验证的参数为10。最终得到的最优参数组合为学习率0.05;优化树个数500;树最大深度6;最终r2评估指标的评估分数为0.8545,这表明经过调优后的该模型预测效果较好。最终画出一个房租价格对比图,用横轴表示的是样本数量,纵轴表示的是租金价格。蓝色折线表示的是真实租金,黄色折线表示的预测租金。通过观察两段折线
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度绿色餐饮采购标准合同3篇
- 二零二五年度冷链物流仓储管理服务合同2篇
- 2025年度苗木种植基地土地租赁合同样本(含品牌授权)
- 2025年度飞行员劳动合同(含飞行业绩奖励)4篇
- 中医师专属2024聘用协议模板版B版
- 个性化全新承诺协议文档(2024版)版B版
- 二零二五年度出租车公司股权置换及运营权转让协议3篇
- 2025年度个人商铺租赁税费代缴及财务结算合同4篇
- 二零二五年度农民合作社加盟社员入社合同范本
- 个人宠物寄养服务2024年度合同
- 皮肤内科过敏反应病例分析
- 电影《狮子王》的视听语言解析
- 妊娠合并低钾血症护理查房
- 煤矿反三违培训课件
- 向流程设计要效率
- 2024年中国航空发动机集团招聘笔试参考题库含答案解析
- 当代中外公司治理典型案例剖析(中科院研究生课件)
- 动力管道设计手册-第2版
- 2022年重庆市中考物理试卷A卷(附答案)
- Python绘图库Turtle详解(含丰富示例)
- 煤矿机电设备检修技术规范完整版
评论
0/150
提交评论