揭秘波士顿房价密码:从经典数据集到线性回归实战

引言

波士顿房价预测是一个经典的机器学习任务,类似于程序员世界的“Hello World”。和大家对房价的普遍认知相同,波士顿地区的房价受诸多因素影响。该数据集统计了 13 种可能影响房价的因素和该类型房屋的均价,期望构建一个基于 13 个因素进行房价预测的模型。在机器学习领域,预测问题是一个核心研究方向,而房价预测作为其中的经典回归问题备受关注。波士顿房价数据集包含了与波士顿地区房屋相关的多种特征信息,通过对这些特征的分析和建模,我们可以尝试预测房屋价格。本文将详细介绍如何使用 Python 中的 scikit - learn 库对波士顿房价数据集进行处理、建模和评估。

数据集概述

波士顿房价数据集包含多个与房屋价格相关的特征,这些特征的具体含义如下:

属性名 解释 类型
CRIM 该镇的人均犯罪率 连续值
ZN 占地面积超过 25,000 平方英尺的住宅用地比例 连续值
INDUS 非零售商业用地比例 连续值
CHAS 是否邻近 Charies River,1 = 邻近;0 = 不邻近 离散值
NOX 一氧化氮浓度 连续值
RM 每栋房屋的平均客房数 连续值
AGE 1940 年之前建成的自用单位比例 连续值
DIS 到波士顿 5 个就业中心的加权距离 连续值
RAD 到径向公路的可达性指数 连续值
TAX 全值财产税率 连续值
PTRATIO 学生与教师的比例 连续值
B 1000(BK - 0.63)^2 连续值
LSTAT 低收入人群占比 连续值

数据集还包含一个目标变量——房屋价格中位数(MEDV),其类型为连续值。这些特征涵盖了房屋的物理属性、周边环境、社会经济因素等多个方面,为预测房屋价格提供了丰富的信息。

需要波士顿房价数据集csv文件的欢迎评论区留言。

代码实现步骤

1. 导入必要的库

from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import mean_squared_error, r2_score
import pandas as pd

这里我们导入了用于数据划分的 train_test_split、线性回归模型 LinearRegression、数据标准化工具 StandardScaler、模型评估指标计算函数 mean_squared_errorr2_score,以及数据处理库 pandas

2. 加载数据集

# 使用原始字符串,以空格作为分隔符重新加载数据集
df = pd.read_csv('housing-data.csv', header=None, sep=r'\s+')

# 设置列名
df.columns = ['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS', 'RAD', 'TAX', 'PTRATIO', 'B', 'LSTAT', 'MEDV']

在加载数据集时,由于数据的特殊性,我们使用空格作为分隔符,并为数据设置了列名,以便后续的处理和分析。

3. 数据预处理

# 数据预处理:标准化特征
scaler = StandardScaler()
X = df.drop('MEDV', axis=1)
y = df['MEDV']
X_scaled = scaler.fit_transform(X)

数据预处理阶段,我们首先将特征数据 X 和目标数据 y 进行分离,然后使用 StandardScaler 对特征数据进行标准化处理。标准化的目的是使不同特征具有相同的尺度,避免某些特征因数值范围过大而对模型训练产生过大影响。

4. 划分训练集和测试集

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X_scaled, y, test_size=0.2, random_state=42)

这里我们使用 train_test_split 函数将标准化后的特征数据和目标数据划分为训练集和测试集。其中,测试集占总数据的 20%,random_state 参数设置为 42 是为了保证结果的可重复性。

5. 创建线性回归模型并训练

# 创建线性回归模型并训练
model = LinearRegression()
model.fit(X_train, y_train)

我们实例化了一个线性回归模型 LinearRegression,并使用训练集数据 X_trainy_train 对模型进行训练。训练过程就是模型学习特征与目标变量之间线性关系的过程。

6. 模型预测与评估

# 在测试集上进行预测
y_pred = model.predict(X_test)

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

# 计算决定系数
r2 = r2_score(y_test, y_pred)

print('均方误差:', mse)
print('决定系数:', r2)

训练好的模型在测试集 X_test 上进行预测,得到预测结果 y_pred。然后通过计算均方误差(mse)和决定系数(r2)来评估模型的性能。均方误差衡量了预测值与真实值之间的平均平方误差,数值越小表示模型预测越准确;决定系数表示模型对数据的拟合优度,取值范围在 0 到 1 之间,越接近 1 表示模型拟合效果越好。

结果分析

运行代码后,得到均方误差约为 24.29,决定系数约为 0.67。这表明该线性回归模型在波士顿房价预测问题上有一定的预测能力,但仍有提升空间。均方误差相对较大,说明预测值与真实值之间存在一定的偏差;决定系数为 0.67 意味着模型能够解释约 67% 的房价变化情况,还有约 33% 的变化无法被模型解释。

你可能感兴趣的:(线性回归,算法,回归,机器学习,深度学习)