Python对Airbnb北京与上海链家租房数据用逻辑回归、决策树、岭回归、Lasso、随机森林、XGBoost、神经网络、聚类

**全文链接:**https://tecdat.cn/?p=41465

分析师:Nan Hu

在数据驱动的时代,数据科学家肩负着从海量数据中挖掘价值的重任。本专题合集聚焦于租房市场数据的深度剖析,涵盖了北京短租房评价影响因素研究以及上海链家租房数据的探索**(** 点击文末"阅读原文"获取完整代码、数据、文档******** )。

北京短租房研究中,从 Airbnb 获取 2019 年 4 月 17 日北京地区公开数据,包括房源基础信息、时间表信息、评论信息以及行政区划数据。通过筛选变量,对离散型和连续型变量进行相关性检验,再进行特征转换,构建逻辑回归和决策树模型,并对模型优化。结果显示,城区和郊区短租房评分影响因素差异显著,郊区租客重居住体验,城区租客重房源可靠性。

上海链家租房数据方面,利用 Python 从Lianjia.com.csv 文件获取租房信息,经过 ETL 数据预处理、探索性分析及数据可视化后,构建岭回归、Lasso 回归、Random forest 随机森林、XGBoost、Keras 神经网络、kmeans 聚类等模型预测房租。

本专题北京数据和链家数据、代码已分享在交流社群,阅读原文进群和 500 + 行业人士共同交流和成长。在这里,数据科学家们通过对不同地区租房数据的挖掘,为行业发展提供了有力的数据支撑,无论是短租房市场的精准运营,还是租房价格的合理预测,都能从这些分析中找到有价值的见解。

北京市短租房评价影响因素研究|数据分享

短租房是指是将房屋短期出租给客人,它提供从一日起到几个月的租赁服务,集住宅、酒店、会所多功能于一体,具有"自用"和"投资"两大功效,是业主将自己住所的空余部分短期出租给他人的一种经营形式。

当前短租房交易主要活跃于一线城市和旅游城市,房源数、用户数、交易额都在连年持续增加,这使得短租房之间的竞争变得越发激烈。客户和网站对不同的房源会有不同的评分,如何探索并提供用户最想要的关键价值要素,在竞争中取得胜利从而获得更多利益就显得尤为关键。

解决方案

任务/目标

选取一系列房源信息与其评分信息,根据城郊空间特征对评分的影响因素进行差异性分析。

数据源准备

数据来自 Airbnb 于 2019 年 4 月 17 日公开的北京地区数据(** 查看文末了解数据免费获取方式 **)****。数据均来源于 Airbnb 网站的公开信息,不包含任何个人隐私数据。

数据整合、填补缺失值

筛选变量

将所有变量分为两组:离散型和连续型,用不同的方法分别对此变量与是否为市区进行相关性检验。

离散型变量以"户主是否为超级户主"这一变量为例,得到的结果如下:

由于p<0.0001,因此"户主是否为超级户主"这一变量在市区和郊区存在差异。同理对其他离散型变量做检验,发现所有的变量均满足相关性。

对连续型变量同样做相关性检验,结果如下:

除"maximum_nights"之外其他变量均满足相关性。

特征转换

将卧室数目,浴室数目以及房东所有房源数按照不同数目人工分类为定性变量;将市郊区的房型分别用哑变量表示,房东回复时间,房间类型和房源位置是否精确,房东是否为超级房东也依次以哑变量替换

①房型进一步筛选分类:

城区:将除了'Apartment','House','Condominium','Loft','Serviced apartment'(五个城区中房源占比最大的五种房型的并集)以外的房源类型单独作为一类处理。

郊区同理。('Apartment','House','Condominium','Loft','Farm stay')

②删除认为无关的自变量number\_of\_reviews reviews\_per\_month。

③响应变量:

Ⅰ将针对房源具体方面(如实描述/accuracy,干净卫生/cleanliness,入住顺利/checkin,沟通交流/communication,位置便利/ location,高性价比/value)的分数加和;由于每项满分十分,共6项,为了和总分review\_scores\_rating(满分100)量纲一致,乘上权重10/6作为新变量(对房源具体方面的评分)review\_scores\_specific

Ⅱ将review\_scores\_rating和review\_scores\_specific加权求和形成响应变量scores,权重分别为0.3,0.7.

Ⅲ考虑到高分较多,我们人工设置scores大于97.5分的分数为1,小于97.5分的分数为0.(97.5的来历:取加权后的总分的五分位数作为分类变量的分界值)。

构造

以上说明了如何抽取相关特征,我们大致有如下训练样本(只列举部分特征)。

建模

logistic 回归是一种广义线性回归(generalized linear model),适用于因变量y只有两种可能取值的情况,也就是说,因变量的分布是伯努利分布(或二点分布),通常用1和0分别代表因变量的两种可能结果。

决策树是一种广泛应用的分类方法,它能从给出的训练样本中,提炼出树型的分类模型。树中的每个内部节点记录了使用哪个属性来进行分类,每个分支代表一个判断结果的输出,每个叶子节点则代表了最终分类后的结果。在本实验中将评分大于98.5的分数设置为1,将评分小于98.5的分数设置为0,将其作为目标变量score\_kind,决策树模型的叶节点将显示目标变量score\_kind的类别,根节点到每个叶子节点形成分类的路径规则。

