最近我们被客户要求撰写关于租房数据分析的研究报告。利用 python 爬取链家网公开的租房数据
对租房信息进行分析,主要对房租相关特征进行分析,并搭建模型用于预测房租。
利用上海链家网站租房的公开信息,着重对月租进行数据分析和挖掘。
上海租赁数据
此数据来自 Lianjia.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
设施: 设施数量
import pandas as pd
import numpy as np
import geopandas
df = pd.read\_csv('liania\_sh.csv', sep =',', encoding='utf\_8\_sig', header=None)
df.head()
可下载资源
视频
Lasso回归、岭回归等正则化回归数学原理及R语言实例
视频
KMEANS均值聚类和层次聚类:R语言分析生活幸福质量系数可视化实例
视频
Boosting集成学习原理与R语言提升回归树BRT预测短鳍鳗分布生态学实例
视频
LSTM神经网络架构和原理及其在Python中的预测应用
![](https://img-blog.csdnimg.cn/9b9a2cce49e84fdaba24ac6bfee85d37.png)
数据预处理
ETL处理,清理数据帧。
df_clean.head()
![](https://img-blog.csdnimg.cn/dc4a0bf6708748c3924565ce9af12af5.png)
![](https://img-blog.csdnimg.cn/82a64e25fa0c42399230261cea55a8bf.png)
探索性分析 – 数据可视化
plt.figure(figsize=(8, 6))
sns.distplot(df_clean.price, bins=500, kde=True)
plt.xscale('log') # Log transform the price
![](https://img-blog.csdnimg.cn/45e5d9e05ea549c0b6f0cb0db6c5bc1e.png)
![](https://img-blog.csdnimg.cn/77517577da1a444b8a7e69db7fdcc6e3.png)
读取地理数据
![](https://img-blog.csdnimg.cn/f273a94d28f5416c854afd49b24eb140.png)
![](https://img-blog.csdnimg.cn/f63c1b5ef9b54e5c9bead4e54df4074d.png)
随时关注您喜欢的主题
plt.figure(figsize=(12, 12))
sns.heatmap(df_clean.corr(), square=True, annot=True, fmt = '.2f', cmap = 'vla
![](https://img-blog.csdnimg.cn/c01c670103f64e8eb8fa15d5fb20a10b.png)
模型构建
尝试根据特征预测价格。
y = df\_clean.log\_price
X = df\_clean.iloc\[:, 1:\].drop(\['price', 'log\_price'\], axis=1)
岭回归模型
ridge = Ridge()
alphas = \[0.0001, 0.001, 0.001, 0.01, 0.1, 0.5, 1, 2, 3, 5, 10\]
![](https://img-blog.csdnimg.cn/557a8146d557485dbb44bc3e01f3ff2d.png)
![](https://img-blog.csdnimg.cn/f8ec09a5a63f4544b794960d1c1561ea.png)
![](https://img-blog.csdnimg.cn/d2bf9704d15d499c8fbb4a001d8071e4.png)
Lasso回归
![](https://img-blog.csdnimg.cn/f62d921ebbec4ae88607bf5fe59741ab.png)
![](https://img-blog.csdnimg.cn/0376f7e0a1934ea69f6cd6caa74200bb.png)
coef.sort_values(ascending=False).plot(kind = 'barh')
![](https://img-blog.csdnimg.cn/c038a799aac1426599fb40a792c38794.png)
Random forest随机森林
rf\_cv.fit(X\_train, y_train)
![](https://img-blog.csdnimg.cn/77d2ffb8d35d4f1dbb4a0089db2d0810.png)
![](https://img-blog.csdnimg.cn/6cd15397b8cb47abaff1ebca2b4e4dbc.png)
XGBoost
xgb_model.loc\[30:,\['test-rmse-mean', 'train-rmse-mean'\]\].plot();
![](https://img-blog.csdnimg.cn/fdc193c3e410419bac0f2b86322ec048.png)
xgb\_cv.fit(X\_train, y_train)
![](https://img-blog.csdnimg.cn/ad50d0196f5d489886b16341d27d41e3.png)
![](https://img-blog.csdnimg.cn/36880dd3e388490c83da513d6d14f889.png)
![](https://img-blog.csdnimg.cn/79b9173dd08e4fc581db61c31a291392.png)
Keras神经网络
model.add(Dense(1, kernel_initializer='normal'))
# Compile model
model.compile(loss='mean\_squared\_error', optimizer='Adam')
model.summary()
![](https://img-blog.csdnimg.cn/2e24a92e09db4bd4859561e72e8db452.png)
![](https://img-blog.csdnimg.cn/89e89972d5c8494285bc6a6163be59fb.png)
kmeans聚类数据
kmeanModel = KMeans(n_clusters=k).fit(X)
kmeanModel.fit(X)
inertias.append(kmeanModel.inertia_)
plt.plot(K, inertias, 'bx-')
![](https://img-blog.csdnimg.cn/f8af4a7c6a8947a98e999f4288a86eca.png)
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)
![](https://img-blog.csdnimg.cn/09c09f3946ab433d8f36b2c8b59788c1.png)
![](https://img-blog.csdnimg.cn/19979e6522804635a507890a9563a734.png)
可下载资源
关于作者
Kaizong Ye是拓端研究室(TRL)的研究员。在此对他对本文所作的贡献表示诚挚感谢,他在上海财经大学完成了统计学专业的硕士学位,专注人工智能领域。擅长Python.Matlab仿真、视觉处理、神经网络、数据分析。
本文借鉴了作者最近为《R语言数据分析挖掘必知必会 》课堂做的准备。
非常感谢您阅读本文,如需帮助请联系我们!