Python爬虫武汉市二手房价格数据采集分析:Linear Regression、XGBoost和LightGBM|代码分享...

news2024/11/17 15:51:36

全文链接:http://tecdat.cn/?p=31958

分析师:Yan Liu

我国有大量的资金都流入了房地产行业,同时与其他行业有着千丝万缕的联系,可以说房地产行业对推动我国深化改革、经济发展、工业化和城市化具有不可磨灭的作用点击文末“阅读原文”获取爬虫代码)。

目前对于二手房交易价格的预测主要考虑的是房屋价格受宏观因素的影响,如国家政策、经济发展水平、人口数量等,并据此推测地区房价及其走势,很少有从微观的角度来准确预测每间房屋的价格。

相关视频

解决方案

任务/目标

从区位特征、房屋属性和交易指标3个角度,选取包括所属区域、建筑面积、楼层高度、周边银行数量、学校数量、电影院数量等在内的多维度特征,帮助客户来预测二手房的挂牌价格,实现基于数据的科学决策,做到一房一价的精准预测。

数据 获取

(1)在链家网上,武汉市区域被划分为15个区,共107个街道,每个页面展示30条房屋数据,通过翻页最多可以达到100页,即3000条数据。为了能尽可能保证抓取到链家上所有的数据查看文末了解爬虫代码免费获取方式,根据深度优先算法思想,采用先遍历区域,再遍历街道的遍历思路来设计爬虫。

ea1c3e0f0edfde0e4f537fc696b402ec.png

(2)周边配套设施,房屋所在小区的经纬度数据可以从网页源代码中获得,其关键词为:resblockPosition。通过调用百度地图API可以获得上图所示的周边配套设施数量,涵盖了交通、教育、医疗、购物、生活、文娱共6大类,19个特征变量。

57456c61a774b427d8639c32b5a4ef84.png

特征 预处理

(1)缺失值处理

通过对数据缺失值统计发现有8个变量存在缺失值:

6ab691bf113aa457dc5ca59db90f8bc6.png

分别使用剔除法、填充法来处理缺失值。houseStructure共有四种类型:平层、复式、错层、跃层。考虑到位于同一小区的房屋,其房屋类型大多相同,故采用此方法对缺失值进行填充:对于缺失houseStructure的房屋A,根据community_id(所属小区ID)统计出与A同小区的所有房屋,再统计出这些房屋的houseStructure的众数对A进行填充。buildingTypes、liftEquip和premisesOwnership采用和houseStructure同样的填充方法。propertyFee数据的缺失选择使用均值填充法。

分类变量的处理

对于分布极不均衡的分类变量予以剔除,对于其他分类变量做硬编码或独热编码处理

数值变量的处理

buildingTime:建成年代,数据格式均为年份(如:2018),处理方法为构造新的变量YearsDelta,其值等于2020年与其差值。

通过三σ法则剔除异常值。周边配套设施包含了一公里内的地铁站数量、幼儿园数量、医院数量等19个数值变量,通过绘制分布直方图发现不少变量的分布存在偏态。

424bf36bff2b0206b09e8b97bc251213.png

分别予以剔除或是将数值变量转换为二分类变量。

数据变换

通过绘制变量分布图,发现totalBuildings、totalHouses、totalDeals和Yearsdelta呈现出较为明显的右偏分布,而呈现偏态分布的数据是不利于最终所构建模型的效果的,因此需要对这几个变量进行纠偏处理,采用的方法为Johnson变换。

932a5d2b8ff16926d39f7764c14a6359.png

上述变量经过此方法处理前后分布对比图如下,显然,经过处理后的变量分布已近似于正态分布。

1751cd8fd85c7639637ea5b5680958cc.png


点击标题查阅往期内容

b35740fc0826825503b8a37d9330d660.jpeg

Python对商店数据进行lstm和xgboost销售量时间序列建模预测分析

outside_default.png

左右滑动查看更多

outside_default.png

01

f5853a5dde5fb3550414d3dd0b2ebc90.png

02

5000959d44351e9c25d4add3474ce0c7.png

03

3b8666d88048b2bae4d2247dbab00418.png

04

b2334047ff800d99e192a59708a7e371.png

建模

