回归分析:预测和建模

回归分析:预测和建模

  • 写在开头
  • 1. 回归分析的基本概念
  • 2. 回归分析的方法
    • 2.1 简单线性回归
      • 2.1.1 数学知识
      • 2.1.2 应用举例
    • 2.2 多元线性回归
      • 2.2.1 数学公式和应用
      • 2.2.1 应用场景举例
    • 2.3 多项式回归
      • 2.3.1 数学公式和应用
      • 2.3.2 应用场景举例
    • 2.4 逻辑回归
      • 2.4.1 数学公式和应用
      • 2.4.2 应用场景举例
  • 3.模型评估
    • 3.1 均方误差(Mean Squared Error,MSE):
    • 3.2 均方根误差(RMSE):
    • 3.3 决定系数(Coefficient of Determination,R²)
    • 3.4 平均绝对误差(Mean Absolute Error,MAE)
    • 3.5 拟合优度(Goodness of Fit)
    • 3.6 交叉验证
  • 写在最后

写在开头

回归分析是数据科学中一项不可或缺的工具,为我们提供了洞察变量之间关系的能力,使我们能够更准确地预测未来趋势并进行有力的建模。在本篇博客中,我们将深入探讨回归分析的核心概念和方法,通过具体场景、实例代码以及深刻的统计学知识,助力读者在预测与建模的复杂领域中游刃有余。

1. 回归分析的基本概念

回归分析旨在探讨一个或多个自变量与因变量之间的关系。其中,自变量是影响因变量的因素,而因变量是我们希望预测或解释的变量。简而言之,回归分析可以帮助我们了解变量之间的相互作用,并用这些关系进行预测。

2. 回归分析的方法

下面是回归分析的一些对比和介绍,可以帮助你更好的理解回归分析。

回归类型 优点 缺点 适用范围 注意事项 应用场景举例
简单线性回归 - 易于理解和实现。 - 仅适用于线性关系。 - 适用于仅包含一个自变量和一个因变量的简单关系。 - 确保数据符合线性假设。 - 广告费用与销售额之间的关系。
多元线性回归 - 考虑多个自变量,能够更准确地建模真实世界复杂关系。 - 对多重共线性敏感。 - 适用于多个自变量与一个因变量之间的复杂关系。 - 检测和处理多重共线性。 - 房价与面积、卧室数量、浴室数量等因素的关系。
多项式回归 - 能够拟合非线性关系。 - 对高阶多项式的拟合可能过度复杂,容易过拟合。 - 适用于数据呈现非线性关系,但避免使用过高阶多项式。 - 谨慎选择多项式的阶数,避免过拟合。 - 温度与销售额之间可能存在非线性关系。
逻辑回归 - 用于二分类问题,输出结果可解释为概率。 - 对多类别问题不直接适用。 - 适用于二分类问题,如是/否、成功/失败等。 - 确保样本均衡,避免过拟合。 - 产品是否被购买的预测,疾病是否发病的概率预测。

在选择回归分析方法时,需要综合考虑数据的性质、问题的复杂程度以及模型的可解释性。不同类型的回归方法各有优劣,合适的方法应根据具体情况进行选择。注意事项的遵循可以提高建模的准确性和可靠性,确保模型的实际应用效果更好.

2.1 简单线性回归

简单线性回归是一种统计分析方法,用于研究两个变量之间的关系。它假设有一个自变量(输入变量)和一个因变量(输出变量)之间存在线性关系。简单线性回归的目标是建立一条直线,描述自变量和因变量之间的关系,使得通过该直线可以预测或解释因变量的值。

2.1.1 数学知识

简单线性回归模型的数学表示为: y = β 0 + β 1 x + ε y = \beta_0 + \beta_1x + \varepsilon y=β0+β1x+ε

其中, y y y是因变量, x x x是自变量, β 0 \beta_0 β0 β 1 \beta_1 β1是回归方程的截距和斜率, ε \varepsilon ε是误差项,代表模型无法解释的随机误差。

在简单线性回归中,通过收集一组包含自变量和因变量值的数据,使用统计方法拟合直线,以找到最适合数据的回归线。这条拟合的直线可以帮助理解自变量和因变量之间的关系,并用于预测新的因变量值,基于给定的自变量值。简单线性回归是回归分析中的基础,它可以用于探索和量化两个变量之间的线性关系,但需要注意,它仅适用于具有线性关系的数据,并且在应用时需要满足一些假设前提。

2.1.2 应用举例

在python中来构建线性回归的模型非常多,比如scikit-learn,Statsmodels,TensorFlow,PyTorch,XGBoost,LightGBM,CatBoost等等,非常之多。在这里我们以 Python 中的 scikit-learn 库展示相应的代码。

