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)回归树检测异常值

相关推荐
CHNMSCS27 分钟前
PyTorch_张量形状操作
人工智能·pytorch·python
love530love1 小时前
修复笔记:获取 torch._dynamo 的详细日志信息
运维·人工智能·pytorch·笔记·python·深度学习·virtualenv
钢铁男儿1 小时前
Python基本语法(lambda表达式)
开发语言·python
亚力山大抵2 小时前
实验四 增强型可靠文件传输系统
python
music score2 小时前
Keysight万用表使用指南及基于Python采集数据生成Excel文件
开发语言·网络·python
lkx097883 小时前
今天python练习题
python
AI视觉网奇3 小时前
TensorFlow 多卡训练 tf多卡训练
人工智能·python·tensorflow
Data 实验室3 小时前
爬虫管理平台-最新版本发布
开发语言·爬虫·python·fastapi
那雨倾城3 小时前
PiscTrace针对YOLO深度适配:从v8到v12
图像处理·人工智能·python·opencv·yolo·计算机视觉·目标跟踪
hacker_lpy3 小时前
python全自动爬取m3u8网页视频(各类网站都通用)
开发语言·python·m3u8视频·视频爬虫