《用Python玩转数据》项目—线性回归分析入门之波士顿房价预测
在数据分析和机器学习领域中,线性回归分析是最基本的模型之一。它能够通过对已知数据进行学习,来预测新的数据。在这篇文章中,我们将使用Python来构建一个线性回归模型,来预测波士顿地区的房价。
数据的获取与处理
首先,我们需要获取数据。这里我们将使用sklearn中的波士顿房价数据集。数据集已经被整理成一个DataFrame形式,方便处理。
from sklearn.datasets import load_boston
import pandas as pd
boston = load_boston()
df = pd.DataFrame(boston.data, columns=boston.feature_names)
df['MEDV'] = boston.target
我们可以看到,数据集包含了14个特征变量和一个目标变量。我们的目标是通过各个特征变量来预测房价(目标变量MEDV)。
在对数据进行建模之前,我们需要对数据进行处理。首先,检查数据集是否有缺失值。
# 检查缺失值
print(df.isnull().any())
由于此处输出结果为False,说明此数据集中没有缺失值。
接着,我们查看每个特征变量和目标变量之间的相关性。
# 查看特征变量和目标变量之间的相关性
print(df.corr()['MEDV'].abs().sort_values())
通过观察相关性矩阵,我们可以大致判断哪些变量与目标变量相关性较高,然后选择合适的变量来建立线性回归模型。
构建线性回归模型
在进行线性回归分析之前,我们需要对数据集进行拆分,其中一部分数据用于训练模型,另一部分数据用于测试模型的效果。
from sklearn.model_selection import train_test_split
X = df.drop('MEDV', axis=1)
y = df['MEDV']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
我们在上述代码中使用train_test_split函数进行数据集拆分。我们将70%的数据用于训练,30%的数据用于测试,并设置随机数种子,以便能够复现结果。
接下来,我们使用线性回归模型预测波士顿房价。这里我们选择sklearn库中的LinearRegression模型。
from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(X_train, y_train)
完成模型训练之后,我们可以测试模型的准确性。这里使用R2评估模型的拟合效果。
from sklearn.metrics import r2_score
y_pred = model.predict(X_test)
r2score = r2_score(y_test, y_pred)
print('R-Square:', r2score)
在测试数据上,我们得到的R2为0.711。
结论
我们利用线性回归模型建立了波士顿房价预测模型,并通过测试数据检验了模型的效果。我们发现,偏离目标变量最近的特征变量是房间数量(RM)、平均房间年龄(AGE)和地段(LSTAT),这三个变量对于房价预测的准确性最高。
在此基础上,我们可以进一步尝试使用其他模型或者数据处理技术,来更好地预测波士顿房价。
完整的代码请参考本文开头的GitHub仓库。
参考文献
- sklearn.datasets.load_boston
- pandas.DataFrame
- sklearn.model_selection.train_test_split
- sklearn.linear_model.LinearRegression
- sklearn.metrics.r2_score
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:《用python玩转数据》项目—线性回归分析入门之波士顿房价… - Python技术站