实现线性回归预测房价的步骤

准备数据集

房价预测常用数据集是波士顿房价数据集(Boston Housing Dataset),包含506个样本和13个特征。可通过sklearn.datasets直接加载。

from sklearn.datasets import load_boston
boston = load_boston()
X = boston.data
y = boston.target

数据预处理

对数据进行标准化处理,避免特征尺度差异影响模型性能。

from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

划分训练集和测试集

将数据集划分为训练集和测试集,比例通常为8:2。

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X_scaled, y, test_size=0.2, random_state=42)

训练线性回归模型

使用sklearn.linear_model中的LinearRegression训练模型。

from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(X_train, y_train)

模型评估

通过均方误差(MSE)和决定系数(R²)评估模型性能。

from sklearn.metrics import mean_squared_error, r2_score
y_pred = model.predict(X_test)
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)
print(f"MSE: {mse:.2f}, R²: {r2:.2f}")

可视化结果

绘制实际房价与预测房价的散点图,直观展示模型效果。

import matplotlib.pyplot as plt
plt.scatter(y_test, y_pred)
plt.xlabel("Actual Prices")
plt.ylabel("Predicted Prices")
plt.title("Actual vs Predicted Housing Prices")
plt.show()

代码完整示例

以下为完整代码实现:

# 导入所需库
from sklearn.datasets import load_boston
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score
import matplotlib.pyplot as plt

# 加载数据集
boston = load_boston()
X = boston.data
y = boston.target

# 数据标准化
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

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

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

# 预测和评估
y_pred = model.predict(X_test)
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)
print(f"MSE: {mse:.2f}, R²: {r2:.2f}")

# 可视化
plt.scatter(y_test, y_pred)
plt.xlabel("Actual Prices")
plt.ylabel("Predicted Prices")
plt.title("Actual vs Predicted Housing Prices")
plt.show()

注意事项

  1. 波士顿房价数据集已从sklearn最新版本中移除,可通过第三方库或本地文件加载。
  2. 线性回归假设特征与目标变量呈线性关系,若数据非线性,需考虑多项式回归或其他模型。
  3. 模型性能不佳时可尝试特征工程或正则化方法(如岭回归、Lasso回归)。
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