假设我们有一组包含广告费用和销售额的数据,以此来建立简单的线性回归分析模型,代码如下:

import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression

# 生成模拟数据
np.random.seed(1)
ad_costs = np.random.rand(100, 1) * 50  # 广告费用(假设范围在0到50之间)
sales = 15 + 0.5 * ad_costs + np.random.randn(100, 1) * 5  # 生成销售额数据(加入随机噪声)

# 绘制数据散点图
plt.scatter(ad_costs, sales, label='原始数据')
plt.title('广告费用与销售额关系')
plt.xlabel('广告费用')
plt.ylabel('销售额')

# 使用线性回归模型拟合数据
model = LinearRegression()
model.fit(ad_costs, sales)

# 打印R方,系数和截距
r_squared = model.score(ad_costs, sales)
print('R方值:', r_squared)
print('模型系数 (斜率):', model.coef_[0][0])
print('模型截距:', model.intercept_[0])

# 绘制回归线
plt.plot(ad_costs, model.predict(ad_costs), color='red', label='回归线')

plt.legend()
plt.show()

运行上述代码后,结果如下图:
1.1
从上面的运行结果来看,建立的数据模型的R方值为0.704,这说明上述的线性回归模型,能解释70.4%的销售额变化。这个构建好的关系表达式为 y = 0.4685 ∗ x + 16.1848 y = 0.4685 * x +16.1848 y=0.4685x+16.1848。从R方的值来看,这个构建的模型效果还算ok,如果我们追求更高的拟合程度,可以考虑引入更多的特征、构建多项式回归、进行特征工程或使用其他模型。

2.2 多元线性回归

多元线性回归是用于研究多个自变量与一个因变量之间的关系。与简单线性回归不同,多元线性回归包含多个自变量,通过建立一个线性模型来探索和解释这些自变量与因变量之间的关系。

2.2.1 数学公式和应用

多元线性回归模型的数学表示为:
y = β 0 + β 1 x 1 + β 2 x 2 + … + β p x p + ε y = \beta_0 + \beta_1x_1 + \beta_2x_2 + \ldots + \beta_px_p + \varepsilon y=β0+β1x1+β2x2++βpxp+ε

其中, y y y是因变量, x 1 , x 2 , … , x p x_1, x_2, \ldots, x_p x1,x

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Shell循环:whileuntil

一、特点:循环次数[一定]是固定的 二、while语句结构 while 条件测试 do 循环体 done 当条件测试成立(条件测试为真),执行循环体 演示: 需求:每秒显示一个数字,一…

MySQL进阶_EXPLAIN重点字段解析

文章目录 第一节.准备1.1 版本信息1.2 准备 第二节.type2.1 system2.2 const2.3 eq_ref2.4 ref2.5 ref_or_null2.6 index_merge2.7 unique_subquery2.8 range2.9 index2.10 all 第三节. Extra3.1 No tables used3.2 No tables used3.3 Using where3.4 No matching min/max row3…

leetcode - 矩阵区域和

1314. 矩阵区域和 - 力扣&#xff08;LeetCode&#xff09; 给你一个 m x n 的矩阵 mat 和一个整数 k &#xff0c;请你返回一个矩阵 answer &#xff0c;其中每个 answer[i][j] 是所有满足下述条件的元素 mat[r][c] 的和&#xff1a; i - k < r < i k, j - k < c …

Day48力扣打卡

打卡记录 最大化城市的最小电量&#xff08;二分前缀和差分数组贪心&#xff09; 链接 class Solution:def maxPower(self, stations: List[int], r: int, k: int) -> int:n len(stations)sum list(accumulate(stations, initial0))for i in range(n):stations[i] sum[…

速达软件全系产品存在任意文件上传漏洞 附POC

@[toc] 速达软件全系产品存在任意文件上传漏洞 附POC 免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用。…

Fiddler抓包工具之fiddler设置手机端抓包

fiddler设置手机端抓包 安卓手机抓包 第一步&#xff1a;配置电脑和安卓的相关设置 1、手机和fiddler位于同一个局域网内&#xff1b;首先从fiddler处获取到ip地址和端口号&#xff1a; &#xff0c;点击online&#xff0c;最后一行就是ip地址 2、路径&#xff1a;Tools》O…

栈和队列的OJ题--13.用队列实现栈

13. 用队列实现栈 225. 用队列实现栈 - 力扣&#xff08;LeetCode&#xff09; /*解题思路&#xff1a; 此题可以用两个队列去实现一个栈&#xff0c;每次始终保持一个队列为空&#xff0c; 入栈操作相当于给非空队列进行入队操作 出栈操作相当于非空队列的队尾元素出队&…

RT-Thread ADC_DMA

