返回顶部
首页 > 资讯 > 后端开发 > Python >Python数据拟合实现最小二乘法示例解析
  • 342
分享到

Python数据拟合实现最小二乘法示例解析

2024-04-02 19:04:59 342人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

目录线性拟合高阶多项式多自变量指数函数所谓最小二乘法,即通过对数据进行拟合,使得拟合值与样本值的方差最小。 线性拟合 这个表达式还是非常简单的。 对于有些情况,我们往往选取自然序

所谓最小二乘法,即通过对数据进行拟合,使得拟合值与样本值的方差最小。

线性拟合

在这里插入图片描述

在这里插入图片描述

这个表达式还是非常简单的。

对于有些情况,我们往往选取自然序列作为自变量,这个时候在求自变量的取值时可以用到一些初等数学的推论,对于 x ∈ [ m , n ] 的自然序列来说,有

在这里插入图片描述


#文件名core.py
import numpy as np
def leastSquare(x,y):
    if len(x)==2:
    #此时x为自然序列
        sx = 0.5*(x[1]-x[0]+1)*(x[1]+x[0])
        ex = sx/(x[1]-x[0]+1)
        sx2 = ((x[1]*(x[1]+1)*(2*x[1]+1))
              -(x[0]*(x[0]-1)*(2*x[0]-1)))/6
        x = np.array(range(x[0],x[1]+1))
    else:
        sx = sum(x)
        ex = sx/len(x)
        sx2 = sum(x**2)    
    sxy = sum(x*y)
    ey = np.mean(y)
    a = (sxy-ey*sx)/(sx2-ex*sx)
    b = (ey*sx2-sxy*ex)/(sx2-ex*sx)
    return a,b

测试一下


>>> x = np.arange(25)
>>> y = x*15+20+np.random.randn(len(x))*5	#randn生成正态分布噪声
>>> a,b = core.leastSquare(x,y)				
>>> plt.scatter(x,y)						#原始数据散点图
<matplotlib.collections.PathCollection object at 0x00000218DEBBEDC8>
>>> plt.plot(x,a*x+b)						#拟合直线
[<matplotlib.lines.Line2D object at 0x00000218E0314FC8>]
>>> plt.show()

得到

在这里插入图片描述

高阶多项式

在这里插入图片描述

和前面一样,约定

在这里插入图片描述

代码如下


#传入参数格式为np.array,n为阶数
def leastSquareMulti(x,y,n):
    X = [np.sum(x**i) for i in range(2*n+1)]
    Y = np.array([[np.sum(y*x**i)] for i in range(n+1)])
    S = np.array([X[i:i+n+1] for i in range(n+1)])
    return np.linalg.solve(S,Y)		#

经测试结果如下:


>>> x = np.arange(25)
>>> y = x**3+3*x**2+2*x+12
>>> import core
>>> core.leastSquareMulti(x,y,3)
array([[12.],		#此为常数项
       [ 2.],
       [ 3.],
       [ 1.]])

多自变量

对于样本

在这里插入图片描述

则相应地其误差方程组可表示为

在这里插入图片描述

指数函数

在这里插入图片描述

则其代码为


def expFit(x,y):
    y0 = y[0:-3]
    y1 = y[1:-2]
    y2 = y[2:-1]
    B,C = leastSquare(y2/y0,y1/y0)
    b1 = np.log((B-np.sqrt(B**2+4*C))/2)
    b2 = np.log((B+np.sqrt(B**2+4*C))/2)
    X = np.exp(b1-b2)*x
    Y = y/np.exp(b2*x)
    a1,a2 = leastSquare(X,Y)
    return a1,a2,b1,b2

以上就是python数据拟合实现最小二乘法示例解析的详细内容,更多关于Python实现最小二乘法的资料请关注编程网其它相关文章!

--结束END--

本文标题: Python数据拟合实现最小二乘法示例解析

