返回

数据处理实战(三):让你的北京租房数据展现异彩

人工智能

1. 导言

1.1 项目需求:

本节,我们继续完善北京市租房数据处理实战,数据集基本处理请参考本系列上篇文章:【数据处理实战(二):巧用Python梳理你的北京租房数据】。

  • 本节主要目标:

  • 特征工程:

    • 进一步探索数据集中可能存在的潜在关系,并利用Python强大的数据处理工具对数据进行特征工程,包括缺失值处理、数据类型转换、特征标准化等。
  • 可视化分析:

    • 将数据可视化,以帮助我们更直观地理解数据中的模式和趋势,并从中发现有价值的洞察。
  • 模型构建:

    • 基于处理后的数据,尝试建立一个简单的预测模型来预测租金价格,并评估模型的性能。

2. 特征工程

2.1 缺失值处理

在我们的数据集中,存在一些缺失值,我们需要对这些缺失值进行处理。对于数值型特征,我们可以使用平均值、中位数或众数等方法来填充缺失值;对于分类型特征,我们可以使用众数或缺失值编码等方法来填充缺失值。

import numpy as np
import pandas as pd

# 读取数据
df = pd.read_csv('beijing_rent.csv')

# 缺失值处理
df['rent'] = df['rent'].fillna(df['rent'].median())
df['area'] = df['area'].fillna(df['area'].mean())
df['room_num'] = df['room_num'].fillna(df['room_num'].mode()[0])
df['floor'] = df['floor'].fillna(df['floor'].median())

2.2 数据类型转换

在我们的数据集中,有些特征的数据类型不正确,我们需要对这些特征的数据类型进行转换。例如,我们将rent特征的数据类型从object转换为float,将area特征的数据类型从object转换为int

df['rent'] = df['rent'].astype(float)
df['area'] = df['area'].astype(int)

2.3 特征标准化

在我们的数据集中,有些特征的取值范围差别很大,这可能会影响模型的性能。为了避免这种影响,我们需要对这些特征进行标准化。特征标准化的方法有很多种,我们这里使用最常用的StandardScaler方法。

from sklearn.preprocessing import StandardScaler

# 特征标准化
scaler = StandardScaler()
df[['rent', 'area', 'room_num', 'floor']] = scaler.fit_transform(df[['rent', 'area', 'room_num', 'floor']])

3. 可视化分析

在对数据进行特征工程之后,我们可以对数据进行可视化分析。可视化分析可以帮助我们更直观地理解数据中的模式和趋势,并从中发现有价值的洞察。我们可以使用matplotlibseaborn等库来进行数据可视化。

3.1 房租价格与地理位置的关系

我们可以通过散点图来可视化房租价格与地理位置的关系。

import matplotlib.pyplot as plt

# 房租价格与地理位置的关系
plt.scatter(df['longitude'], df['latitude'], c=df['rent'], cmap='jet')
plt.colorbar()
plt.xlabel('经度')
plt.ylabel('纬度')
plt.title('房租价格与地理位置的关系')
plt.show()

从散点图中,我们可以看出,房租价格与地理位置之间存在一定的相关性。房租价格较高的区域主要集中在市中心及其周边地区,而房租价格较低的区域则主要集中在郊区。

3.2 房租价格与房屋类型的关系

我们可以通过箱线图来可视化房租价格与房屋类型的关系。

import seaborn as sns

# 房租价格与房屋类型的关系
sns.boxplot(x='house_type', y='rent', data=df)
plt.xlabel('房屋类型')
plt.ylabel('房租价格')
plt.title('房租价格与房屋类型的关系')
plt.show()

从箱线图中,我们可以看出,不同房屋类型的房租价格存在一定的差异。公寓的房租价格最高,而平房的房租价格最低。

3.3 房租价格与房屋面积的关系

我们可以通过散点图来可视化房租价格与房屋面积的关系。

# 房租价格与房屋面积的关系
plt.scatter(df['area'], df['rent'])
plt.xlabel('房屋面积')
plt.ylabel('房租价格')
plt.title('房租价格与房屋面积的关系')
plt.show()

从散点图中,我们可以看出,房租价格与房屋面积之间存在一定的正相关关系。房屋面积越大的房屋,房租价格越高。

4. 模型构建

在对数据进行特征工程和可视化分析之后,我们可以尝试建立一个简单的预测模型来预测租金价格。这里,我们使用线性回归模型来进行预测。

from sklearn.linear_model import LinearRegression

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(df[['area', 'room_num', 'floor']], df['rent'], test_size=0.2)

# 训练模型
model = LinearRegression()
model.fit(X_train, y_train)

# 评估模型
score = model.score(X_test, y_test)
print('模型得分:', score)

# 预测租金价格
y_pred = model.predict(X_test)

# 计算均方误差
mse = mean_squared_error(y_test, y_pred)
print('均方误差:', mse)

从结果中,我们可以看出,模型的得分和均方误差都比较低,这说明模型的预测效果还是不错的。

5. 总结

在本文中,我们继续完善了北京市租房数据处理实战,对数据进行了特征工程、可视化分析和模型构建。通过这些步骤,我们对北京市租房市场有了更深入的了解,并建立了一个简单的模型来预测租金价格。希望本文对读者有所帮助。