分别建立Linear Regression模型、XGBoost模型和LightGBM模型,通过比较模型性能(评价指标使用MSE、MAE、R square)优劣,选出效果最佳的预测模型。

XGBoost和LightGBM模型的参数很多,参数取值不同,模型的性能也会有差别,因此需要对其主要参数进行调优,找出最佳参数组合。常用的调参方法为GridSearchCV(网络搜索法)和RandomizedSearchCV(随机搜索法),采用GridSearchCV进行参数调优。

XGBoost模型调优后的参数:

216bd1e7a8ee3baaf8d11074dedc861d.png

LightGBM模型调优后的参数:

b17351e03927d749fad7f12fd7727fa5.png

模型性能对比

房价预测问题是一个回归问题,属于监督学习范畴。对于所得到的模型,其对未知数据的泛化能力直接决定了模型的性能优劣。因此为了对比不同模型对于未知数据的表现效果,采用十折交叉验证进行模型验证。

三种模型的10折交叉验证在测试集性能评估:

013c109d092c2cf06dd0e33e37a722e8.png

三种模型在测试集上预测情况对比:

2510676f87efd7da24a856337b0b50b5.png

调参后的XGBoost模型和LightGBM模型训练出的各个特征的重要性打分排序对比:

a42c09b50019066fc38ff0ba014d5f3e.png

可以看出,buildingArea特征重要性得分最高,与小区情况有关的5个变量得分都排在前列;与房屋属性相关的变量,如houseFloor、houseDecoration等,得分均位于中游,对房价的影响不大;属于房屋周边设施的变量,如subwayStation、park、stadium等,得分普遍都很低,对房价影响很小。

从区位特征、房屋属性和交易指标3个角度,从链家网上通过Python网络爬虫有针对性的获取武汉市二手房成交记录中的特征数据。对原始数据通过一系列预处理,运用机器学习中的XGBoost算法、LightGBM算法和GridSearchCV算法,对处理后的数据进行建模与参数调优。将两种模型在测试集上的预测效果与训练好的Linear Regression模型进行对比,XGBoost和LightGBM在预测效果上有着显著优势。通过XGBoost和LightGBM模型学习后的特征重要性得分可知,在三类因素中,房屋建筑面积对房价的影响最大,反映房屋所属小区情况的变量重要性得分均排在前列,而其他房屋自身属性、周边配套设施的变量对价格影响较小,与大众的直观感受基本吻合。

数据获取

在公众号后台回复“爬虫代码”,可免费获取完整爬虫代码。

723f9b9c86b9fd3cfe7fa0c8d15170d3.jpeg

本文中分析的爬虫代码分享到会员群,扫描下面二维码即可加群!

49dd513534bf3d2613dbdd90103e7e84.png

关于分析师

e76c36a1ca337524bca084104eead935.png

在此对Yan Liu对本文所作的贡献表示诚挚感谢,他擅长数据采集、机器学习、深度学习。

fcb9f67f2ac777fa43f6b0349fe10390.jpeg

点击文末“阅读原文”

获取全文完整代码数据资料。

本文选自《Python互联网大数据的武汉市二手房价格分析:Linear Regression模型、XGBoost模型和LightGBM模型》。

0fa54d65f054c0ddace6dc01fa75b67e.jpeg

3a661cc7b648e3afeb9d997f45b6396e.png

点击标题查阅往期内容

Matlab用深度学习长短期记忆(LSTM)神经网络对文本数据进行分类

RNN循环神经网络 、LSTM长短期记忆网络实现时间序列长期利率预测

结合新冠疫情COVID-19股票价格预测:ARIMA,KNN和神经网络时间序列分析

深度学习:Keras使用神经网络进行简单文本分类分析新闻组数据

用PyTorch机器学习神经网络分类预测银行客户流失模型

PYTHON用LSTM长短期记忆神经网络的参数优化方法预测时间序列洗发水销售数据

Python用Keras神经网络序列模型回归拟合预测、准确度检查和结果可视化

Python用LSTM长短期记忆神经网络对不稳定降雨量时间序列进行预测分析

R语言中的神经网络预测时间序列:多层感知器(MLP)和极限学习机(ELM)数据分析报告

