📅  最后修改于: 2023-12-03 15:17:40.042000             🧑  作者: Mango
这个项目是基于Kaggle的数据挑战赛,目的是使用线性回归模型预测波士顿地区房屋的价格。数据集包括波士顿地区的房屋信息以及其房屋价格。我们将采用Python编程语言,并使用Scikit-learn库来建立线性回归模型,并用matplotlib库对结果进行数据可视化分析。
数据集来自Kaggle,包括506个样本,每个样本共有13个特征,包括:
房屋价格为目标变量。
首先,我们要导入必要的Python库,包括numpy、pandas、scikit-learn和matplotlib,并读取数据集:
import numpy as np
import pandas as pd
from sklearn.linear_model import LinearRegression
import matplotlib.pyplot as plt
%matplotlib inline
boston = pd.read_csv('Boston.csv')
接着,我们可以通过一些统计分析和可视化图表,更好地理解我们的数据集。例如,我们可以绘制各特征与目标房价的散点图:
fig, axs = plt.subplots(2, 7, figsize=(15, 6))
for i, ax in enumerate(axs.flatten()):
if i < 13:
ax.scatter(boston.iloc[:, i], boston.target)
ax.set_title(boston.columns[i])
else:
fig.delaxes(ax)
fig.tight_layout()
如上图,我们可以看出各特征和目标房价之间的关系,例如发现房价和房间数(RM)是正相关的。
接下来,我们将用Scikit-learn库建立线性回归模型,并用部分数据集训练模型:
X = boston.drop('target', axis=1)
y = boston.target
# 划分数据集
train_size = 0.7
train_index = int(len(X) * train_size)
train_X, train_y = X.iloc[:train_index], y.iloc[:train_index]
test_X, test_y = X.iloc[train_index:], y.iloc[train_index:]
# 训练模型
lin_reg = LinearRegression()
lin_reg.fit(train_X, train_y)
经过训练后,我们先要对模型进行评估。我们可以使用均方误差(MSE)和决定系数(R^2)来评估模型的表现:
from sklearn.metrics import mean_squared_error, r2_score
# 对训练和测试数据进行预测
train_pred = lin_reg.predict(train_X)
test_pred = lin_reg.predict(test_X)
# 计算MSE和R^2
train_mse = mean_squared_error(train_y, train_pred)
test_mse = mean_squared_error(test_y, test_pred)
train_r2 = r2_score(train_y, train_pred)
test_r2 = r2_score(test_y, test_pred)
print('Train MSE: {:.4f}, Test MSE: {:.4f}'.format(train_mse, test_mse))
print('Train R^2: {:.4f}, Test R^2: {:.4f}'.format(train_r2, test_r2))
输出的结果为:
Train MSE: 21.3449, Test MSE: 26.8653
Train R^2: 0.7521, Test R^2: 0.6699
说明模型在训练集上的表现比测试集更好。同时,我们可以看出模型的决定系数约为0.75,说明模型对预测房价有较强的解释能力。
最后,我们可以将模型对测试集的预测结果可视化:
fig, ax = plt.subplots(1, 1, figsize=(6, 6))
ax.scatter(test_y, test_pred)
ax.set_xlabel('True Value')
ax.set_ylabel('Predicted Value')
ax.set_title('Predicted vs True Value for Test Data')
ax.plot([0, 50], [0, 50], linestyle='--', color='red')
如上图,我们可以看出模型的预测结果和真实值比较接近。
以上就是我们使用线性回归模型对波士顿住房价格数据集进行的分析和预测。我们从多个角度对数据集进行了可视化分析,并建立了线性回归模型进行预测。最终我们的模型在测试集上的决定系数达到了0.67,预测结果和真实值比较接近。