首页 > 其他分享 >关于最小二乘法

关于最小二乘法

时间:2024-09-26 22:19:26浏览次数:3  
标签:plt 最小 关于 np 数据 我们 乘法

最小二乘法的核心思想简单而优雅:我们希望找到一条最佳的曲线,使其尽可能贴近所有的数据点。想象一下,当你在画布上描绘一条线,目标是让这条线与点的距离最小。数学上,这可以表示为:

在这个公式中,yi​ 是你观察到的值,f(xi) 则是你预测的值。通过调整模型的参数,我们努力去缩小这个误差的平方和,直到找到最完美的曲线。

多项式回归

如果说线性回归是最小二乘法的基础,那么多项式回归则为它增添了丰富的层次。通过将数据点拟合成一条曲线,我们可以捕捉到更复杂的趋势。比如,二次回归模型能够揭示数据中潜藏的非线性关系,让我们看到更真实的画面。

非线性最小二乘法

生活中的许多现象并不是线性的,这时非线性最小二乘法便应运而生。它能处理如指数、对数等更为复杂的关系,为我们打开新的视野。使用牛顿法、拟牛顿法等优化算法,我们能够精准地找到适合的参数,揭示数据的深层次关系。

加权最小二乘法

在某些情况下,数据的可靠性并不相同。加权最小二乘法允许我们为每个观测值赋予不同的权重。这就像是在选举中,有些选票比其他选票更有影响力。通过这种方式,我们能够更精准地反映数据的重要性。

应用的广阔天地

最小二乘法的应用场景几乎无处不在。它在社会科学中帮助我们分析教育与收入之间的关系;在经济学中,它帮助预测通货膨胀率和GDP增长;在工程领域,它优化了信号处理和控制系统的设计。甚至在医学研究中,它为评估治疗效果与患者特征的关系提供了有力支持。

Python 实现

接下来,我们来看看如何用Python实现简单的线性回归,利用最小二乘法来拟合数据。

代码示例

import numpy as np
import matplotlib.pyplot as plt

# 创建一些示例数据
x = np.array([1, 2, 3, 4, 5])
y = np.array([2.2, 2.8, 3.6, 4.5, 5.1])

# 计算最小二乘法的参数
A = np.vstack([x, np.ones(len(x))]).T
m, b = np.linalg.lstsq(A, y, rcond=None)[0]

# 绘制结果
plt.scatter(x, y, color='blue', label='数据点')
plt.plot(x, m*x + b, color='red', label='拟合线')
plt.xlabel('x')
plt.ylabel('y')
plt.legend()
plt.title('最小二乘法线性回归')
plt.show()

print(f"斜率: {m}, 截距: {b}")

代码解析

  1. 数据准备:首先,我们创建了一组示例数据点。x 是自变量,y 是因变量。
  2. 构建设计矩阵:我们将自变量和常数项组合成一个设计矩阵 AAA,以便进行线性回归。
  3. 计算最小二乘法参数:使用 NumPy 的 lstsq 函数,我们计算出最佳拟合线的斜率 mmm 和截距 bbb。
  4. 绘图:最后,我们用 Matplotlib 绘制数据点和拟合线,使结果一目了然。

现代数据科学中的重要性

在当今这个信息爆炸的时代,数据的海洋中充满了复杂性与不确定性。最小二乘法作为一种基础工具,依然具有不可替代的地位。它不仅使我们能够从纷繁复杂的数据中提炼出有价值的信息,更为许多机器学习算法提供了理论基础。它的易用性和高效性使得初学者能够快速上手,而其深厚的理论支持又让研究者得以深入探索。

  这个看似简单的工具,实则蕴含着深刻的数学智慧。希望这篇文章能让你在日后的数据探索中,感受到最小二乘法的力量与魅力,助你在复杂的世界中找到那条最优的路径。

标签:plt,最小,关于,np,数据,我们,乘法
From: https://blog.csdn.net/m0_62710548/article/details/142579322

