尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

多元线性回归案例:加州房价预测

多元线性回归案例:加州房价预测
📅 发布时间:2026/7/9 3:06:07

1.多元线性回归解决了什么问题?

多元线性回归,解决了多个特征变量和目标变量之间的相关性问题,并根据结论进行预测。 在加州房价数据集的例子中,解决了平均房间数、平均收入和户主平均年龄这三个特征变量和平均房价之间的关系,并以此进行房价的预测,最后用误差分析系数,对模型的表现进行评估。

2.多元线性回归的过程:

  • 导入数据分析和模型预测相关的库,加载加州房价数据集。
  • 绘制热力图,查看各变量之间的相关性。
  • 根据图像,确定特征变量和目标变量,有时需要对变量进行数据处理得到特征变量。
  • 对特征变量进行标准化处理,消除量纲。
  • 对线性回归模型进行训练和预测。
  • 对模型的预测表现进行评估,用R2,MSE,RMSE这些指标。
  • 绘制预测房价与真实房价的对比图,以散点图的形式。
  • 也可以绘制残差分析散点图和残差分布直方图,对预测值进行进一步分析。
  • 采用5折交叉验证法对R2系数进行评估。
  • 最后,将得到的结果以文件的形式保存。

3.代码块解释:

导入数据分析和模型预测相关的库,加载加州房价数据集


import os

import pandas as pd

import numpy as np

import matplotlib.pyplot as plt

import seaborn as sns

from sklearn.datasets import fetch_california_housing #加载加州房价数据集

from sklearn.linear_model import LinearRegression #多元线性回归模型

from sklearn.preprocessing import StandardScaler #标准化处理

from sklearn.metrics import mean_squared_error,r2_score

from sklearn.model_selection import cross_val_score #交叉验证模块

#正常显示中文标签

plt.rcParams['font.sans-serif'] = ['SimHei']

#正常显示负号

plt.rcParams['axes.unicode_minus'] = False

df = pd.read_csv("./cal_housing.csv")

df.head()


绘制热力图,查看各变量之间的相关性 用变量间的相关性系数作为指标,显示相关系数数值,规定热力图的色彩风格和系数显示方式。


plt.figure(figsize=(12,8))

sns.heatmap(df.corr(),annot=True,cmap='coolwarm',fmt=".2f")

plt.title("特征与房价(MedHouseVal)相关性热力图")

plt.show()


根据图像,确定特征变量和目标变量,有时需要对变量进行数据处理得到特征变量 在这里,我选择avgRooms,medianIncome和housingMedianAge作为特征变量,因为这三个特征变量的相关性最高,用medianHouseValue作为目标变量。


df['avgRooms'] = df['totalRooms']/df['households']

features = ['medianIncome','avgRooms','housingMedianAge']

X = df[features]

y = df["medianHouseValue"]


特征标准化处理,消除量纲


scaled = StandardScaler()

X_scaled = scaled.fit_transform(X)


对线性回归模型进行训练和预测

model = LinearRegression()

model.fit(X_scaled, y)

predictions = model.predict(X_scaled)


对模型的预测表现进行评估,用R2,MSE,RMSE这些指标,打印模型的斜率和截距

mse = mean_squared_error(y,predictions)

rmse = np.sqrt(mse)

r2 = r2_score(y,predictions)

print("模型系数:",model.coef_)

print("模型截距:",model.intercept_)

print("均方误差:",mse)

print("均方根误差:",rmse)

print("决定系数:",r2)


模型系数: [84115.11433906 -6718.06656196 21171.01321494]

模型截距: 206855.81690891474

均方误差: 6496608827.746702

均方根误差: 80601.54358166289

决定系数: 0.5121018839958533

可以从结果看出,决定系数R2约51%,在50%~70%之间,可以接受。


绘制预测结果与真实房价的对比图,以散点图的形式

plt.figure(figsize = (8,5))

plt.scatter(range(len(y)),y,label='实际价格',alpha=0.7)

plt.scatter(range(len(y)),predictions,label='预测价格',alpha=0.7)

plt.title('房价预测对比图')

plt.xlabel('样本编号')

plt.ylabel('价格')

plt.legend()

plt.show()

从图像看出,预测价格在真实价格之间波动


绘制残差分析散点图和残差分布直方图,对预测值进行进一步分析

residuals = y - predictions

