探索数据的维度:多元线性回归在实际应用中的威力

文章目录

  • 🍀引言
  • 🍀什么是多元线性回归?
  • 🍀多元线性回归的应用
  • 🍀构建多元线性回归模型的步骤
  • 🍀R-squared(R平方)
  • 🍀多元线性回归案例---波士顿房价

🍀引言

当谈到回归分析时,多元线性回归是一个非常强大且常用的工具。它允许我们探索多个自变量与一个因变量之间的关系,并用一条线性方程来表示这种关系。在本文中,我们将深入探讨多元线性回归的概念、应用和解释,以及如何使用统计工具来进行模型的建立和评估。


🍀什么是多元线性回归?

多元线性回归是一种统计方法,用于研究多个自变量与一个连续因变量之间的关系。它基于线性方程的概念,即假设自变量与因变量之间存在线性关系。多元线性回归的数学表达式如下:

Y=β0+β1X1+β2X2+…+βpXp+εY=β0​+β1​X1​+β2​X2​+…+βp​Xp​+ε

在这个方程中,YY 是因变量,X1,X2,…,XpX1​,X2​,…,Xp​ 是自变量,β0,β1,β2,…,βpβ0​,β1​,β2​,…,βp​ 是回归系数,代表了每个自变量对因变量的影响,εε 是误差项。


🍀多元线性回归的应用

  1. 经济学

在经济学中,多元线性回归可以用来探索多个因素对某一经济指标(如GDP、通货膨胀率)的影响。例如,研究收入、失业率、教育水平等因素对某地区的经济增长的影响。

  1. 医学

医学研究中,可以利用多元线性回归来分析多个生活方式因素(如饮食、运动)与健康指标(如体重、血压)之间的关系,从而预测健康状况。

  1. 市场营销

在市场营销领域,可以使用多元线性回归来分析广告支出、促销活动等因素对销售额的影响,从而优化营销策略。


🍀构建多元线性回归模型的步骤

构建一个有效的多元线性回归模型需要以下步骤:

  1. 数据收集

收集包含因变量和多个自变量的数据集。确保数据质量良好,包括准确性和完整性。

  1. 特征选择

根据领域知识和统计方法,选择对因变量有显著影响的自变量。避免过多的自变量,以防止过拟合。

  1. 拟合模型

使用统计软件(如Python中的Scikit-learn、R等)来拟合多元线性回归模型,估计回归系数。

  1. 模型评估

通过检查回归系数的显著性、模型的拟合优度(如R平方值)等指标来评估模型的质量。

  1. 残差分析

分析模型的残差,检查是否满足回归假设,如误差项的独立性、常数方差等。

  1. 预测与解释

使用模型进行预测,并解释各个自变量对因变量的影响程度。可以通过回归系数的正负来判断自变量的影响方向。

🍀R-squared(R平方)

R-squared(R平方),也称为决定系数(coefficient of determination),是多元线性回归模型中常用的一个统计指标,用于衡量模型对因变量变异性的解释程度。它表示因变量的变异有多少可以被模型所解释。

R-squared的取值范围在0到1之间,其中:

  • 当 R-squared 接近 1 时,表示模型能够很好地解释因变量的变异,即模型拟合度较高,所用的自变量能够很好地解释因变量的波动。

  • 当 R-squared 接近 0 时,表示模型不能够很好地解释因变量的变异,模型可能没有捕捉到数据中的关键模式,或者模型不够适合数据。

R-squared 的计算公式如下:
请添加图片描述

import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
def r2_score(y_true,y_predict):return 1-((np.sum((y_true-y_predict)**2)/len(y_true))/np.var(y_true))
x = np.array([1.,2.,3.,4.,5.])
y = np.array([1.,3.,2.,3.,5.])
lin_reg = LinearRegression()
lin_reg.fit(x.reshape(-1,1),y)
y_predict = lin_reg.predict(x.reshape(-1,1))
r2_score(y,y_predict)
lin_reg.score(x.reshape(-1,1),y)

运行结果如下
在这里插入图片描述

其中,SSresSSres​ 是残差平方和(residual sum of squares),表示模型预测值与实际观测值之间的差异的平方和;SStotSStot​ 是总平方和(total sum of squares),表示实际观测值与因变量均值之间的差异的平方和。

R-squared 的值越接近1,表示模型的拟合效果越好。然而,需要注意的是,R-squared并不是一定越高越好。一个高的R-squared值并不一定意味着模型具有预测能力,因为过拟合问题可能会导致模型在训练数据上表现良好,但在新数据上表现较差。

因此,在解释多元线性回归模型的拟合程度时,需要结合其他评估指标,如调整后的R-squared、残差分析等,来综合评估模型的性能。

🍀多元线性回归案例—波士顿房价

下面我们一步一步分析一下如何使用多元线性回归预测波士顿房价

首先我们需要导入需要的库,并进行实例化

from sklearn.datasets import load_boston
boston.feature_names

之后我们可以查看一下相关的详细信息或者特征值

print(boston.DESCR)
boston.feature_names

在这里插入图片描述
在这里插入图片描述
这里我们取其中一列

