最小二乘法原理:

已知:一组实验数据(x[i], y[i]),我们知道它们之间的存在函数关系:y = f(x),关系可以为线性或非线性,最简单线性范例:f(x) = k*x+b,另外可能为:f(x) = sin(kx +b),对数、指数等函数。

现期望通过这些已知数据,确定假设函数中的参数项,建立完整的函数关系式,使得应用函数计算的因变量结果值与实现数据值之间差值的平方和最小,称之为最小二乘法。

经典Python实现函数:

经典的最小二乘法函数,出自scipy.optimize,查看官方文档,存在太多疑虑,且未提供直接应用范例,如何应用,难以理解。

scipy.optimize.leastsq ,网址:官方网址

scipy.optimize.leastsqfuncx0args =()Dfun = Nonefull_output = 0col_deriv = 0ftol = 1.49012e-08xtol = 1.49012e-08gtol = 0.0maxfev = 0epsfcn = Nonefactor = 100diag =None

应用范例:

使用最小二乘法拟合直线
'''
import numpy as np
from scipy.optimize import leastsq
import matplotlib.pyplot as plt#训练数据
Xi = np.array([8.19,2.72,6.39,8.71,4.7,2.66,3.78])
Yi = np.array([7.01,2.78,6.47,6.71,4.1,4.23,4.05])#定义拟合函数形式
def func(p,x):k,b = preturn k*x+b#定义误差函数
def error(p,x,y,s):print(s)return func(p,x)-y#随机给出参数的初始值
p = [10,2]#使用leastsq()函数进行参数估计
s = '参数估计次数'
Para = leastsq(error,p,args=(Xi,Yi,s))
k,b = Para[0]
print('k=',k,'\n','b=',b)#图形可视化
plt.figure(figsize = (8,6))
#绘制训练数据的散点图
plt.scatter(Xi,Yi,color='r',label='Sample Point',linewidths = 3)
plt.xlabel('x')
plt.ylabel('y')
x = np.linspace(0,10,1000)
y = k*x+b
plt.plot(x,y,color= 'orange',label = 'Fitting Line',linewidth = 2)
plt.legend()
plt.show()

分析代码,SciPy的最小二乘法,具有较强的通用性,可以对多种设想的拟合曲线,利用试验数据求得其拟合参数。

根据误差函数设置,其严格遵照拟合结果确保二乘误差最小的原则,应该是采取逼近法求得。

利用偏导数,代数求解法,可求得参数公式:

网址:https://blog.csdn.net/sinat_23338865/article/details/80608834

自编Python代码实现

    #最小二乘法计算线性系数值def leastsq(Xi, Yi):m = len(Xi)multiply_Xi_Yi = Xi*Yisum_mp = np.sum(multiply_Xi_Yi)sum_Xi = np.sum(Xi)sum_Yi = np.sum(Yi)pow_Xi = Xi * Xisum_pow_Xi = np.sum(pow_Xi)k = (m * sum_mp - sum_Xi*sum_Yi)/(m*sum_pow_Xi - sum_Xi * sum_Xi)return k    

同样参数验证,自建算法与SciPy算法结果高度一致

SCIPY类库——最小二乘法应用相关推荐

  1. python 最小二乘法库_python 最小二乘法

    scipy中最小二乘法函数leastsq的用法 好久没有写Blog了,最近都没有啥好写的. 今天我研究了一下scipy里面的那个最小二乘法的函数的用法,一开始,没弄懂那个函数是怎么调用了,只知道敲进示 ...

  2. 【VeighNa】开始量化交易——第四章:结合AHR999指标和情绪指标分析

    本文仅供学术研究,不做任何投资建议! 文章目录 1.什么是ahr999指标 2.计算ahr999指标 2.1 获取数据 2.2 将数据保存到数据库 2.3 开始计算ahr999指标 2.3.1 建立模 ...

  3. 《统计学习方法第二版》学习笔记1——概论

    第1章 统计学习及监督学习概率论 目录 第1章 统计学习及监督学习概率论 前言 1 理论部分 1.1 统计学习 1.2 统计学习的分类 1.3 统计学习方法三要素 1.4 模型评估与模型选择 1.5 ...

  4. 【002】回归之高级优化“BFGS”

    目录 回顾 BFGS 如何调用 回顾 在[001]Python实现,单一变量的线性回归问题中,已经用Python简单实现了单变量的线性回归和梯度下降问题. BFGS Scipy类库中,已经实现了很多算 ...

  5. 【scipy】Python调用非线性最小二乘法

    文章目录 简介与构造函数 迭代策略 雅可比矩阵 测试 简介与构造函数 在scipy中,非线性最小二乘法的目的是找到一组函数,使得误差函数的平方和最小,可以表示为如下公式 arg min⁡fiF(x)= ...

  6. python scipy.optimize least_squares实现最小二乘法

    Least-squares minimization (least_squares) The code below implements least-squares estimation of and ...

  7. 机器学习:Python中如何使用最小二乘法

    之所以说"使用"而不是"实现",是因为python的相关类库已经帮我们实现了具体算法,而我们只要学会使用就可以了.随着对技术的逐渐掌握及积累,当类库中的算法已经 ...

  8. 附录7:SciPy实例记录

    目录 SciPy简介 SciPy基础 Numpy基础简要回顾 Numpy的stack,vstack,hstack,dstack,concatenate SciPy特殊函数 SciPy常量 SciPy应 ...

  9. Python Scipy 科学计算库

    Python机器学习及分析工具:Scipy篇 原文:https://www.jianshu.com/p/6c742912047f   Scipy是一个用于数学.科学.工程领域的常用软件包,可以处理插值 ...

最新文章

  1. 解决nginx 502 bad gateway--团队的力量
  2. 黑莓作为猫带笔记本上网
  3. 4固定在底部_自建房不搭彩钢棚,4根钢结构撑个玻璃棚遮风挡雨,上面多个露台...
  4. 转 C# 串口编程遇到的问题以及解决方法
  5. 如何将图片中的一个任意四边形区域的图像转化为矩形【附源码】
  6. 原码、反码、补码、移码的表示
  7. boost::put_get_helper用法的测试程序
  8. python购物程序_Python学习:购物程序
  9. 使用 vsftpd 服务传输文件
  10. Laravel框架——增删改查
  11. ubuntu svn命令
  12. python计算加权平均分
  13. Z国的货币系统包含面值1元、4元、16元、64元共计4种硬币,以及面值1024元的纸币。现在小Y使用1024元的纸币购买了一件价值为N的商品,请问最少他会收到多少硬币?
  14. 小爱控制HA上的开关(红外线)
  15. Mysql数据表一直显示使用中
  16. Service Mesh对比:Istio与Linkerd
  17. VMwareWorkstation16环境下安装kali-linux-2021.2版本虚拟机(最新版本)
  18. egret可以用php做后端吗,Egret引擎开发指南之发布项目_node.js
  19. WordPress数据库文章表(字段说明)
  20. 7-1 求1到N的和 (5 分)

热门文章

  1. 电子游戏销售数据分析(基于Python+Tableau)
  2. HTTP 重定向状态码是什么意思?
  3. 挣扎中的谷歌“蜻蜓项目”,Google 搜索到底能不能回归大陆?
  4. HTML5创建热点区域
  5. USRP环境配置及测试
  6. HaaS轻应用(JavaScript)低功耗蓝牙案例
  7. 服务器相关 HTTP 请求错误
  8. js如何转换json字符串,js如何转换为数值型
  9. 涨知识了!这9个鲜为人知的 Python 第三方库真棒!
  10. 人工智能专业就业方向有哪些?