【《基于机器学习的S市房屋租赁价格预测实证分析》14000字(论文)】_第1页
【《基于机器学习的S市房屋租赁价格预测实证分析》14000字(论文)】_第2页
【《基于机器学习的S市房屋租赁价格预测实证分析》14000字(论文)】_第3页
【《基于机器学习的S市房屋租赁价格预测实证分析》14000字(论文)】_第4页
【《基于机器学习的S市房屋租赁价格预测实证分析》14000字(论文)】_第5页
已阅读5页,还剩27页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目录基于机器学习的S市房屋租赁价格预测实证研究摘要在当前生活中,房地产已经成为金融、股市、建筑等经济部门发展的重要动力,其产业对社会发展和国家的经济推进起到了极其重要的支撑和促进作用。住房租赁价格的高低直接影响着居民的生活质量和居住环境。国民经济与社会发展稳步上升的最重要的条件其中一条就是对于居民来说有合理的房屋租赁价格和完善的房屋租赁流程。而机器学习在各种领域都产生了重要的作用,在房地产产业起到了尤其重要的作用。本文通过从线上房屋租赁平台使用python语言爬取北京市各城区的房屋租赁信息。对所爬取的信息进行数据清理,缺失值填充等操作。并对可能影响房屋租赁价格的特征值例如:房屋面积,房屋经纬度,卧室数量等特征进行分析,最后使用线性回归和随机森林回归模型通过模型预测房屋价格。通过模型了解影响网上房屋租赁价格的相关因素,进而初步了解网上房屋租赁价格的定价规律。通过研究表明,随机森林回归模型与线性回归模型相比拟合度更高。而对于房屋租赁价格有影响的许多因素中,不仅与所租住的房屋面积、租赁房屋卧室的个数等租赁房屋户型因素相关,更与房屋所处的地理位置、距离商业圈的位置、所租住房屋是否在城市的主要商业城区有关,而房屋的租金还更与其他的影响因素相关,这让我们看到了房屋租价背后的组成的影响因素,更为我们在日后对房屋租金价格的研究提供了新的研究方向。关键词:机器学习;房租预测;线性回归模型;随机森林回归模型;目录TOC\o"1-3"\h\u13294摘要 第二章房租预测系统相关技术本章节将对以后需要使用的爬虫技术、数据库技术、jupyter平台以及机器学习部分理论原理进行分析与研究,介绍如下:2.1爬虫技术爬虫是一种能自动运行的脚本,它根据一定的规则自动抓取网络信息,从中为我们获取有价值的信息。爬虫能够按照作者的设定要求爬取下载数据或者获取内容。以下几个模块就是一个完成爬虫所包含的内容:1.HTTP下载器:负责HTTP下载,可以处理杂乱的互联网的信息。2.抓取队列:存储新生成的URL队列,可以是redis队列、数据库中的表、内存中的队列等形式存储。根据场景的不同,你可以自行选择。调度器:负责进行管理,他来决定URL响应的顺序。3.多线程模块:支持多线程,并且可控,实现海量数据的大批量爬取。排重集合:这是一个爬虫的重要组成部分。必须记录已收集的URL、未收集的URL、已收集的URL、未收集的URL和未收集的URL。你需要记录最后一次爬行的时间。4.页面解析器:定义如何解析捕获的页面。对于一般爬虫来说,它可能是一组用于所有页面的逻辑,即分词和索引。但是对于垂直爬虫,需要指定规则,手段包括正则、XPath、ORC图片识别等多种方式。5.数据存储:将爬虫按照解析规则解析的结果写入数据库中,对于大多数情况,大部分人选择存储到本地数据库中,也有写到NoSQL中,存到本地也是一种选择。6.结果提供服务:将爬虫的结果以批量数据的方式对外提供同步数据文件,或者提供WebSevice查询服务,按照实际需求情况。