x = boston.data[:,5].reshape(-1,1)
y = boston.target

这两行代码的作用是将波士顿房价数据集中的一个特定特征(第 5 列,例如可能是 “RM”,即每个住宅的平均房间数)作为输入特征 x,将房价作为目标变量 y。这样,您可以使用这些数据来训练机器学习模型,以尝试预测房价(目标变量 y)基于该特定特征(输入特征 x)

接下来我们需要进行一些必要的处理,用来剔除异常值

from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
import matplotlib.pyplot as plt
x = x[y<50]
y = y[y<50]
plt.scatter(x,y)

运行结果如下
在这里插入图片描述

x = x[y < 50]: 这一行代码通过布尔索引筛选出目标变量 y 小于 50 的样本所对应的输入特征 x。换句话说,它从之前准备的输入特征 x 和目标变量 y 中,保留了那些房价小于 50 的数据点的特征值。这种操作可以用来剔除异常值或不符合问题背景的数据点。
y = y[y < 50]: 这一行代码对目标变量 y 也进行了相同的过滤操作,只保留了与之前筛选出的输入特征 x 对应的目标变量值。

接下来我们要进行切割数据集,分为训练集和测试集,之后我们进行拟合得到R^2

x_train,x_test,y_train,y_test = train_test_split(x,y,random_state=666)
lin_reg = LinearRegression()
lin_reg.fit(x_train,y_train)
lin_reg.score(x_test,y_test)

运行结果如下
在这里插入图片描述
这里我们打印看看系数和截距
在这里插入图片描述
最后我们可以通过一条直线得到

plt.plot(x,lin_reg.predict(x),color='r')
plt.scatter(x,y)
plt.show()

运行结果如下
在这里插入图片描述

以上我们只考虑的一列,现在我们我们开始上真家伙
和上面类似

X = boston.data
y1 = boston.target
X = X[y1<50]
y1 = y1[y1<50]
X_train,X_test,y_train,y_test = train_test_split(X,y1,random_state=666)
lin_reg1 = LinearRegression()
lin_reg1.fit(X_train,y_train)
lin_reg1.score(X_test,y_test)

这里我们再打印系数和截距看看
在这里插入图片描述
普通的线性回复只有一个特征值,所以只有一个系数,多元线性回归有多个系数

最后我们可以看看哪个特征对整体影响大写

boston.feature_names[np.argsort(lin_reg1.coef_)]

运行结果如下
在这里插入图片描述

在波士顿房价数据集中,“NOX” 是一个代表一氧化氮浓度的特征。这个特征描述了一个地区的空气质量,即一氧化氮的浓度。在数据集中,“NOX” 的值是以浓度为单位的数值,表示在该地区的环境中一氧化氮的浓度水平。

请添加图片描述

挑战与创造都是很痛苦的,但是很充实。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/107424.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从0开始做yolov5模型剪枝

文章目录 从0开始做yolov5模型剪枝 ****1 前言2 GitHub取源码3 原理3.1 原理3.2 network slimming过程 4 具体实施步骤4.1 安装虚拟环境4.2 配置参数4.2.1 数据集参数4.2.2 模型结构参数4.2.3 train.py中的参数 4.3 正常训练4.3.1 准备4.3.2 训练及问题解决 4.4 稀疏化训练4.4.…

【STM32】FreeRTOS软件定时器学习

软件定时器 FreeRTOS提供了现成的软件定时器功能&#xff0c;可以一定程度上替代硬件定时器&#xff0c;但精度不高。 实验&#xff1a;创建一个任务&#xff0c;两个定时器&#xff0c;按键开启定时器&#xff0c;一个500ms打印一次&#xff0c;一个1000ms打印一次。 实现&…

论文阅读_条件控制_ControlNet

name_en: Adding Conditional Control to Text-to-Image Diffusion Models name_ch: 向文本到图像的扩散模型添加条件控制 paper_addr: http://arxiv.org/abs/2302.05543 date_read: 2023-08-17 date_publish: 2023-02-10 tags: [‘图形图像’,‘大模型’,‘多模态’] author: …

RabbitMQ默认监听的ip地址

RabbitMQ 默认监听所有可用 ip 地址&#xff0c;当Rabbitmq 所在的服务端节点上存在多 ip 时&#xff0c;只要客户端能与服务端任一 ip 通信&#xff0c;即可向 RabbitMQ 发送消息

Java“牵手”天猫商品销量API接口数据,天猫API接口申请指南

天猫平台商品销量接口是开放平台提供的一种API接口&#xff0c;通过调用API接口&#xff0c;开发者可以获取天猫商品的标题、价格、库存、月销量、总销量、库存、详情描述、图片等详细信息 。 获取商品销量接口API是一种用于获取电商平台上商品销量数据的接口&#xff0c;通过…

使用WSL修改docker文件存储位置

按照以下说明将其重新定位到其他驱动器/目录&#xff0c;并保留所有现有的Docker数据。 首先&#xff0c;右键单击Docker Desktop图标关闭Docker桌面&#xff0c;然后选择退出Docker桌面&#xff0c;然后&#xff0c;打开命令提示符&#xff1a; wsl --list -v您应该能够看到&a…

