首页 > 编程语言 >最小二乘法算法(个人总结版)

最小二乘法算法(个人总结版)

时间:2024-06-03 22:34:17浏览次数:38  
标签:plt 最小 图表 算法 拟合 np 乘法

最小二乘法(Least Squares Method)是一种通过最小化误差平方和来拟合数据的回归分析方法。它被广泛应用于线性回归、多元回归以及其他数据拟合问题中。以下是详细的教程,涵盖基本概念、数学推导、具体步骤和实现代码。

1. 最小二乘法基本概念

最小二乘法是一种用于数据拟合的统计方法,通过最小化观测数据与模型预测值之间的误差平方和,求解模型参数。

2. 线性回归的最小二乘法

线性回归是最简单的最小二乘法应用,假设模型为线性关系: y=β0​+β1​x 其中,y 是响应变量,x 是自变量,β0​ 是截距,β1​ 是斜率。

3. 最小二乘法的数学推导

假设有 n 个观测数据点(xi​,yi​),最小二乘法通过最小化以下误差平方和S 来求解模型参数:

为了找到最优参数 β0​ 和 β1​,对 S 求偏导数并令其为零:

解这两个方程,得到: 

4. 多元线性回归的最小二乘法

对于多元线性回归模型:

可以使用矩阵形式来表示和求解。设: y=Xβ+e 其中,y 是响应变量向量,X 是设计矩阵,β 是参数向量,e 是误差向量。

通过最小化误差平方和可以得到参数估计:

5. 非线性最小二乘法

非线性最小二乘法用于拟合非线性模型。这种情况下,通常需要使用迭代优化算法如梯度下降法、牛顿法等进行参数估计。

6. 最小二乘法的应用实例

例1:简单线性回归

假设有以下数据点:

(1,2),(2,2.8),(3,3.6),(4,4.5),(5,5.1)(1,2),(2,2.8),(3,3.6),(4,4.5),(5,5.1)

可以用最小二乘法拟合直线:

 

计算得到的最优参数为β0​和β1​。

例2:多元线性回归

假设有以下数据点和两个自变量:

(1,2,2),(2,2.8,3),(3,3.6,4),(4,4.5,5),(5,5.1,6)(1,2,2),(2,2.8,3),(3,3.6,4),(4,4.5,5),(5,5.1,6)

可以用最小二乘法拟合多元回归模型:

7. 最小二乘法的实现

Python实现示例

import numpy as np
import matplotlib.pyplot as plt

# 生成数据
x = np.array([1, 2, 3, 4, 5])
y = np.array([2, 2.8, 3.6, 4.5, 5.1])

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

# 绘图
plt.plot(x, y, 'o', label='Original data', markersize=10)
plt.plot(x, m*x + c, 'r', label='Fitted line')
plt.legend()
plt.show()

步骤解析

  1. 生成数据:创建自变量 x 和因变量 y 的数据点。
  2. 构建设计矩阵:将 x 和常数项 1 叠加构成设计矩阵 A。
  3. 求解最优参数:使用 numpy 的 lstsq 函数求解线性方程 Aβ=y 的最优参数 m 和 c。
  4. 绘制图表:绘制原始数据点和拟合直线。

最小二乘法图解

这是一个简单的最小二乘法线性回归的图表,用于演示如何通过最小二乘法拟合数据点。以下是图表的详细说明:

图表说明
  • X轴:自变量 x
  • Y轴:因变量 y
  • 黄色圆点:原始数据点
  • 红色直线:拟合直线,通过最小二乘法计算得到

图表生成代码

如果你想在自己的环境中生成类似的图表,可以使用以下Python代码:

import numpy as np
import matplotlib.pyplot as plt

# 生成数据
x = np.array([1, 2, 3, 4, 5])
y = np.array([2, 2.8, 3.6, 4.5, 5.1])

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

# 绘制图表
plt.figure(figsize=(10, 6))
plt.plot(x, y, 'o', label='Original data', markersize=10, color='orange')
plt.plot(x, m*x + c, 'r', label='Fitted line')
plt.xlabel('x')
plt.ylabel('y')
plt.title('Least Squares Fit')
plt.legend()
plt.grid(True)
plt.show()

图表解读

  • 这段代码首先生成了一组 x 和 y 的数据点。
  • 使用最小二乘法计算拟合直线的斜率 m 和截距 c。
  • 最后,绘制原始数据点和拟合直线,并添加了标签、标题和网格,以便更好地理解图表。

结论