看到这里&#xff0c;相信大家已经尝试过网上各类ADC_DMA传输的文章&#xff0c;且大多都并不能实现&#xff0c;因为在RT-Thread中并没有找到关于ADC的DMA接口&#xff0c;在官方例程中有关DMA的传输也只有一个串口接收的介绍&#xff0c;找遍全网怕也没能找到真正有用的消息。…

0基础学java-day13

一、包装类 1. 包装类的分类 1) 针对八种基本数据类型相应的引用类型【对象】—包装类 2) 有了类的特点&#xff0c;就可以调用类中的方法。 3) 如图: 2 包装类和基本数据的转换 3 案例演示 Integer01.java package com.hspedu.wrapper;/*** author 林然* version 1.0*/ p…

Python的模块与库,及if __name__ == ‘__main__语句【侯小啾python领航班系列(二十四)】

Python的模块与库,及if name == __main__语句【侯小啾python领航班系列(二十四)】 大家好,我是博主侯小啾, 🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ…

RC低通滤波电路直接带载后会发生什么?

1、滤波的含义 滤波是频域范畴&#xff0c;它说的是不同频率的信号经过一个电路处理后&#xff0c;信号发生变化的问题&#xff0c;变化包含了原始信号幅值和相位的变化&#xff0c;滤波电路对信号的幅值做出的响应称为幅频响应&#xff0c;对信号相位做出的反应称为相频响应。…

19.字符串——查找三个字符串中的最大字符串(打擂台)

文章目录 前言一、题目描述 二、题目分析 三、解题 程序运行代码 四、举一反三总结 前言 本系列为字符串处理函数编程题&#xff0c;点滴成长&#xff0c;一起逆袭。 一、题目描述 查找三个字符串中的最大字符串 二、题目分析 打擂台 三、解题 程序运行代码 #include<…

Jave内存模型 与 CPU硬件架构 的交互图

JMM里所讲的主内存、工作内存与Java内存区域中的Java堆、栈、方法区等并不是同一个层次的对内存的划分&#xff0c;这两者基本上是没有任何关系的。 如果两者一定要勉强对应起来&#xff0c;那么从变量、主内存、工作内存的定义来看&#xff0c;主内存主要对应于Java堆中的对象…

Python进度条魔法解密,任务进展新玩法!

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 在日常编程和应用开发中&#xff0c;展示进度条是一种常见的技巧。不仅能够提供用户友好的体验&#xff0c;还可以显示任务执行的进度。Python作为一种多才多艺的编程语言&#xff0c;提供了多种方法来创建进度条…

Linux 防火墙

目录 安全技术 防火墙的分类 按保护范围划分 按实现方式划分 按网络协议划分 应用层防火墙&#xff08;7层&#xff09; 防火墙的工作原理 linux防火墙的基本认识 防火墙工具介绍 1.iptables 2.firewalld 3.nftables 安全技术 —— 入侵检测系统&#xff08;Intru…

HGNN+笔记

1.Title HGNN: General Hypergraph Neural Networks&#xff08;Yue Gao; Yifan Feng; Shuyi Ji; Rongrong Ji&#xff09;【IEEE Transactions on Pattern Analysis and Machine Intelligence 2023】 2.Conclusion This paper extend the original conference version HGNN,…

送女朋友一个猜数字小游戏,猜对了会显示爱心(给你心爱的他或她一个惊喜)

起因是我在学习C语言完成老师布置C语言写一个猜数字的作业&#xff0c;突发奇想&#xff0c;能不能在这个猜对了之后弹出一个不一样的页面&#xff0c;然后就试试看能不能实现。基本思路是这样的&#xff1a; 1&#xff1a;先写一个C语言的猜数字的小游戏&#xff0c;在我上个文…

Unity Meta Quest 一体机开发(八):【手势追踪】实现 Hand Grab 扔物体功能

文章目录 &#x1f4d5;教程说明&#x1f4d5;设置刚体和碰撞体&#x1f4d5;给物体添加 Physics Grabbable 脚本&#x1f4d5;给手部添加 Hand Velocity Calculator 物体 此教程相关的详细教案&#xff0c;文档&#xff0c;思维导图和工程文件会放入 Spatial XR 社区。这是一…

基于springboot 学生学情预警系统-计算机毕设 附源码57567

springboot 学生学情预警系统 摘 要 科技进步的飞速发展引起人们日常生活的巨大变化&#xff0c;电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流&#xff0c;人类发展的历史正进入一个新时代。在现实运…

Xshell全局去除提示音

使用Xshell的时候经常会按TAB或者一些操作指令的时候的时候听到提示音&#xff0c;非常的烦 通常来说在Xshell中可以单独修改每一个会话的属性&#xff0c;将提示音关闭&#xff0c;但是新增的会话依然带有提示音&#xff0c;还得一个个的关闭&#xff0c;非常麻烦&#xff0c;…
最新文章