模型优化

1.删除异常值:

在逻辑回归中输出各个残差统计量到res_out数据集,再筛选出Pearson残差绝对值大于2的观测,认为是异常值。共有793个,大约占比百分之二。

运用sql过程步删去这793个异常点,再进行逻辑回归。

2.上线之后的迭代,根据实际的A / B测试和业务人员的建议改进模型

逻辑回归ROC曲线:

对城区数据通过决策树分类,有76.457%的准确率,对郊区数据通过决策树分类,有85.08%的准确率,说明决策树预测效果更好。


点击标题查阅往期内容

结构方程模型SEM、路径分析房价和犯罪率数据、预测智力影响因素可视化2案例

左右滑动查看更多

01

02

03

04

在上面的分析结果中,我们不难看出,影响短租房评分的因素在北京城区和郊区之间存在着非常的差异。

在郊区,租客更加关注短租房的户型,房型以及房源所在的行政区。八达岭长城,司马台长城,密云水库等景点,尤其是以自然风光为主的景区,大量分布在京郊,密云县、顺义区和延庆县的房子更有可能成为优质房源可以佐证我们的推测,所以选择位于郊区的短租房的租客更多的是旅游导向的,更加关注居住的体验,所以独栋和小众房型,复式和酒店式公寓也都比普通居民楼公寓更加受欢迎。

与之相反,在北京城区内选择短租房的租户更大可能上是因为有工作,学习等方面的需求所以以短期生活居住为主要导向的,所以更加关注房源的可靠性,对房源的遴选更加依赖房主和房源的基本信息以及往期评论。

python岭回归、Lasso、随机森林、XGBoost、Keras神经网络、kmeans聚类链家租房数据地理可视化分析|附数据代码

1 利用 python 爬取链家网公开的租房数据;

2 对租房信息进行分析,主要对房租相关特征进行分析,并搭建模型用于预测房租。

任务/目标

利用上海链家网站租房的公开信息,着重对月租进行数据分析和挖掘。

上海租赁数据

此数据来自 Lianjia.com.csv文件包含名称,租赁类型,床的数量,价格,经度,纬度,阳台,押金,公寓,描述,旅游,交通,独立浴室,家具,新房源,大小,方向,堤坝,电梯,停车场和便利设施信息。

属性:

名称:列表名称

类型:转租或全部租赁

床: 卧室号码

价格

经度/纬度: 坐标

阳台,押金(是否有押金政策),公寓,描述,旅游可用性,靠近交通,独立浴室,家具

新房源:NO-0,YES-1

面积:平方米

朝向:朝向窗户,南1,东南2,东-3,北4,西南-5,西-6,西北-7,东北8,未知-0

级别: 房源层级, 地下室-0, 低层(1-15)-1, 中层(15-25)-2, 高层(>25)-3

停车场:无停车场-0,额外收费-1,免费停车-2

设施: 设施数量

go 复制代码
import pandas as pd
import numpy as np
import geopandas 
df = pd.read\_csv('liashanghai.csv', sep =',', encoding='utf\_8_sig', header=None)
df.head()

数据预处理

ETL处理,清理数据帧。

go 复制代码
df_clean.head()

探索性分析 - 数据可视化

go 复制代码
plt.figure(figsize=(8, 6))
sns.distplot(df_clean.price, bins=500, kde=True)
plt.xscale('log') # Log transform the price

读取地理数据