R语言深度学习:用keras神经网络回归模型预测时间序列数据

Matlab用深度学习长短期记忆(LSTM)神经网络对文本数据进行分类

R语言KERAS深度学习CNN卷积神经网络分类识别手写数字图像数据(MNIST)

MATLAB中用BP神经网络预测人体脂肪百分比数据

Python中用PyTorch机器学习神经网络分类预测银行客户流失模型

R语言实现CNN(卷积神经网络)模型进行回归数据分析

SAS使用鸢尾花(iris)数据集训练人工神经网络(ANN)模型

【视频】R语言实现CNN(卷积神经网络)模型进行回归数据分析

Python使用神经网络进行简单文本分类

R语言用神经网络改进Nelson-Siegel模型拟合收益率曲线分析

R语言基于递归神经网络RNN的温度时间序列预测

R语言神经网络模型预测车辆数量时间序列

R语言中的BP神经网络模型分析学生成绩

matlab使用长短期记忆(LSTM)神经网络对序列数据进行分类

R语言实现拟合神经网络预测和结果可视化

用R语言实现神经网络预测股票实例

使用PYTHON中KERAS的LSTM递归神经网络进行时间序列预测

python用于NLP的seq2seq模型实例:用Keras实现神经网络机器翻译

用于NLP的Python:使用Keras的多标签文本LSTM神经网络分类

8f7991ad0577fdb278482f64368cbcd3.png

cdc2e4664d1007b5f75e0fbe6255018d.jpeg

46c634f24d5a83af6146b7b3633e5607.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/946977.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Ubuntu 23.10 将首次推出基于 Flutter 的新 Ubuntu 商店

导读Ubuntu 正在升级其软件商店以提供顺滑的体验! 随着不断发展,Canonical 似乎全力以赴,将基于 Flutter 的元素整合到 Ubuntu 中。 在前段时间 Ubuntu 23.04 发布后,我们见到了基于 Flutter 的安装程序 ,现在&#x…

PyTorch 模型性能分析和优化 - 第 3 部分

这[1]是关于使用 PyTorch Profiler 和 TensorBoard 分析和优化 PyTorch 模型主题的系列文章的第三部分。我们的目的是强调基于 GPU 的训练工作负载的性能分析和优化的好处及其对训练速度和成本的潜在影响。特别是,我们希望向所有机器学习开发人员展示 PyTorch Profi…

【数据结构】十字链表的画法

十字链表的基本概念 有向边又称为弧 假设顶点 v 指向 w,那么 w 称为弧头,v 称为弧尾 顶点节点采用顺序存储 顶点节点 data:存放顶点的信息firstin:指向以该节点为终点(弧头)的弧节点firstout&#xff1…

宏基官网下载的驱动怎么安装(宏基笔记本如何安装系统)

本文为大家介绍宏基官网下载的驱动怎么安装宏基笔记本驱动(宏基笔记本如何安装系统),下面和小编一起看看详细内容吧。 宏碁笔记本怎么一键更新驱动 1. 单击“开始”,然后选择“所有程序”。 2. 单击Acer,然后单击Acer eRecovery Management。…

almaLinux 8 安装 xxdiff 5.1

almaLinux 安装 xxdiff XXdiff——比较和合并工具下载安装安装qt5 XXdiff——比较和合并工具 XXdiff是一款免费、强大的文件和目录比较及合并工具,可以在类似Unix的操作系统上运行,比如Linux、Solaris、HP/UX、IRIX和DEC Tru64。XXdiff的一大局限就是不…

分布式环境集成JWT(Java Web Token)

目录 一,说明:二,Token、Session和Cookie比较三,Spring Boot项目集成JWT1,引入依赖2,Token工具类3,定义拦截器4,注册拦截器5,编写登录代码6,测试 四&#xff…

C++day7

一、 封装一个学生的类,定义一个学生这样类的vector容器, 里面存放学生对象(至少3个) 再把该容器中的对象,保存到文件中。 再把这些学生从文件中读取出来,放入另一个容器中并且遍历输出该容器里的学生。 二、XMind思…

后缀自动机SAM