plt.figure(figsize = (8,5))

plt.scatter(predictions,residuals,alpha=0.6)

plt.hlines(y=0,xmin = predictions.min(),xmax = predictions.max(),colors = 'red')

plt.title('残差图')

plt.xlabel('预测值')

plt.ylabel('残差')

plt.grid(True)

plt.show()

从残差图看,大部分残差点在横轴附近对称分布。


plt.figure(figsize = (8,5))

sns.histplot(residuals,kde=True,bins=30,color = 'purple')

plt.title('残差分布图')

plt.xlabel('残差值')

plt.ylabel('频率')

plt.grid(True)

plt.show()

从残差分布直方图看出,残差分布呈现正态分布形式。


采用5折交叉验证法对R2系数进行评估

cross_val_scores = cross_val_score(model,X_scaled,y,cv = 5,scoring = 'r2')

print("5折交叉验证 R2 分数:",cross_val_scores)

print("平均交叉验证得分:",cross_val_scores.mean())

5折交叉验证 R2 分数: [0.460717 0.39491883 0.48956221 0.40375787 0.54777794]

平均交叉验证得分: 0.4593467712230394

从交叉验证得分看出,0.45得分偏低,但考虑到在房价预测这种多元线性回归模型中,0.45较为常见。


将结果以文件形式保存

results_df = pd.DataFrame({

'特征名称':features,

'回归系数':model.coef_

})

summary_df = pd.DataFrame({

'项':['截距','MSE','RMSE','R2','交叉验证均值R2'],

'值':[model.intercept_,mse,rmse,r2,cross_val_scores.mean()]

})

full_results_df = pd.concat([results_df,pd.DataFrame([{}]),summary_df],ignore_index=True)

full_results_df.to_csv('regression_results.csv',index = False,encoding = 'utf-8-sig')

print('回归分析结果已保存至 regression_results.csv')

pred_df = pd.DataFrame({

'实际房价':y,

'预测房价':predictions,

'残差':residuals

})

pred_df.to_csv('predictions_residuals.csv',index = False,encoding = 'utf-8-sig')

print('预测值与残差数据已保存至 predictions_residuals.csv')

将特征名称、回归系数和一系列模型预测评估指标保存至csv文件中;将预测结果、实际房价和残差保存至另一个csv文件中。


4. 总结:

用加州房价数据集作为样本,分析了多个特征变量与目标变量之间的关系,用多元线性回归模型进行预测,并对其表现进行评估,以指标系数得分的形式,将预测结果和残差可视化分析,综合评估模型的性能,最后将结果保存至文件中。

相关新闻

  • 【大数据课程设计/毕业设计】基于电商大数据的宁波五金线上营销决策辅助系统的设计与实现 基于可视化展示的宁波五金电商推广运营分析系统【附源码、数据库、万字文档】
  • 【计算机大数据毕业设计案例】基于 Django 的微博热门事件数据采集与分析系统的设计与实现 基于舆情挖掘的微博热点事件智能分析系统(程序+文档+讲解+定制)
  • 一盏灯里的“中国制造”——从代工到品牌

最新新闻

  • PD SINK协议芯片介绍对比-ECP5702、FS312A、CH221K、HUSB238、AS225KL
  • 2026嵌入式核心模组选型指南与专业服务商洞察
  • WebSocket 安全审计:Burp Suite 拦截与重放 5 类消息漏洞实战
  • 从ng generate到AI generate:Angular CLI vs Cursor AI生成组件的Bundle Size、Lighthouse评分与TS类型安全对比实测(含12组基准数据)
  • 正则化参数 λ 调优指南:基于 K 折交叉验证的 5 步网格搜索法
  • 性价比高的合肥一对一上门家教哪个更专业

日新闻

  • SQL 查询语句的标准逻辑执行顺序(即语义处理顺序),它与实际书写顺序不同,但决定了数据库如何解析和执行查询
  • ORB-SLAM2 重定位模块深度解析:从 BoW 候选帧到 PnP 优化的 6 步流程
  • 罗技鼠标宏压枪脚本终极指南:从原理到实战的完整解析

周新闻

  • 基于YOLOv12的番茄成熟度智能检测系统开发
  • 终极RimWorld模组管理指南:用RimSort告别模组冲突烦恼
  • AI Agent框架开发:从理论到实践的完整指南

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号