**全文链接:**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,增强树
python在Scikit-learn中用决策树和随机森林预测NBA获胜者
python中使用scikit-learn和pandas决策树进行iris鸢尾花数据分类建模和交叉验证
R语言里的非线性模型:多项式回归、局部样条、平滑样条、 广义相加模型GAM分析
R语言用标准最小二乘OLS,广义相加模型GAM ,样条函数进行逻辑回归LOGISTIC分类
R语言用泊松Poisson回归、GAM样条曲线模型预测骑自行车者的数量
R语言分位数回归、GAM样条曲线、指数平滑和SARIMA对电力负荷时间序列预测
R语言样条曲线、决策树、Adaboost、梯度提升(GBM)算法进行回归、分类和动态可视化
R语言ARMA-EGARCH模型、集成预测算法对SPX实际波动率进行预测
R语言基于Bagging分类的逻辑回归(Logistic Regression)、决策树、森林分析心脏病患者
R语言基于树的方法:决策树,随机森林,Bagging,增强树
R语言使用bootstrap和增量法计算广义线性模型(GLM)预测置信区间
R语言样条曲线、决策树、Adaboost、梯度提升(GBM)算法进行回归、分类和动态可视化
Python对商店数据进行lstm和xgboost销售量时间序列建模预测分析
R语言随机森林RandomForest、逻辑回归Logisitc预测心脏病数据和可视化分析
R语言用主成分PCA、 逻辑回归、决策树、随机森林分析心脏病数据并高维可视化
Matlab建立SVM,KNN和朴素贝叶斯模型分类绘制ROC曲线




