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

news2024/11/15 21:33:06

文章目录

  • 🍀引言
  • 🍀什么是多元线性回归?
  • 🍀多元线性回归的应用
  • 🍀构建多元线性回归模型的步骤
  • 🍀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.coloradmin.cn/o/934321.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

开源软件与知识产权:需要注意什么?

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

【Kaggle】使用Kaggle快速下载GitHub等国外网站的文件|GitHub下载加速

痛点 很多时候直接从GitHub或者其他国外网站下载文件速度会很慢 所以这里就提供一个利用Kaggle加速GitHub下载文件的方法 解决方法 Kaggle是什么&#xff1f; 感兴趣的可以看一下这个&#xff0c;不看也不影响 怎么做 首先登录kaggle&#xff0c;新建一个notebook 复制下…

软件工程(十三) 设计模式之结构型设计模式(一)

前面我们记录了创建型设计模式,知道了通过各种模式去创建和管理我们的对象。但是除了对象的创建,我们还有一些结构型的模式。 1、适配器模式(Adapter) 简要说明 将一个类的接口转换为用户希望得到的另一个接口。它使原本不相同的接口得以协同工作。 速记关键字 转换接…

【Go 基础篇】Go语言中的自定义错误处理

错误是程序开发过程中不可避免的一部分&#xff0c;而Go语言以其简洁和高效的特性闻名。在Go中&#xff0c;自定义错误&#xff08;Custom Errors&#xff09;是一种强大的方式&#xff0c;可以为特定应用场景创建清晰的错误类型&#xff0c;以便更好地处理和调试问题。本文将详…

ModaHub魔搭社区:WinPlan经营大脑管理中心

角色权限 展示设置的角色,及对应的成员及权限点。角色、成员、权限点可自由配置;管理员的角色不可删除、权限点默认全部不可更改。 WinPlan决策系统 算力 阿里云 腾讯云 AWS亚马逊 框架 业务数据基座 WinPlan垂直大模型 模型 分

必抓!程序员必备的关键算法:探索编程世界的珍宝

嗨&#xff0c;亲爱的编程同道们&#xff01;在这个码农的世界里&#xff0c;算法就像我们的剑与盾&#xff0c;为我们打开问题的大门。不论你是新手刚踏入编程领域&#xff0c;还是老手早已颇有心得&#xff0c;总有那几种算法是我们绝对不能错过的&#xff0c;它们是你编程路…

华为手机实用功能介绍

一、内置app介绍 分四块介绍&#xff0c;包括出门款、规划款、工作款和生活款。 出门款&#xff1a;红色框框部分&#xff0c;照镜子化妆/看天气 规划款&#xff1a;黄色框框部分&#xff0c;日程表/计划表/番茄时间/计时 工作款&#xff1a;蓝色框框部分&#xff0c;便笺/录…

R语言响应面(RSM)、线性模型lm分析生产过程影响因素可视化

全文链接&#xff1a;https://tecdat.cn/?p33499 响应面&#xff08;Response Surface Methodology&#xff0c;RSM&#xff09;分析是一种常用的统计方法&#xff0c;用于研究和优化生产过程中的影响因素。通过建立数学模型来描述因素与响应之间的关系&#xff0c;RSM可以帮助…

实战项目 在线学院springcloud调用篇3(nacos,feging,hystrix,gateway)