EWM怎么取消pinking,SAP_EWM取消拣配报错处理方式

EWM是SAP的一个模块&#xff0c;代表扩展仓库管理&#xff08;Extended Warehouse Management&#xff09;&#xff0c;是SAP企业资源计划&#xff08;ERP&#xff09;的一部分。它提供了一个完整的、高级的仓库管理解决方案&#xff0c;支持企业在全球范围内的仓库管理、订单管…

如何将pdf文件转换成word文档?

如何将pdf文件转换成word文档&#xff1f;PDF文档是我们日常办公中最为常用的电子文档格式的文件&#xff0c;也是在会议、教育培训以及商业营销中经常使用的文档格式。所以说PDF文档的功能较强&#xff0c;且应用场景较多。但是也有例外的时候&#xff0c;比如我们需要将PDF文…

LinkedList

LinkedList的模拟实现&#xff08;底层是一个双向链表&#xff09;LinkedList使用 LinkedList的模拟实现&#xff08;底层是一个双向链表&#xff09; 无头双向链表&#xff1a;有两个指针&#xff1b;一个指向前一个节点的地址&#xff1b;一个指向后一个节点的地址。 节点定…

【LeetCode-中等题】48. 旋转图像

文章目录 题目方法一&#xff1a;使用辅助数组矩阵 行列的规律方法二&#xff1a;原地修改 递推公式 题目 方法一&#xff1a;使用辅助数组矩阵 行列的规律 public void rotate(int[][] matrix) {int n matrix.length;int[][] matrix_new new int[n][n];for(int i 0 ; i<…

Linux学习笔记-Ubuntu系统下配置ssh免密访问

Ubuntu系统下配置ssh免密访问 一、基本信息二、ssh安装2.1 查看是否已经安装ssh2.2 安装ssh2.3 查看ssh安装状态 三、启动、停止&#xff0c;及开机自启动3.1 启动ssh3.2 关闭ssh3.3 使用systemctl设置ssh服务自启动3.4 使用systemctl关闭ssh开机启动 四、配置通过密钥进行免密…

香港服务器是什么?

香港服务器是指位于香港地区的云服务器或物理服务器。香港作为一个重要的国际金融和商业中心&#xff0c;具有良好的地理位置和先进的网络基础设施。香港服务器提供稳定的网络连接和高性能&#xff0c;可用于托管网站、应用程序和数据存储等各种互联网服务。 香港服务器具有以…

研磨设计模式day10中介者模式

目录 场景 思考 解决思路 模式讲解 调用示意图 中介者模式的优缺点 中介者模式的本质 何时选用 场景 如果没有主板&#xff0c;电脑各个配件怎么交互呢&#xff1f; 有些配件接口不同&#xff0c;必须把数据接口进行转换才能匹配上,无敌复杂。 有了主板之后就是下面这…

【leetcode 力扣刷题】链表基础知识 基础操作

链表基础知识 基础操作 链表基础操作链表基础知识插入节点删除节点查找节点 707. 设计链表实现&#xff1a;单向链表&#xff1a;实现&#xff1a;双向链表 链表基础操作 链表基础知识 在数据结构的学习过程中&#xff0c;我们知道线性表【一种数据组织、在内存中存储的形式】…

java八股文面试[多线程]——合适的线程数是多少

知识来源&#xff1a; 【并发与线程】 合适的线程数量是多少&#xff1f;CPU 核心数和线程数的关系&#xff1f;_哔哩哔哩_bilibili

03.sqlite3学习——数据类型

目录 sqlite3学习——数据类型 SQL语句的功能 SQL语法 SQL命令 SQL数据类型 数字类型 整型 浮点型 定点型decimal 浮点型 VS decimal 日期类型 字符串类型 CHAR和VARCHAR BLOB和TEXT SQLite 数据类型 SQLite 存储类 SQLite 亲和类型(Affinity)及类型名称 Boo…

如何使用PHP实现多语言网站功能

如何使用PHP实现多语言网站功能 在全球化的今天&#xff0c;开发多语言网站成为了一个必要的需求。PHP作为一种常用的编程语言&#xff0c;可以很方便地实现多语言网站功能。本文将介绍如何使用PHP实现多语言网站功能&#xff0c;并提供相应的代码示例。 一、创建语言文件 首先…

如果将PC电脑变成web服务器:使用python3监测公网IP实现DDNS

如果将PC电脑变成web服务器&#xff1a;使用python3监测公网IP实现DDNS 上一篇文章中&#xff0c;我们使用Nignx的反向代理和端口转发实现域名访问家里主机上的web了。 由于家庭宽带基本都是动态IP&#xff0c;每当你重启一次光猫&#xff0c;IP地址就会变化一次。当光猫因为…

ubuntu修改默认文件权限umask

最近在使用ubuntu的过程中发现一个问题&#xff1a; 环境是AWS EC2&#xff0c;登录用户ubuntu&#xff0c;系统默认的umask是027&#xff0c;修改/etc/profile文件中umask 027为022后&#xff0c;发现从ubuntu用户sudo su过去root用户登录查询到的umask还是027&#xff0c;而…