爬虫爬取数据的基本流程分为:(1)发送请求:使用http库向目标站点发起请求,即送一个Requests,Requests包含请求头、请求体等。(2)获取相应内容:如果服务器在正常运行,则会得到一个响应包,响应包含:html,json,图片等信息。(3)解析内容:通过正则表达式、Beautifulsoup等。(4)保存数据存入数据库。爬虫运行流程如图2-1所示:图2-1爬虫运行流程2.2数据库技术数据库简而言之可视为电子文件柜,是存储电子文件的地方,用户可以对文件中的数据运行增、删、改、查等操作。数据库的存储结构可分为内中外三层,内层贴近真实数据的存储,外层更贴近用户以及在两者之间的概念层。本次实验数据库我选择采用Mysql数据库,主要是因为以下原因:(1)Mysql数据库对于数据处理以及事务处理非常方便与简洁,提供了多种数据库存储引擎,各个引擎各有所长,对于不同的情况都有很好的应对REF_Ref28260\r\h[5]。(2)Mysql支持windows/LINUX系统,并且支持多种开发语言。(3)Mysql数据库面向所有用户完全免费,用户可以通过网络直接下载。安全性高,兼容性强,提供的数据存储容量大。2.3机器学习相关理论2.3.1机器学习概述机器学习的创始人亚瑟·塞缪尔(ArthurSamuel)早在1959年就定义了机器学习(machinelearning,ML):机器学习就是这样一个研究领域,它使计算机能够在不依赖特定编码指令的情况下自主学习。ArthurSamuel不仅仅是对机器学习进行了定义,他还开发了一个机器学习的系统,能够通过使计算机在与人下跳棋的过程中进行学习人类的技巧,通过无数次的与人类的博弈之后,ArthurSamuel的定义的机器能够和自己的棋艺相当。到了1998年,TomMitchell对机器学习的定义做了更好的定义。在《机器学习》这本书中引入了三个概念:经验Experience(E)、任务Task(T)、任务完成效果的衡量指标Performancemeasure(P)。也就是所对于某些类型的任务T和性能度量P,如果一个计算机程序在任务T上的性能P来度量REF_Ref25060\r\h[12],并且通过了经验E实现了性能的提高,则称该计算机程序从经验E中学习的。在机器学习中,T代表要实现的任务,任务的类型有很多种,例如分类、回归等。任务T确定了性能指标P,例如分类任务的分类准确率,回归任务的预测误差等。经验E则表示学习过程的学习方式,例如有监督的学习,无监督的学习等。机器学习主要目的是使计算机程序能够对人类的行为进行模仿,从而使计算机不断提高从数据中学习的能力。在本质上,机器学习就是对已经给定的一些样本数据,通过人为设定的算法,实现计算机独自进行分析数据和挖掘出数据中存在的某种联系,根据这种规律来进行预测。2.3.2机器学习实现步骤机器学习的整个实现步骤包括了对原目标网站信息的获取、多获取的数据进行预处理、模型学习、对所建立的模型进行评估等步骤,机器学习的实现步骤如图2-2所示。图2-2机器学习实现步骤(1)数据获取:从目标网站上获取自己需要的数据,数据的准确与真实性关乎到了后面模型训练时的结果和预测结果的准确性。(2)数据预处理(特征工程):数据预处理是在机器学习中非常重要的一部分,数据准备对于数据是否科学是非常重要的。劣质数据会对是研究结果造成影响,因此,在将数据投入机器学习模型前,要将数据进行模型建立前的预处理。对数据进行数据归一化与数据单位的标准化以及缺失值的填充与数据集的切分都非常重要。对数据特征值的处理得当还对之后进行机器学习的模型训练准确起到促进作用。(3)模型选择:模型的选择对机器学习的结果起着决定性作用。任何分类算法都有其局限性,事先对问题进行分类然后选择相对应的模型能够得到更优的结果。(4)模型训练:对选择好的模型使用已经从数据集中划分的训练数据集进行训练,利用训练集的训练使模型的效果能够达到预期结果。(5)模型测试:在模型训练完成后,需要使用划分好的测试集对已经训练好的模型进行测试,测试的结果可以直观的反映模型的好坏。(6)结果预测:通过给模型新的特征值,获取你想得到的结果。2.3.3线性回归模型线性回归模型是最经典的模型之一,广泛应用于各个行业。一元线性回归预测方法是根据自变量x和因变量y之间的相关性,建立x和y的线性回归方程进行预测。因为对影响因变量y的因素有很多,通常不仅仅是单一的一个因素。因此,有必要运用一元量线性回归分析和预测方法,对影响市场现象的各种因素进行综合分析。只有当众多因素中有一个因素对因变量的影响显著高于其他因素时,才能作为自变量,应用一元变量相关回归分析的市场预测方法进行预测。对于线性回归模型来说,一般形式为:式中Y为因变量,X=(X1,X2,X3,···,Xn)为n个影响Y的自变量,β1,β2,···是模型参数。当n=1是,此时式子中的模型为一元线性回归模型;n≥2时,此时式子中的模型为多元线性回归模型。在解决实际问题应用中,观察n组数据,在这种情况下,多元线性回归模型是:变成矩阵形式则为:其中多元线性回归是经典的回归理论,需要满足以下条件:(1)X1,X2,XP为确定的变量,并非是随机变量。(2)各解释之间不存在严格的多重共线性。(3)正态分布的假定条件为2.3.4随机森林回归的基本原理决策树的基本概念决策树(decisiontree)是一种常用的机器学习方法。它模拟树的形状。树中每一个分支的叶节点表示属性上的一个测试,每个分支表示一个测试输出,每个叶节点表示一个类别。运用决策树拟合的方法就是从树的根节点开始,根据每个不同的叶节点做出选择,然后根据选择出的叶节点指向的下一个叶结点继续做出选择,循环往复,直至最终的叶结点,这就是拟合的答案。一般来说,决策树包含一个根节点、若干个内部节点和若干个叶节点;所述叶节点对应于所述决策结果,所述其他节点对应于属性测试;根据属性测试结果,将每个节点包含的样本集划分为子节点;根节点包含完整的样本集。从根节点到每个叶节点的路径对应于决策测试序列。决策树学习的目的是生成一棵具有较强泛化能力和处理能力的决策树REF_Ref27519\r\h[13]。决策树的生成是一个递归过程。在决策树的基本算法中,有三种情况会导致递归返回:(1)当前节点中包含的所有样本都属于同一类别,不需要分割(2)当前属性集为空,或者所有样本在所有属性上的值都相同,因此不能分割(3)当前节点中包含的样本集为空,无法分割。随机森林的概念随机森林这种分类算法是由LeoBreiman在2001年提出的,该分类算法利用自助法(bootstrap)重采样技术,从原始数据集中先取出n个样本再将n个样本放回数据集,一致重复此步骤,直到生成用来训练决策树的新的样本集,再根据上述步骤,生成m个决策树,形成一个随机森林,新数据的分类结果由分类树投票数形成的分数决定。其实质是对决策树算法的改进和多决策树的组合,每个决策树的建立依赖于独立的样本。单个树的分类能力可能很小,但在随机生成大量决策树后,测试样本可以根据每棵树的分类结果选择最有可能的分类。随机森林大致过程如下:(1)从样本集中有放回随机采样选出m个样本;(2)在该样本所具有的所有特征中无差别随机选择k个特征,对选出的样本利用这些特征建立决策树;(3)重复以上两步a次,就能形成a个决策树,随后随机森林就会成形;(4)对于新的数据,经过每棵树的决策后,最终经过投票被分到其中一类。经过大量研究,发现了随机森林模型在实际应用中具有以下优点,例如:在数据选择中存在多种特征,每棵树随机选择特征,这对于随进森林来说增加了抗燥能力并且增强了稳定性;每棵树对于选择分支的特征值时,都是选择其中一个树枝的特征值,在一定程度上减少了过拟合的状况;该方法策略适合进行并行计算,对于处理大数据的问题有很大竞争力。不过,对于随机森林模型也发现了以下缺点:随机森林方法对基础模型的选择较为敏感,参数设置较为复杂;尽管能一定程度上避免过拟合,然而,当随机森林的预测超出训练集的范围时,某些特定的噪声数据仍然会出现过拟合;相比于其他模型,模型训练和预测速度较慢。决策树有如下信息增益,增益率和基尼指数等常见的几种度量方式:(1)信息增益 信息熵公式定义:其中m为分类个数,Pa为第a个类别的所有样本数量占所有样本的数量比例。这个公式衡量的是带分类样本即整个数据集D的熵,分类上的样本数越小,分类效果就越好。 由属性A划分为子集的熵:A为特征,它包含了N个不一样的值,S划分为N个子集S1,S2,信息增益为,分裂点的决定方式为采取具有最新信息增益的特征为分裂点。(2)基尼指数基尼指数要求树是二叉树,衡量的是数据集D的不纯度,基尼指数定义为:通常分裂属性选择基尼系数分割最小的属性。随机森林实现过程随机林中的每棵树都是一棵二叉树,其生成遵循自顶向下的递归分裂原则,即从根节点依次划分训练集:(1)当训练集的大小为n时,在每棵树中随机选择n个样本,作为树的训练集。随机抽样的原因是训练树的分类结果不同。(2)设每个样本的特征维度为M,有m(m<M)个特征子集,则从这m个特征子集中选择最优的的(3)对于每个树都不进行剪枝过程,使其最大生长2.4jupyternotebook及其程序库2.4.1jupyternotebookJupyternotebook是运行在网页端的用于人机交互的计算的网页程序。Jupyter可被应用于计算全过程:进行开发工作、编写说明文档、运行编写的代码和进行代码结果的可视化的展示。总之,JupyterNotebook是在网页端打开的,可以在网页页面中直接进行代码编写和运行代码,代码的运行结果也会直接显示在所编写的代码块下面。如在编程过程中需要编写描述文档,可在同一个页面中直接编写,便于作及时的说明和解释。Jupyternotebook由web应用程序和文档组成。在网页中,可以编写文档、导入公式、进行计算交互等其他形式的工具。总之,Jupyter网页应用可以实现很多功能。JupyterNotebook中所有交互计算、文档、数学公式、图片以及其他富媒体形式的输入和输出,都是以文档的形式体现的。这些文档是保存为后缀名是.ipynb的JSON格式文件,对于版本控制来说非常方便,而且对于其他人来说共享也非常方便。此外,文档还可以导出为:HTML、LaTeX、PDF等格式。Jupter具有以下特点:(1)编辑代码时可以进行缩进代码段、进行tab补全函数、对代码语法进行高亮显示等的功能。(2)可以在浏览器上直接运行代码,并且在代码下面显示运行结果。(3)以富媒体格式展示计算结果。(4)使用MarkDown语句对所输入的代码进行编写注释或者对所输入的文字进行文档编辑。(5)可以编写数学性说明。2.4.2PandasPandas是一个对所有人都开放源码与BSD许可的库函数,提供能对所拥有的数据进行处理与分析等的工具。其基础是Numpy数组。Pandas可以从各种文件格式如CSV、JSON、SQL等导入数据。Pandas可以对各种数据进行运算操作,比如并归、选择,还有数据清理等操作。Pandas的主要数据结构是单行数据(series)与表格数据(DataFrame),这两种数据结构常常用于处理社科、金融领域、生物医学领域与工程等领域里的数据处理部分。第三章数据来源与分析处理在本章将介绍数据的来源情况,进而对获得的数据进行处理,为后续建模进行数据的准备工作。 3.1数据来源3.1.1数据获取本文中所使用的数据均来自网络爬虫所爬取的数据。Python面向所有用户免费使用,并且可使用很多计算库。所以使用Python对链家网对北京市所有的租房信息进行爬取。租房信息在链家网上的信息如图3-1所示:图3-1租房信息在上图中为房源信息的大致信息,显示了房屋名称、房屋所在城区、房屋所在街道、所在小区、面积、朝向、房型与价格信息。这些信息是需要爬虫爬取的,然而这些房源信息对于以后进行数据分析与预测时并不足够,所以需要爬取更具体的信息。此时打开房屋的详情页,爬取详情信息。房屋详情信息如下图3-2所示:图3-2房屋详情信息如上图所示中,需要的数据不仅是在主页数据,还有楼层高度、是否有电梯、是否有燃气等详细具体数据。此时,需要的数据已经记录完成。网络爬虫对网页的数据进行爬取信息时,需要对目标URL发送请求然后获取相应内容、解析获取的内容最后保存数据四个部分,流程图如3-3所示:图3-3流程图发送请求:对链家网租房信息的主页发送请求,获取链家网租房信息主页的URL。通过观察不同城区的租房页面发现网址URL的主体部分没有改变,不同的城区与不同的分页只是在URL主体后加入了城区名称与页码,URL主题部分为:/zufang/,例如东城租房第一页的信息则为:/zufang/dongcheng/pg1。拥有主站URL后发送请求需要使用requests库来实现。requests库提供两种发送请求的方法:get()和post()。本次实验使用的是get()方法。在对网页进行爬取时还需要进行网页(user-agent)伪装,防止主站对爬虫进行识别并禁止爬取数据。获取响应内容:对响应的主站内容进行获取,得到主站源码,方便进行下一步的数据解析获取。解析数据:对网页数据进行解析。解析方法有正则解析、xpath解析、BeautifulSoup等。在本次实验中我使用的是xpath解析来获取我所需要的数据。xpath解析主要是使用html标签进行定位,通过对一个个标签筛选定位需要的数据。网页数据源码如图3-4所示:图3-4网页数据源码使用xpath来定位各个标签中我所需要的信息可以方便的获取信息。在对房源地址爬取时我使用了百度所提供的根据具体位置信息显示经纬度的接口。获取房屋位置经纬度可以使之后分析数据时更加准确。数据存储:将所获取的信息进行持久化存储,可以存储到数据库或者本地文件。本次实验我将数据存储到了mysql数据库和本地的csv文件。存储到数据库是持久化的存储,不用担心数据丢失。存储到本地可以方便之后对数据分析时读取数据。数据库信息如图3-5所示:图3-5数据库存储信息爬虫主要代码如图3-6所示:图3-6爬虫主要代码存入数据库代码如图3-7所示:图3-7存入数据库代码3.1.2数据描述本次的实验数据爬取了链家网北京市西城、海淀区、丰台区、朝阳区、东城区、石景山区、顺义区、昌平区、门头沟区、亦庄开发区、通州区、房山区、大兴区、怀柔区、平谷区、密云区、延庆区共计18个区的租房信息。部分抓取信息如图3-8所示。爬取的数据经过统计共计45769条,共15个特征数据。包括房屋名称、价格、城区、街道、房屋面积、经度、纬度、房屋所在楼层高低、高度、朝向、该楼层是否有电梯、是否有燃气、该房间卧室数量、客厅数量、厕所数量。各个特征对应的存储名称如表3-1所示。图3-8部分爬取信息表3-1存储数据属性中文属性名称存储属性名称房屋名称title价格price城区chengqv街道jiedao面积area经度lng纬度lat楼层高低loucenggaodu楼层高度gaodu朝向chaoxiang是否有电梯dt是否有燃气rq卧室数量fangjianshuliang客厅数量ketingshuliang厕所数量cesuoshuliang3.2数据预处理3.2.1数据清洗原始数据由于在爬取过程中可能会丢失数据,或者产生了错误的数据,不进行处理的话会对后边数据分析的结果产生影响。因此,数据清洗是对数据进行预处理时不可缺少的步骤,其中最重要的就是进行处理缺失值和处理异常值。(1)首先读取已经爬取完成的数据,本地存储为csv文件,读取csv文件里的内容,显示其中存储的数据内容。查看数据的存储存储情况,并观察数据是否有异常值。数据读取代码以及结果如图3-9所示:图3-9数据读取部分观察读取爬取后的数据,从爬取各个特征值的字段列查看的数据类型发现,在客厅数量和厕所数量这两列,爬取时应当是设置爬取的纯数字,但从数据类型中发现数据字段为Object型,为非纯数字类型。客厅数量和厕所数量这两列存在错误值,在之后进行数据清洗时应对这两列的错误数据进行处理。(2)在本次实验中,数据清洗我选择对空缺值或者错误值进行填充法,无法填充的数据再使用删除法进行处理。填充法用在缺失率小且属性重要程度低时,填充包括全局常数填充、统计方法填充和模型预测填充。全局常数数量填充用全局常量填充特征的所有缺失值,也可以将其划分为不同类别的样本为均匀填充选择不同的自定义值。虽然方法操作方便,但由于存在偏差,不太可靠。问题在于原始数据的分布。统计方法填充的原理与全局常数填充的原理相似,但不同之处在于统计平方该方法使用具有统计意义的值来填充,例如,根据所有样本上每个一维特征的平均值模型预测填充是基于机器学习模型的,它使用的是无缺失值或缺失值较少的数据特征用于预测和填充缺失的特征。模型预测填充优于全局常数填充和统计方法填充复杂,但填充效果更好。删除法用在缺少样本的大部分特征,可以直接删除样本。如果缺少大部分功能,该功能可以提供效率较低的信息,可以直接删除。尽管样本被删除或特征被删除,处理缺失值是最简单、最直接的方法,但留下的样本不能完全反映原始数据的分布,学习结果与实际情况不符。该方法只适用于训练集的数据很多,并且数据的特征值很多的情况。数据清洗过程如图3-10所示:图3-10数据清洗过程3.2.2类别型特征处理在对模型进行建模时,数字化的数据对模型训练和模型预测时都占有优势,而文字化的特征值在数据建模时却非常麻烦,所以对数据进行量化是必不可少的一步。也就是进行类别型特征处理。处理类别特征时有以下这些方法:(1)序号编码:通过编码的目的是通过数字和值的一对一映射来实现的。但适合处理规模关系的特点,如教育程度由低到高只对应数量由小到大,而不改变特点。如果用它来处理没有任何大小关系的特征,比如出生城市,所有城市都是同一级别的,但是在转换成数值后,莫名其妙地增加了一层大小关系,这对于数值尺寸敏感模型(如SVM支持向量机)是致命的,因为它会对函数计算结果造成影响。(2)独特编码:将原始特征变量转化为原始特征值分类的多维变量,用0/1来量化每个维度的是/否和是/否。一般来说,将每个值作为一个新特征。在一行数据中,如果得到这个值,它将是1。如果你没有得到这个值,它将是0。优点是:1.没有数值大小关系,支持向量机也可以自由使用。2.有效降低了过度拟合的风险。而相应的缺点则为:1.如果值太多,很可能会分割出大量的新特性,导致维数过高,难以处理。2.非常不适合树模型。如果有许多特征,并且这些值的数量很小,则由于树模型的参数配置,某些特征变量可能无法向下分裂。(3)平均数编码:平均数编码主要用于处理高基数类别型特征在本次实验中,我使用独热编码,可以量化的特征值有房屋是否有电梯,是否有燃气以及对所在城区。量化过程如图3-11所示:图3-11量化数据过程量化后的数据如图3-12所示:图3-12量化后数据3.2.3数据标准化因为房屋租价受到多方位因素的影响,各个特征具有不同的量级,直接使用原始数据对模型进行预测,可能会影响模型的准确性。为了消除特征之间单位和数量级的差异,有必要对数据进行标准化。标准化的实质是按一定比例对数据进行缩放,使数据处于特定的区间。标准化过程如图3-13所示:图3-13数据标准化过程3.3数据分析3.3.1对房屋价格进行分析首先,对北京市出租房屋价格进行分析,对房屋的面积和价格进行散点图的绘制,将房屋面积固定为横轴,将房屋出租价格设定为纵轴,观察样本数量与分布,如图3-14所示。通过观察散点图发现,大部分出租房屋面积都集中在50-150平方米,价格分布集中在10000元左右。图3-14面积/价格散点图对房屋城区进行分组统计,对数据中的城区进行分组,分组详情如下图3-15所示:图3-15房屋城区分组在对房屋进行分组统计后,按城区分组计算每个城区房屋出租的平均价格和平均面积,计算出每个城区的房屋出租每平米均价,并绘制柱状图方便进行分析。城区房屋平均价格和平均面积柱状图如图3-16所示,城区房屋每平米均价如图3-17所示:图3-16北京各城区房屋均价和房屋面积图3-17北京各城区每平米租房价格通过观察柱状图发现,在北京各城区中,朝阳、海淀、西城的房租价格在北京各城区中位列前三,朝阳的平均房屋出租价格最贵,延庆的房屋出租价格最低;密云、延庆、朝阳的房屋出租面积排名前三,密云房屋平均面积最大;西城、东城、海淀房屋每平米出租均价在各城区中排名前三,西城房屋每平米出租均价最高。如果资金预算不高,可以选择延庆的房屋进行租住;喜欢房屋面积大的可以选择密云的房屋;如果资金预算不足,但又想租到房屋面积稍大的,可以选择延庆的房屋进行租住。3.3.2房屋信息分析对房屋本身的信息进行分析,对爬取的房屋信息的卧室数量,客厅数量,厕所数量进行分组统计,统计卧室、客厅、厕所各个数量的统计,统计图如3-18所示:图3-18卧室数量统计图3-18厕所数量统计图3-18客厅数量统计经过统计,结果如图。在出租的房屋中卧室数量为2个的出租房屋最多,厕所数量为1个的出租房屋最多,客厅数量为1个的出租房屋最多。将房屋信息进行经纬度的散点图的统计,发现大多数房源信息集中在经度115-117.5,纬度集中在40左右。将房屋价格和经纬度绘制成热力图,并将数据显示在北京的地图上,得到如图3-19:图3-19房租价格热力图通过热力图和经纬度的散点图发现,北京的房屋出租大多集中在五环以内,大多集中在朝阳、海淀、西城区。越靠近城区的房屋出租价格越贵。第四章房租价格模型建立与预测4.1训练集与测试集划分在训练模型之前,通常将已有的数据分为测试集和训练集。训练集用来建立并训练模型调整参数,拟合曲线的参数则由训练集的数据进行确定。测试集的目的只是为了测试已经训练好的模型的精确度,但训练集并不能保证模型的正确性。因为当模型被训练时,使用对现有训练集里的数据进行修正可能会出现过拟合的状况REF_Ref727\r\h[14]。在对数据集进行训练集与测试集划分的时候,通常用留出法、交叉验证法、自助法等方法,具体说明如下:(1)留出法:将数据集划分为两个互斥的集合,一个集合作为对模型训练的训练集,另一个集合作为模型的测试集。在训练集上训练模型后,使用测试集对模型进行评估。在划分中,训练集和测试集的划分应尽量保持数据分布的一致性,避免数据划分的偏差影响结果。留出法的另一个问题是,测试集与训练集划分的比例的确定。如果训练集占的比例过高,可能导致导致训练出的模型不准确。相反也会导致训练模型的误差。由于没有具体的解决办法,所以常见的做法是将2/3-4/5的样本用作训练集。(2)交叉验证法:将数据集分成相似大小的不相交的子集。尽管它们的分布是不同的,但为了使它们与数据集尽可能一致,于是对从样本中获得的数据进行了分层,这是在指定样本获取子集经过分层抽样的原因。此后,当将m-1的组合子集用作训练集,其余部分用作测试集时,这样,就可以获得训练集或测试集,进行了m次训练和测试,最后返回了m项测试结果的平均值。通常K取10,则为10折交叉验证。交叉验证的优点是从有限的数据中挖掘出尽可能多的信息,从多个角度学习现有的有限数据,避免局部极值。但对于拥有较大数据的数据集来说,训练模型的花费时间也会变长。(3)自助法:给给定N个样本的数据集E,对其进行采样以生成数据集E',并且每次将随机选择E的样本并将其复制到E'。在经过n次处理之后,能够从中得到包含n个样本的数据集E′。当数据集较小且难以有效划分训练集/测试集时,自助方法更为有效。然而,bootstrap方法生成的测试集改变了初始数据集的分布,从而导致错误。所以,对于数据较大的数据集来说,采用保留法和交叉验证法是较为优秀的选择。在本次实验中,数据集共4万多条,对于庞大的数据集来说我选择留出法来划分训练集与测试集。而8-2分数据集是最科学的划分训练集与测试集的方法。在爬取数据时,数据的排序是根据城区来排序的,如果顺序取8成数据集进行模型训练的话,可能由于北京各城区房价较大的差距导致模型训练的不准确性。所以在本次实验中,我从样本集中随机选取8成训练集。训练集与测试集样本如下图4-1所示:图4-1部分训练集与部分测试集4.2数据相关性分析在对各个特征值与房屋租赁价格的关系进行进一步探究之前,需要对数值型的数据进行相关性分析,可分析的特征值有房屋租赁面积、房屋所在经度、房屋所在纬度、房屋楼层高度、房屋卧室数量、客厅数量、厕所数量。分析结果如图4-2所示,从图中的分析结果中不难发现房屋出租价格与房屋面积最为相关,其次与厕所数量、房屋卧室数量、客厅数量也较为相关。然而与楼层高度是否有电梯等信息因素无关。故建立模型时应选择与房租价格相关的特征值进行模型的建立。图4-2房屋租赁价格相关性4.3模型的建立与预测4.3.1线性回归模型对影响房租价格最明显的因素:面积进行二维线性回归模型的建立。从训练集中筛选出面积的数据集,对以房屋出租价格为因变量,房屋面积为自变量的模型建立,并使用测试集对所训练的模型进行测试分数。最后进行对特定房屋面积的房租进行预测。二维线性回归模型拟合曲线如图4-3所示,预测价格如图4-4所示:图4-3二维线性回归模型拟合曲线图4-4线性回归模型价格预测对多维线性回归模型进行建立,挑选已经数字化的特征值,进行模型的建立,并进行房租价格的预测。预测结果如下图4-5所示:图4-5预测结果通过观察模型得分,以及预测结果,可以看出更多维的线性回归模型,即多个特征值对房租价格的限定更高,得到的结果也更准确。4.3.2随机森林回归模型首先使用单个特征值:面积,对房屋出租价格模型进行建立,模型建立分数如图4-6所示,并使用建立的模型进行预测,预测结果如图4-7所示:图4-6随机森林回归模型图4-7预测价格然后使用已经数值化的特征值进行模型的建立,并对房屋的租价进行预测。模型建立的过程如图4-8所示,预测结果如图4-9所示:图4-8模型建立图4-9房租价格预测结果通过对模型进行测试的分数,以及预测结果来看,无论是单个特征值,还是多个特征值,随机森林回归模型都要比线性回归模型更加优化,并且预测结果更加准确。第五章总结与展望随着互联网的飞速发展,大数据已经成为一个热门话题和趋势。而对于房屋租住一直是人们所热

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论