https://www.luogu.com.cn/problem/P3804 fail:当前区间-1(最短串 去掉最前面 的字符) nxt:任意串 加上最后面 考虑新加入的字符为x,上一个为p,则 n x t [ p ] [ x ] c nxt[p][x]c nxt[p][x]c 当前的每…

vue h5项目 打包加载优化

打包美化: 1)npx browserslistlatest --update-db 更新去除警告 2)打包进度条 npm add progress-bar-webpack-plugin -D npm add webpackbar -D npm install --save-dev webpack-bundle-analyzer 优化: 1.各个插件和loader所花费的时间 …

OpenGL ES视频特效开发参考Shadertoy参数详解参考Godot文档

今天一个大厂的学员过来问shadertoy上一些参数的问题,因为我之前用过一段时间Godot引擎, 我清晰记得Godot官方文档有明确的解释,所以整理下发给做特效的同学。 Shadertoy是一个网站,它方便用户编写片段着色器并创造出纯粹的魔法。…

OpenHarmony设备截屏的5种方式

本文转载自《OpenHarmony设备截屏的5种方式 》,作者westinyang 目录 方式1:系统控制中心方式2:OHScrcpy投屏工具方式3:DevEcoStudio截屏功能方式4:hdc shell snapshot_display方式5:hdc shell wukong持续关…

【UI 设计】触摸界面设计

触摸界面设计是一种以触摸操作为主的用户界面设计。以下是一些触摸界面设计的要点: 界面布局:设计简洁、直观的界面布局,使用户可以快速找到所需的功能和信息。避免过于拥挤的布局,保持按钮和菜单的大小适中,以便用户能…

android多屏触摸相关的详解方案-安卓framework开发手机车载车机系统开发课程

背景 直播免费视频课程地址:https://www.bilibili.com/video/BV1hN4y1R7t2/ 在做双屏相关需求开发过程中,经常会有对两个屏幕都要求可以正确触摸的场景。但是目前我们模拟器默认创建的双屏其实是没有办法进行触摸的 修改方案1 静态修改方案 使用命令…

ssm+vue校园教务系统源码和论文

ssmvue校园教务系统源码和论文086 开发工具:idea 数据库mysql5.7 数据库链接工具:navcat,小海豚等 技术:ssm 1、课题背景 信息系统的目的是让人可以高效的进行工作,包括对信息的一-系列操作,如添加信息、修改信…

SystemVerilog interface详细介绍

1. Interface概念 System Verilog中引入了接口定义,接口与module 等价的定义,是要在其他的接口、module中直接定义,不能写在块语句中,跟class是不同的。接口是将一组线捆绑起来,可以将接口传递给module。 2. 接口的优…

李宏毅 2022机器学习 HW2 strong baseline 上分路线

strong baseline上分路线 baseline增加concat_nframes (提升明显)增加batchnormalization 和 dropout增加hidden layer宽度至512 (提升明显) 提交文件命名规则为 prediction_{concat_nframes}[{n_hidden_layers}{dropout}_bn].c…

没有 JavaScript 计时器的自动播放轮播 - CSS 动画

先看效果&#xff1a; 再看代码&#xff08;查看更多&#xff09;&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>计时器</title><style>* {padding: 0;margin: 0;box-siz…

springcloud-gateway简述

Spring Cloud Gateway 是一个用于构建 API 网关的项目&#xff0c;它是 Spring Cloud 生态系统中的一部分&#xff0c;旨在为微服务架构提供动态路由、负载均衡、安全性和监控等功能。 网关工程对应pom文件 <?xml version"1.0" encoding"UTF-8"?>…

kafka消息系统实战

kafka是什么&#xff1f; 是一种高吞吐量的、分布式、发布、订阅、消息系统 1.导入maven坐标 <dependency><groupId>org.apache.kafka</groupId><artifactId>kafka-clients</artifactId><version>2.4.1</version></dependency&…

Python文本终端GUI框架详解

今天笔者带大家&#xff0c;梳理几个常见的基于文本终端的 UI 框架&#xff0c;一睹为快&#xff01; Curses 首先出场的是 Curses。 Curses 是一个能提供基于文本终端窗口功能的动态库&#xff0c;它可以: 使用整个屏幕 创建和管理一个窗口 使用 8 种不同的彩色 为程序提供…