机器学习必做项目:Python代码实现线性回归预测房价(含数据集)
房价预测常用数据集是波士顿房价数据集(Boston Housing Dataset),包含506个样本和13个特征。通过均方误差(MSE)和决定系数(R²)评估模型性能。对数据进行标准化处理,避免特征尺度差异影响模型性能。绘制实际房价与预测房价的散点图,直观展示模型效果。将数据集划分为训练集和测试集,比例通常为8:2。
·
实现线性回归预测房价的步骤
准备数据集
房价预测常用数据集是波士顿房价数据集(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()
注意事项
- 波士顿房价数据集已从
sklearn最新版本中移除,可通过第三方库或本地文件加载。 - 线性回归假设特征与目标变量呈线性关系,若数据非线性,需考虑多项式回归或其他模型。
- 模型性能不佳时可尝试特征工程或正则化方法(如岭回归、Lasso回归)。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)