相关文章

  • 理解为什么要用乘法逆元
    我知道用小费马定理求乘法逆元,但是有的时候会忘记为什么要使用它ap−2......
  • 关于GS匹配算法(Gale_shaply)及想法
    1.GS匹配算法首先第一个问题。简单介绍一下GS匹配算法,Gale-Shapley匹配算法是基于“稳定婚姻”问题提出的。假设有n个男性和m个女性,每个男性都有自己的偏好列表,同样,每个女性也有自己的偏好列表。算法的目标是为这n对男女实现稳定匹配。2.什么是稳定匹配第二个问题就是......
  • 工具类,关于手工读取 properties文件参数
     importjava.io.*;importjava.util.Enumeration;importjava.util.Properties;importjava.util.Vector;importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;importorg.springframework.core.io.ClassPathResource;importorg.springframework.util.ResourceUtils;......
  • 关于Java中的List<User>如何进行深拷贝
    联调中发现了一个很初级,但有容易被忽略的拷贝问题:错误方式:List<User>us=newArrayList<>();List<User>us1=newArrayList<>(us);此种拷贝,如果修改了集合us中的User对象,us1会跟着改变;找了网上很多方式:1.clone方式us的方法里边不存在clone;2.addAll方法不是深度......
  • 最小割解决广义差分约束问题
    描述该做法解决了一类“广义差分约束”问题(当然名字是我自己取的),除了可以解决常见的求解\(A_1+c_1\geqA_2,A_2+c_2\geqA_3\dots\)问题外,还可以求解形如“如果\(A_1\geqc_1\),那么\(A_2\geqc_2\)”这样涉及条件逻辑运算的问题。另外,变量的取值还可以带权,即\(A_i\)取值\(......
  • 关于 GitHub 的奇技淫巧
    介绍下多年来使用GitHub所了解到的技巧‍学会看文档如何学习使用GitHub呢?最好的方式就是:阅读官网文档。官方文档通常比任何教程都全面、权威、准确。网上教程和文章满天飞,但都是建立在官方文档的基础上,一旦官方文档修改了,很难做到实时同步,就可能会让学习者感到困惑。对......
  • ShiftAddAug:基于乘法算子训练的最新无乘法网络方案 | CVPR'24
    不包含乘法的运算符,如移位和加法,因其与硬件的兼容性而日益受到重视。然而,采用这些运算符的神经网络(NNs)通常表现出比具有相同结构的传统NNs更低的准确性。ShiftAddAug利用成本较高的乘法来增强高效但功能较弱的无乘法运算符,从而在没有任何推理开销的情况下提高性能。将一个ShiftAd......
  • Visual Studio Code,关于创建项目时,系统找不到指定路径
            vitecreatehello-vite项目时,系统总是找不到指定的路径         然后在搜索框搜PowerShell,并以管理员身份运行,更改了执行策略为(A)全是          但是在接着重新在终端里的时候,vitecreatehello-vite项目时,系统还是找不到指定路径。发......
  • 【Azure Event Hub】关于Event Hub指标 ConsumerLag 的解释
    问题描述在使用AzureEventHub的过程中,需要监控消费端是否正常消费数据?而常规的指标只有IncomingMessage,OutgoingMessage,是否指标能表明当前EventHub消费滞后,即Incoming数量远远大于Outgoing呢?IncomingMessages :发布到事件中心的消息数。OutgoingMessages :从事件中心使......
  • 【Azure Event Hub】关于Event Hub指标 ConsumerLag 的解释
    问题描述在使用AzureEventHub的过程中,需要监控消费端是否正常消费数据?而常规的指标只有IncomingMessage,OutgoingMessage,是否指标能表明当前EventHub消费滞后,即Incoming数量远远大于Outgoing呢?IncomingMessages:发布到事件中心的消息数。OutgoingMessages:从事件中心......