当前位置: 首页 > news >正文

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

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. 总结:

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

http://www.jsqmd.com/news/1151619/

相关文章:

  • Rust Bevy 0.13 到 0.14 升级踩坑指南
  • 变分推断 vs MCMC:3 大维度对比与贝叶斯计算选型指南
  • 从零构建Claude-MCP协同工作流:企业DevOps团队必须掌握的4层认证与审计规范
  • 2026 上海嘉定企业 GEO 优化服务商深度测评:本地制造企业优选企优托一网推罗琪
  • 游戏画面撕裂原理解析:从帧率、垂直同步到G-Sync/FreeSync 3种解决方案对比
  • 一盏灯里的“中国制造”——从代工到品牌
  • F12 Overrides/Sources 页面应用:5分钟实现JS文件本地替换与调试
  • AIGC 全流程解析:从剧本到视频的完整创作指南
  • 告别风扇噪音!Windows终极风扇控制软件FanControl完全指南 [特殊字符]️
  • 隧道照明新标准2025-2026全解析:GB37478、GB/T32481合规指南
  • 终极解决方案:如何彻底解决Windows运行库缺失问题
  • OBS背景音乐插件_新手教程篇
  • 2026年必尝:健康美味的苦荞全麦片企业推荐
  • AI短剧不是梦!一个人一台电脑月入过万,完整制作全链路拆解
  • RK3568平台开发系列讲解(以太网篇)PHY芯片寄存器说明
  • Java 竟能调用 R 搞数据,R 强大功能让 Java 数据处理如虎添翼
  • 2026年透明胶带制造厂大盘点,这些知名厂家你知道几个?
  • 3个核心功能:全面掌握暗黑破坏神2存档编辑器d2s-editor
  • 动态规划完整讲解
  • 终极指南:三分钟在Audacity中部署OpenVINO AI音频插件
  • 西安同城货运平台开发系统,整车货源智能分发技术讲解
  • AIGC Agent技术架构解析与开发实战:从原理到企业级应用
  • 茶叶商城销售系统
  • MPW与Full Mask流片决策:3大成本模型与5个量产风险评估要点
  • PS报“暂存盘已满“先别慌!这3步清出30G,草稿一张都没丢
  • 3个月实战总结:顺德鱼生选油秘籍,轻松去腥味
  • Scaling Laws 实战:3步利用小模型预测GPT-4级大模型性能
  • 西安预约打车小程序搭建,订单超时自动取消逻辑实现
  • 【2026最新】MySQL安装教程:超详细图文讲解(附MySQL安装包)
  • 6.30-取消TMC消息通知4