go 复制代码
plt.figure(figsize=(12, 12))
sns.heatmap(df_clean.corr(), square=True, annot=True, fmt = '.2f', cmap = 'vla

模型构建

尝试根据特征预测价格。

go 复制代码
y = df\_clean.log\_price
X = df\_clean.iloc\[:, 1:\].drop(\['price', 'log\_price'\], axis=1)

岭回归模型

go 复制代码
ridge = Ridge()
alphas = \[0.0001, 0.001, 0.001, 0.01, 0.1, 0.5, 1, 2, 3, 5, 10\]

Lasso回归

go 复制代码
coef.sort_values(ascending=False).plot(kind = 'barh')

Random forest随机森林

go 复制代码
rf\_cv.fit(X\_train, y_train)

XGBoost

go 复制代码
xgb_model.loc\[30:,\['test-rmse-mean', 'train-rmse-mean'\]\].plot();
go 复制代码
xgb\_cv.fit(X\_train, y_train)

Keras神经网络

go 复制代码
model.add(Dense(1, kernel_initializer='normal'))
# Compile model
model.compile(loss='mean\_squared\_error', optimizer='Adam')
model.summary()

kmeans聚类数据

go 复制代码
kmeanModel = KMeans(n_clusters=k).fit(X) 
    kmeanModel.fit(X)     
    inertias.append(kmeanModel.inertia_) 
plt.plot(K, inertias, 'bx-')
go 复制代码
gpd.plot(figsize=(12,10), alpha=0.3)
scatter\_map = plt.scatter(data=df\_clean, x='lon', y='lat', c='label', alpha=0.3, cmap='tab10', s=2)

关于分析师

在此对 Nan Hu 对本文所作的贡献表示诚挚感谢,她在上海财经大学攻读应用统计专业硕士学位,专注于数据分析和统计建模领域。擅长 SQL、R 语言、Python 和 SAS 。

数据获取

在公众号后台回复"北京租房 ",可免费获取完整数据。

本文中分析的完整数据、代码、文档**** 分享到会员群,扫描下面二维码即可加群!

资料获取

在公众号后台回复"领资料",可免费获取数据分析、机器学习、深度学习等学习资料。

点击文末**"阅读原文"**

获取完整代码、数据、文档。

本文选自《Python对Airbnb北京与上海链家租房数据用逻辑回归、决策树、岭回归、Lasso、随机森林、XGBoost、神经网络、聚类》。

点击标题查阅往期内容

PYTHON用户流失数据挖掘:建立逻辑回归、XGBOOST、随机森林、决策树、支持向量机、朴素贝叶斯和KMEANS聚类用户画像

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

PYTHON集成机器学习:用ADABOOST、决策树、逻辑回归集成模型分类和回归和网格搜索超参数优化

R语言集成模型:提升树boosting、随机森林、约束最小二乘法加权平均模型融合分析时间序列数据

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

R语言用主成分PCA、 逻辑回归、决策树、随机森林分析心脏病数据并高维可视化

R语言基于树的方法:决策树,随机森林,Bagging,增强树

R语言用逻辑回归、决策树和随机森林对信贷数据集进行分类预测

spss modeler用决策树神经网络预测ST的股票

R语言中使用线性模型、回归决策树自动组合特征因子水平

R语言中自编基尼系数的CART回归决策树的实现

R语言用rle,svm和rpart决策树进行时间序列预测

python在Scikit-learn中用决策树和随机森林预测NBA获胜者

python中使用scikit-learn和pandas决策树进行iris鸢尾花数据分类建模和交叉验证

R语言里的非线性模型:多项式回归、局部样条、平滑样条、 广义相加模型GAM分析

R语言用标准最小二乘OLS,广义相加模型GAM ,样条函数进行逻辑回归LOGISTIC分类

R语言ISLR工资数据进行多项式回归和样条回归分析

R语言中的多项式回归、局部回归、核平滑和平滑样条回归模型

R语言用泊松Poisson回归、GAM样条曲线模型预测骑自行车者的数量

R语言分位数回归、GAM样条曲线、指数平滑和SARIMA对电力负荷时间序列预测

R语言样条曲线、决策树、Adaboost、梯度提升(GBM)算法进行回归、分类和动态可视化

如何用R语言在机器学习中建立集成模型?

R语言ARMA-EGARCH模型、集成预测算法对SPX实际波动率进行预测

在python 深度学习Keras中计算神经网络集成模型

R语言ARIMA集成模型预测时间序列分析

R语言基于Bagging分类的逻辑回归(Logistic Regression)、决策树、森林分析心脏病患者

R语言基于树的方法:决策树,随机森林,Bagging,增强树

R语言基于Bootstrap的线性回归预测置信区间估计方法

R语言使用bootstrap和增量法计算广义线性模型(GLM)预测置信区间

R语言样条曲线、决策树、Adaboost、梯度提升(GBM)算法进行回归、分类和动态可视化

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

R语言随机森林RandomForest、逻辑回归Logisitc预测心脏病数据和可视化分析

R语言用主成分PCA、 逻辑回归、决策树、随机森林分析心脏病数据并高维可视化

Matlab建立SVM,KNN和朴素贝叶斯模型分类绘制ROC曲线

matlab使用分位数随机森林(QRF)回归树检测异常值

相关推荐
&zzz11 分钟前
Python生成exe
开发语言·python
Python×CATIA工业智造12 分钟前
基于PySide6与pycatia的CATIA绘图比例智能调节工具开发全解析
python·pycharm·自动化·catia二次开发
vsropy2 小时前
matlab安装python API 出现Invalid version: ‘R2022a‘,
开发语言·python
atec20004 小时前
使用uv管理python项目环境
开发语言·python·uv
zybishe5 小时前
免费送源码:Java+ssm+MySQL 酒店预订管理系统的设计与实现 计算机毕业设计原创定制
java·大数据·python·mysql·微信小程序·php·课程设计
农民小飞侠7 小时前
ubuntu 安装pyllama教程
linux·python·ubuntu
橘猫云计算机设计7 小时前
基于Python电影数据的实时分析可视化系统(源码+lw+部署文档+讲解),源码可白嫖!
数据库·后端·python·信息可视化·小程序·毕业设计
蹦蹦跳跳真可爱5897 小时前
Python----机器学习(基于贝叶斯的鸢尾花分类)
python·机器学习·分类
Full Stack Developme8 小时前
SQL 全文检索原理
python·sql·全文检索
爱的叹息8 小时前
JDK(Java Development Kit)从发布至今所有主要版本 的详细差异、新增特性及关键更新的总结,按时间顺序排列
java·数据库·python