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

【Python数据分析】房价预测:使用线性回归模型预测波士顿房价

在这里插入图片描述

博客主页:小馒头学python

本文专栏: Python爬虫五十个小案例

专栏简介:分享五十个Python爬虫小案例

在这里插入图片描述

📝引言

📝房价预测的意义

房价预测对于房地产行业、投资者和政策制定者来说具有重要意义。通过对房价进行准确预测,投资者可以做出更明智的决策,而政策制定者可以更好地理解市场变化,制定相关政策。本博客将使用波士顿房价数据集,通过线性回归模型来预测房价。

📝波士顿房价数据集简介

波士顿房价数据集是一个经典的机器学习数据集,包含了506个样本和13个特征,特征描述了不同的房屋属性和区域特征,目标变量为房屋的中位数房价(以千美元计)。我们将使用这些特征来预测房价。

特征包括:

  • CRIM: 城区犯罪率
  • ZN: 住宅用地比例
  • INDUS: 非零售商业用地比例
  • CHAS: 是否位于查尔斯河旁(1 = 是,0 = 否)
  • NOX: 氮氧化物浓度
  • RM: 每栋住宅的平均房间数
  • AGE: 建造年代
  • DIS: 到就业中心的加权距离
  • RAD: 公路接入指数
  • TAX: 房产税率
  • PTRATIO: 学生与教师比例
  • B: 城市区域内黑人的比例
  • LSTAT: 低收入人群比例

📝线性回归模型简介

线性回归是一种预测模型,它通过线性关系将自变量与因变量连接起来。我们的目标是根据不同特征(如犯罪率、房屋平均房间数等)预测房价。线性回归模型会拟合一个线性方程,通过最小化预测值与真实值之间的误差,来找到最优的回归系数。

📝数据加载与预处理

📝数据集介绍

首先,我们加载波士顿房价数据集,并查看数据的基本情况。

import pandas as pd
from sklearn.datasets import load_boston

# 加载波士顿房价数据集
boston = load_boston()

# 将数据转化为DataFrame格式
df = pd.DataFrame(boston.data, columns=boston.feature_names)

# 添加目标变量
df['PRICE'] = boston.target

# 查看前几行数据
print(df.head())

📝数据清洗与预处理

检查数据中是否有缺失值,并进行处理。如果存在缺失值,可以选择删除缺失数据或进行填充。

# 检查缺失值
print(df.isnull().sum())

# 在本例中,波士顿数据集没有缺失值,若有缺失值可以使用填充或删除策略

📝特征工程

📝选择特征

在本例中,我们将使用数据集中的所有特征来训练模型,即将所有列作为输入特征,PRICE 列作为目标变量。

# 选择特征和目标变量
X = df.drop(columns='PRICE')  # 输入特征
y = df['PRICE']  # 目标变量

📝数据标准化

因为特征的尺度不同(例如,CRIM为犯罪率,而TAX为税率),我们需要对特征进行标准化处理,使得每个特征具有相同的尺度。这样有助于提升模型的训练效果。

from sklearn.preprocessing import StandardScaler

# 标准化特征
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

📝构建线性回归模型

📝线性回归算法原理

线性回归试图通过以下公式来拟合数据:

在这里插入图片描述

📝模型训练

使用sklearn中的LinearRegression来训练模型

from sklearn.linear_model import LinearRegression

# 创建线性回归模型
model = LinearRegression()

# 训练模型
model.fit(X_scaled, y)

# 查看模型的截距和系数
print(f'截距: {model.intercept_}')
print(f'系数: {model.coef_}')

📝模型评估

📝使用均方误差(MSE)和决定系数(R²)评估模型

模型训练后,我们可以使用均方误差(MSE)和R²评分来评估模型的表现。MSE衡量预测结果和真实结果之间的差异,R²评分表示模型对数据方差的解释程度。

from sklearn.metrics import mean_squared_error, r2_score

# 使用模型进行预测
y_pred = model.predict(X_scaled)

# 计算均方误差(MSE)
mse = mean_squared_error(y, y_pred)
print(f'Mean Squared Error (MSE): {mse}')