本文链接: https://lsjlt.com/news/154992.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python数据拟合实现最小二乘法示例解析
    目录线性拟合高阶多项式多自变量指数函数所谓最小二乘法,即通过对数据进行拟合,使得拟合值与样本值的方差最小。 线性拟合 这个表达式还是非常简单的。 对于有些情况,我们往往选取自然序...
    99+
    2024-04-02
  • python3最小二乘法拟合实例
    最小二乘法拟合       最小二乘法(又称最小平方法)是一种数学优化技术。它通过最小化误差的平方和寻找数据的最佳函数匹配。利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。     假设有一组实...
    99+
    2023-01-31
    乘法 小二 实例
  • python中最小二乘法的示例分析
    这篇文章给大家分享的是有关python中最小二乘法的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。python的数据类型有哪些python的数据类型:1. 数字类型,包括int(整型)、long(长整型)...
    99+
    2023-06-14
  • C#最小二乘法拟合曲线成直线的实例
    目录最小二乘法拟合曲线成直线效果总结最小二乘法拟合曲线成直线 效果 拟合前 拟合后 传入X轴和Y轴的数据,得到新的Y轴数据。 将X值数据和拟合后的Y轴数据绑带即可。 /// ...
    99+
    2023-02-26
    C#最小二乘法 C#拟合曲线 C#直线
  • 使用Python怎么实现一个曲线拟合的最小二乘法
    今天就跟大家聊聊有关使用Python怎么实现一个曲线拟合的最小二乘法,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。模块导入import numpy as ...
    99+
    2023-06-06
  • Python调用实现最小二乘法的方法详解
    目录numpy实现scipy封装速度对比补充所谓线性最小二乘法,可以理解为是解方程的延续,区别在于,当未知量远小于方程数的时候,将得到一个无解的问题。最小二乘法的实质,是保证误差最小...
    99+
    2023-05-17
    Python调用最小二乘法 Python实现最小二乘法 Python最小二乘法
  • 偏最小二乘(PLS)原理分析&Python实现
    目录 1  偏最小二乘的意义​​​​​​​ 2​ ​​​​​​PLS实现步骤 3 弄懂PLS要回答的问题 4 PLS的原理分析 4.1 自变量和因变量的主成分求解原理 4.1.1 确定目标函数 4.1.2 投影轴w1和v1的求解 4.2 ...
    99+
    2023-09-01
    python 算法 numpy
  • Python怎么调用实现最小二乘法
    所谓线性最小二乘法,可以理解为是解方程的延续,区别在于,当未知量远小于方程数的时候,将得到一个无解的问题。最小二乘法的实质,是保证误差最小的情况下对未知数进行赋值。最小二乘法是非常经典的算法,而且这个名字我们在高中的时候就已经接触了,属于极...
    99+
    2023-05-19
    Python
  • Python实现两种稀疏矩阵的最小二乘法
    目录最小二乘法返回值测试最小二乘法 scipy.sparse.linalg实现了两种稀疏矩阵最小二乘法lsqr和lsmr,前者是经典算法,后者来自斯坦福优化实验室,据称可以比lsqr...
    99+
    2023-02-26
    Python稀疏矩阵最小二乘法 Python稀疏矩阵 Python 最小二乘法
  • 如何在python项目中实现一个最小二乘法
    这篇文章给大家介绍如何在python项目中实现一个最小二乘法,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、最小二乘法是什么最小二乘法Least Square Method,做为分类回归算法的基础,有着悠久的历史(由...
    99+
    2023-06-06
  • Python如何实现两种稀疏矩阵的最小二乘法
    今天小编给大家分享一下Python如何实现两种稀疏矩阵的最小二乘法的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。最小二乘法s...
    99+
    2023-07-05
  • C语言实现求解最小公倍数的算法示例
    目录题目描述问题分析方法一:穷举法方法二:定理法题目描述 求任意两个正整数的最小公倍数 问题分析 两个或多个整数公有的倍数叫做它们的公倍数,其中除0以外最小的一个公倍数就叫做这几个整...
    99+
    2024-04-02
  • Vue模拟实现数据驱动的示例分析
    这篇文章主要为大家展示了“Vue模拟实现数据驱动的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Vue模拟实现数据驱动的示例分析”这篇文章吧。一、前言之...
    99+
    2024-04-02
  • 基于Python+Flask+Echart实现二手车数据分析展示
    作者主页:编程指南针 作者简介:Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、腾讯课堂常驻讲师 主要内容:Java项目、Python项目、前端项...
    99+
    2023-09-09
    python 开发语言
  • Python实现数据清洗的示例详解
    目录前言去掉信息不全的用户描述答案修补缺失的用户数据描述答案解决牛客网用户重复的数据描述答案统一最后刷题日期的格式描述答案将用户的json文件转换为表格形式描述答案前言 Python...
    99+
    2024-04-02
  • Python实现二分法查找及优化的示例详解
    目录1.二分查找的原理2.二分查找的实现3.二分查找的优化4.总结二分查找法(Binary Search)是一种在有序数组中查找某一特定元素的算法,它的思想是将数组从中间分成两部分,...
    99+
    2023-05-16
    Python实现二分法查找 Python二分法查找 Python查找
  • Python实战使用XPath采集数据示例解析
    目录lxml发送请求明确需求:解析数据保存数据lxml lxml 是 Python 的一个库,用于解析和呈现 XML 和 HTML。它支持多种内置和第三方 XML 和 HTML 标记...
    99+
    2023-05-16
    Python XPath采集数据 Python XPath
  • python数据可视化pygal模拟掷骰子实现示例
    目录可视化包Pygal生成可缩放矢量图形文件分析结果,计算每个点数出现的次数绘制直方图同时投掷两个骰子同时投掷两个面数不同骰子可视化包Pygal生成可缩放矢量图形文件 可以在尺寸不同...
    99+
    2024-04-02
  • Python实现冒泡排序算法的示例解析
    目录1. 算法描述2. 算法分析3. 动图展示4. 代码实现5. 算法升级6. 时间复杂度分析1. 算法描述 冒泡排序(Bubble Sort)是一种简单的排序算法。它重复地遍历要排...
    99+
    2024-04-02
  • Python实现数字小写转大写的示例详解
    目录前言代码实现测试补充前言 这绝对是个非常有趣的问题哈哈,但用python列表实现就变得比较烧脑,正常人不会非常较真这样的程序,我也只是闲来无事,如果代码还是有bug,那么我也没办...
    99+
    2022-12-14
    Python数字小写转大写 Python 小写转大写 Python 数字 小写 大写
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作