Python最小二乘法拟合与作图在函数拟合中 , 如果用p表示函数中需要确定的参数,那么目标就是找到一组p,使得下面函数S的值最?。?
这种算法称为最小二乘法拟合 。Python的Scipy数值计算库中的optimize模块提供了 leastsq() 函数 , 可以对数据进行最小二乘拟合计算 。
此处利用该函数对一段弧线使用圆方程进行了拟合,并通过Matplotlib模块进行了作图,程序内容如下:
Python的使用中需要导入相应的模块,此处首先用 import 语句
分别导入了numpy, leastsq与pylab模块 , 其中numpy模块常用用与数组类型的建立,读入等过程 。leastsq则为最小二乘法拟合函数 。pylab是绘图模块 。
接下来我们需要读入需要进行拟合的数据,这里使用了 numpy.loadtxt() 函数:
其参数有:
进行拟合时 , 首先我们需要定义一个目标函数 。对于圆的方程 , 我们需要圆心坐标(a,b)以及半径r三个参数,方便起见用p来存储:
紧接着就可以进行拟合了 , leastsq() 函数需要至少提供拟合的函数名与参数的初始值:
返回的结果为一数组 , 分别为拟合得到的参数与其误差值等 , 这里只取拟合参数值 。
leastsq() 的参数具体有:
输出选项有:
最后我们可以将原数据与拟合结果一同做成线状图,可采用 pylab.plot() 函数:
pylab.plot() 函数需提供两列数组作为输入 , 其他参数可调控线条颜色 , 形状,粗细以及对应名称等性质 。视需求而定 , 此处不做详解 。
pylab.legend() 函数可以调控图像标签的位置 , 有无边框等性质 。
pylab.annotate() 函数设置注释,需至少提供注释内容与放置位置坐标的参数 。
pylab.show() 函数用于显示图像 。
最终结果如下图所示:
用Python作科学计算
numpy.loadtxt
scipy.optimize.leastsq
Python最小二乘法拟合只能return一个方程吗不是,最小二乘法是一种数学优化技术,它通过最小化误差的平方和寻找数据的最佳函数匹配 。
Python中如何使用最小二乘法##最小二乘法
import numpy as np##科学计算库
import scipy as sp##在numpy基础上实现的部分算法库
【python最小而成函数 python 最小数】import matplotlib.pyplot as plt##绘图库
from scipy.optimize import leastsq##引入最小二乘法算法
'''
设置样本数据 , 真实数据需要在这里处理
'''
##样本数据(Xi,Yi) , 需要转换成数组(列表)形式
Xi=np.array([6.19,2.51,7.29,7.01,5.7,2.66,3.98,2.5,9.1,4.2])
Yi=np.array([5.25,2.83,6.41,6.71,5.1,4.23,5.05,1.98,10.5,6.3])
'''
设定拟合函数和偏差函数
函数的形状确定过程:
1.先画样本图像
2.根据样本图像大致形状确定函数形式(直线、抛物线、正弦余弦等)
'''
##需要拟合的函数func :指定函数的形状
def func(p,x):
k,b=p
return k*x+b
##偏差函数:x,y都是列表:这里的x,y更上面的Xi,Yi中是一一对应的
def error(p,x,y):
return func(p,x)-y
'''
主要部分:附带部分说明
1.leastsq函数的返回值tuple,第一个元素是求解结果,第二个是求解的代价值(个人理解)
2.的原话(第二个值):Value of the cost function at the solution
3.实例:Para=(array([ 0.61349535,1.79409255]), 3)
4.返回值元组中第一个值的数量跟需要求解的参数的数量一致
'''
#k,b的初始值,可以任意设定,经过几次试验,发现p0的值会影响cost的值:Para[1]
p0=[1,20]
#把error函数中除了p0以外的参数打包到args中(使用要求)
推荐阅读
- 如何使用视频文件python的简单介绍
- 绿源erp系统,绿源fba
- chatgpt做封面,pic封面制作
- gis数据怎么导出,gis如何导出数据
- 怎么让硬盘脱机,硬盘脱机后可拔出吗
- ios14.1苹果x更新测试,iphone x更新141
- 硬盘被覆盖的照片怎么找回,硬盘被覆盖的照片怎么找回啊
- java中遍历99代码的简单介绍
- postgresql没有快捷方式的简单介绍