# 计算R²得分
r2 = r2_score(y, y_pred)
print(f'R² Score: {r2}')

部分案例示意图如下:
在这里插入图片描述

  • 均方误差(MSE):这是一个衡量模型预测准确度的指标。它计算了模型预测值与实际值之间差异的平方的平均值。MSE越小,表示模型预测的越准确。在您的例子中,MSE是21.89,意味着平均来说,预测的房价与实际房价相差21.89千美元。

  • 决定系数(R² Score):这是一个衡量模型好坏的指标,它的值在0到1之间。R²值越接近1,表示模型对数据的解释能力越强,也就是说模型预测的越准确。在您的例子中,R²值是0.7406,这意味着模型可以解释房价变化的74.06%,这是一个相对较高的值,表明模型的预测效果不错。

  • 截距和系数:

    • 截距:这是当所有特征都为0时,模型预测的房价。在您的例子中,截距是22.53千美元。
    • 系数:这些数字表示每个特征对房价的影响。正系数意味着特征值增加时,房价预测值也会增加;负系数则表示特征值增加时,房价预测值会减少。

📝模型调优

如果模型表现不佳,可以尝试以下调优方法:

  • 选择不同的特征:去掉冗余或不相关的特征。
  • 尝试不同的模型:例如使用岭回归(Ridge)或Lasso回归来改进线性回归模型。

📝总结

📝模型表现总结

通过线性回归模型,我们成功地预测了波士顿的房价,并使用MSE和R²评分对模型进行了评估。虽然线性回归是一个基础模型,但它在许多实际问题中都能提供一个不错的基准。如果感兴趣的小伙伴可以自行尝试其他的数据集进行数据分析~

📝未来改进方向

  • 采用更多先进的模型,如随机森林、梯度提升树(GBDT)等。
  • 针对数据进行更多的特征工程处理,例如特征选择、特征交叉等。
  • 尝试更多的数据集进行模型验证,以提高模型的泛化能力。

若感兴趣可以访问并订阅我的专栏:Python数据分析五十个小案例:https://blog.csdn.net/null18/category_12840404.html?fromshare=blogcolumn&sharetype=blogcolumn&sharerId=12840404&sharerefer=PC&sharesource=null18&sharefrom=from_link
请添加图片描述


http://www.kler.cn/a/416631.html

相关文章:

  • spark同步mysql数据到sqlserver
  • Nuxt.js 应用中的 render:response 事件钩子
  • 如何快速上手UPR ---查看资源检测报告
  • 摄影相关常用名词
  • springboot vue 开源 会员收银系统 (12)购物车关联服务人员 订单计算提成
  • 在内网工作时,如何使用 vscode remote ssh 去连接内网服务器?
  • 《白帽子讲Web安全》15-16章
  • 渐冻症:在困境中寻找希望之光
  • 【排序用法】.NET开源 ORM 框架 SqlSugar 系列
  • SpringBoot 架构助力夕阳红公寓管理系统可持续发展战略
  • 半桥LLC谐振变换器及同步整流MATLAB仿真(二)
  • UE5_CommonUI简单使用(2)
  • 电脑启动需要经历哪些过程?
  • 如何看linux系统内核是aarch64 ,还是64-bit
  • 【AI】学习路径
  • 2023信息安全管理与评估-linux应急响应-1
  • C++软件设计模式之组合模式概述
  • HTML 中 a 标签跳转问题总结:从框架页面跳转的困境与突破
  • 2411mfc,修改按钮颜色
  • BWO-CNN-BiGRU-Attention白鲸优化算法优化卷积神经网络结合双向门控循环单元时间序列预测,含优化前后对比
  • SpringAi整合免费大模型(NVIDIA)
  • 电子应用设计方案-31:智能AI音响系统方案设计
  • Python3 爬虫 Scrapy的使用
  • 力扣--LCR 124. 推理二叉树
  • aws(学习笔记第十五课) 如何从灾难中恢复(recover)
  • Ubuntu 包管理