最小二乘法是数据拟合和回归分析中非常重要的工具。它可以通过最小化误差平方和来估计模型参数,从而找到最佳拟合曲线。本文详细介绍了最小二乘法的基本概念、数学推导、应用实例以及Python实现方法,希望能帮助你更好地理解和应用这一方法。

标签:plt,最小,图表,算法,拟合,np,乘法
From: https://blog.csdn.net/qq_16064553/article/details/139425701

相关文章

  • 代码随想录算法训练营day13(栈与队列)
    代码随想录算法训练营day:学习内容:今天主要学习队列239347学习产出:239一开始想着直接暴力遍历,但是时间复杂度为nk。采用deque实现一个单调队列,因为我们需要一个队列,这个队列呢,放进去窗口里的元素,然后随着窗口的移动,队列也一进一出,每次移动之后,队列告诉我们里面的最......
  • 代码随想录算法训练营第二十三天 | 669.修剪二叉搜索树 108.将有序数组转换为二叉搜索
    669.修剪二叉搜索树题目链接文章讲解视频讲解classSolution{public:TreeNode*trimBST(TreeNode*root,intlow,inthigh){if(root==nullptr)returnnullptr;//当前值小于左边界时,当前节点的左子树全部小于左边界,所以全部删除,直接处理右子树......
  • 混合高斯背景减除算法实现背景建模
     本代码将实现视频中的背景和前景分离,并定位行人。1.实现效果以下为处理后的视频截图2.定义卷积核importcv2cap=cv2.VideoCapture('test.avi')kernel=cv2.getStructuringElement(cv2.MORPH_CROSS,(3,3))#kernel:[[010],[111],[010]]#定义一个3*3的......
  • 算法第四天力扣第704题:二分查找
    704.二分查找的题目链接如下:https://leetcode.cn/problems/binary-search/https://leetcode.cn/problems/binary-search/  给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target  ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 ......
  • 二分查找算法的定义
       二分查找算法,也称为折半查找算法,是一种在有序数组中查找特定元素的常用算法,用于在有序数组或列表中查找特定元素的位置。它的基本思想是:首先确定目标值可能存在的区间,然后逐步缩小区间直到确定目标值的位置或者确定目标值不存在。一、二分查找算法的原理:前提条件:待......
  • 编程奇境:C++之旅,从新手村到ACM/OI算法竞赛大门(武器:排序算法)
    引言现在你已经拥有了c++的基础语法知识,人物已经有了基本属性,那么想要打怪,手里必须要有趁手的武器,各种算法就是手中的武器,要根据怪物的不同特性来选择不同的武器。本章节讲的就是新手第一把武器:排序算法。所谓排序算法就是把一些乱序的序列按照从小到大或从大到小进行排序,是......
  • Floyd判圈算法 leetcode
    龟兔赛跑/Floyd判圈算法概述判断一个链表是否存在环画图演示两个指针相遇的情况:查找链表中环的首个节点在这里插入图片描述数学公式表示为:(对应力扣142.环形链表II,141.环形链表I)判断一个链表是否存在环龟兔赛跑/Floyd判圈算法转换成判断链表是否存......
  • 2024年计算机视觉、设计与算法国际会议( ICCVDA 2024)
    2024年计算机视觉、设计与算法国际会议( ICCVDA2024)会议简介本次大会旨在建立一个国际性的学术交流和合作平台,重点关注计算机视觉领域的最新进展、设计与算法的创新应用,分享前沿研究成果,并探索未来发展趋势。我们诚挚邀请全球各地的学者、专家、企业代表及感兴趣的个人积......
  • 揭秘《庆余年算法番外篇》续集:范闲通过最大似然法推理找到火烧史家镇的凶手
    揭秘《庆余年算法番外篇》:范闲通过贝叶斯推理找到太子火烧使家镇的证据上次写了这篇文章之后,很多留言说开了上帝视角,先假设了二皇子和太子有罪,这次通过最大似然法进行推导。方法介绍:最大似然法是一种在概率统计中广泛使用的参数估计方法。该方法基于一组已知的样本数据,旨......
  • 机器学习_分类算法详解
    机器学习中的分类算法是用于将输入数据分配到预定义类别中的算法。分类任务是监督学习的一种,模型根据训练数据中的输入-输出对进行学习,然后预测新的输入数据的类别。常见的分类算法包括:逻辑回归(LogisticRegression)k-近邻(k-NearestNeighbors,k-NN)支持向量机(SupportVecto......