一 springcloud与springboot的关系 1.1 关系 1.2 版本关系 1.3 list转json串 public class Test {public static void main(String[] args) {List<String> dataListnew ArrayList<String>();dataList.add("12");dataList.add("45");dataLi…

【CSS】CSS 特性 ( CSS 优先级 | 优先级引入 | 选择器基本权重 )

一、CSS 优先级 1、优先级引入 定义 CSS 样式时 , 可能出现 多个 类型相同的 规则 定义在 同一个元素上 , 如果 CSS 选择器 相同 , 执行 CSS 层叠性 , 根据 就近原则 选择执行的样式 , 如 : 出现两个 div 标签选择器 , 都设置 color 文本颜色 ; <style>div {color: re…

DQL语句的用法(MySQL)

文章目录 前言一、DQL语句间接和语法1、DQL简介2、DQL语法 二、DQL语句使用1、基础查询&#xff08;1&#xff09;查询多个字段&#xff08;2&#xff09;为字段设置别名&#xff08;3&#xff09;去除重复记录 总结 前言 本文主要介绍SQL语句中DQL语句的功能和使用方法&#…

【Go 基础篇】Go语言中的数组:初识与应用

Go语言以其简洁、高效和强大的特性在编程界广受欢迎。数组作为一种基本的数据结构&#xff0c;在各种应用场景中扮演着重要角色。本文将引入Go语言中的数组&#xff0c;介绍其特点、创建、初始化以及基本应用&#xff0c;为你打开数组的大门。 前言 数组是一种固定大小的数据…

【LeetCode75】第三十八题 二叉树的最近公共祖先

目录 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 代码&#xff1a; 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 给我们一棵二叉树&#xff0c;然后给我们pq两个节点&#xff0c;让我们找出二叉树中它们俩的最近的公共祖先。 那么什么样的节点是它们俩…

Linux常用命令——df命令

在线Linux命令查询工具 df 显示磁盘的相关信息 补充说明 df命令用于显示磁盘分区上的可使用的磁盘空间。默认显示单位为KB。可以利用该命令来获取硬盘被占用了多少空间&#xff0c;目前还剩下多少空间等信息。 语法 df(选项)(参数)选项 -a或--all&#xff1a;包含全部的…

C#,《小白学程序》第六课:队列(Queue)的应用————《实时叫号系统》

1 文本格式 /// <summary> /// 下面定义一个新的队列&#xff0c;用于演示《实时叫号系统》 /// </summary> Queue<Classmate> q2 new Queue<Classmate>(); /// <summary> /// 《小白学程序》第六课&#xff1a;队列&#xff08;Queue&#xf…

用Python画出极坐标的基向量

文章目录 极坐标基向量的推导可视化 极坐标基向量的推导 极坐标其实很神奇&#xff0c;一方面&#xff0c;它描述的是平直时空&#xff0c;另一方面&#xff0c;任意两点间的坐标差为 d r , d θ \text dr, \text d\theta dr,dθ时&#xff0c;两点间的距离却是不固定的。极坐…

wxpython + cef 是优秀的 WebView 组件

CEF 即 (Chromium Embedded Framework)&#xff1b;cef 是优秀的 WebView 组件。 pip install wxpython4.2 wxPython-4.2.0-cp37-cp37m-win_amd64.whl (18.0 MB) Successfully installed wxpython-4.2.0 pip install cefpython3 cefpython3-66.1-py2.py3-none-win_amd64.whl …

springboot+vue基于 JAVA 的医院门诊信息管理系统的设计与实现 f1ls0

系统根据现有的管理模块进行开发和扩展&#xff0c;采用面向对象的开发的思想和结构化的开发方法对医院门诊信息的现状进行系统调查。采用结构化的分析设计&#xff0c;该方法要求结合一定的图表&#xff0c;在模块化的基础上进行系统的开发工作。在设计中采用“自下而上”的思…

多线程和并发(1)—等待/通知模型

一、进程通信和进程同步 1.进程通信的方法 同一台计算机的进程通信称为IPC&#xff08;Inter-process communication&#xff09;&#xff0c;不同计 算机之间的进程通信被称为 RPC(Romote process communication)&#xff0c;需要通过网络&#xff0c;并遵守共同的协议。**进…

每日三题 1448统计二叉树中好节点的个数 100相同的树 101对称二叉树

1448 题目 给你一棵根为 root 的二叉树&#xff0c;请你返回二叉树中好节点的数目。 「好节点」X 定义为&#xff1a;从根到该节点 X 所经过的节点中&#xff0c;没有任何节点的值大于 X 的值。 示例 1&#xff1a; 输入&#xff1a;root [3,1,4,3,null,1,5] 输出&#xff…