python中leastsq函数的使用方法
作者:开始King 发布时间:2023-11-11 06:03:28
标签:python,leastsq,函数
leastsq作用:最小化一组方程的平方和。
参数设置:
func
误差函数x0
初始化的参数args
其他的额外参数
举个例子:
首先创建样本点
import numpy as np
import scipy as sp
from scipy.optimize import leastsq
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
x=[1,2,3,4]
y=[2,3,4,5]
拟合直线
def y_pre(p,x):
f=np.poly1d(p)
return f(x)
其中的np.polyld
f=np.poly1d([1,2,3])
# x^2+2x+3
f(1)
"""
6
"""
误差函数
def error(p,x,y):
return y-y_pre(p,x)
接下就简单了
p=[1,2] # 值随便写
# y=w1*x+w2
res=leastsq(error,p,args=(x,y))
w1,w2=res[0] # res[0]中就是wi的参数列表
"""
到这w1和w2就已经求出来了,下面是画图看一下
"""
x_=np.linspace(1,10,100) # 等差数列,
y_p=w1*x_+w2 # 求出的拟合曲线
plt.scatter(x,y) # 样本点
plt.plot(x_,y_p) # 画拟合曲线
可以直接封装成函数
x=np.linspace(0,2,10)
y=np.sin(np.pi*x)
# 原始的样本
y_=[y + np.random.normal(0,0.1) for y in y] # np.random.normal(loc,scale,size):正态分布的均值,正态分布的标准差,形状
# np.random.randn() # 标准正态分布是以0为均数、以1为标准差的正态分布,记为N(0,1)
def fit(M=1):
p=np.random.rand(M+1) # 返回一个或一组服从“0~1”均匀分布的随机样本值。随机样本取值范围是[0,1)
res=leastsq(error,p,args=(x,y)) # wi 的值
x_point=np.linspace(0,2,100) # 增加数据量为了画出的图平滑
y_point=np.sin(np.pi*x_point) # 增加数据量为了画出的图平滑
plt.plot(x_point,y_point,'r',label='原始')
plt.plot(x_point,y_pre(res[0],x_point),'b',label='拟合')
plt.scatter(x,y_)
plt.legend()
fit(3)
你也可以输出一下中间的结果:
x=np.linspace(0,2,10)
y=np.sin(np.pi*x)
# 原始的样本
y_=[y + np.random.normal(0,0.1) for y in y] # np.random.normal(loc,scale,size):正态分布的均值,正态分布的标准差,形状
# np.random.randn() # 标准正态分布是以0为均数、以1为标准差的正态分布,记为N(0,1)
def fit(M=1):
p=np.random.rand(M+1) # 返回一个或一组服从“0~1”均匀分布的随机样本值。随机样本取值范围是[0,1)
res=leastsq(error,p,args=(x,y)) # wi 的值
x_point=np.linspace(0,2,100)
y_point=np.sin(np.pi*x_point)
plt.plot(x_point,y_point,'r',label='原始')
plt.plot(x_point,y_pre(res[0],x_point),'b',label='拟合')
print(res[0])
plt.scatter(x,y_)
plt.legend()
fit(3)
拟合的直线就是:
来源:https://blog.csdn.net/m0_52118763/article/details/123503575
0
投稿
猜你喜欢
- 今天有个哥们问我要是JavaScript函数重名了会有什么后果?开始我没有细想,就说可能会出错吧,可是等我实验完了发现页面没有任何脚本错误提
- python脚本替换指定行实现步骤 本文主要介
- 在用户登录windows操作系统的时候,如果触发到了登录表单的密码录入框上,并且此时按下了“大写锁定键(Caps Lock)”,那么界面上会
- 1. composer 安装 PDF组件composer require setasign/fpdicomposer require set
- 在制作网页以及编程的时候,适当的进行注释,不仅使自己的思路清晰,极大地减轻了维护的难度,而且方便项目组其他人了解你的代码,方便对代码的理解以
- 1.请实现一个装饰器,把函数的返回值+100然后返回def wapper(func):def innner(*args,**kwargs):
- 以前的Dreamweaver中是没有图片处理功能的,即使你要处理也只能使用CSS中的相关滤镜进行一些效
- 列表UL或是OL中都有一个预设标记,这个标记可能是实点圆点,也可能是数字。在实际的应用中,我们需要去掉这个预设标记,但我们不清楚这个预设标记
- 1、PHP 中如何正确统计中文字数?这个是困扰我很久的问题,PHP 中有很多函数可以计算字符串的长度,比如下面的例子,分别使用了
- 亮度调整非线性亮度调整:对于R,G,B三个通道,每个通道增加相同的增量。线性亮度调整:利用HSL颜色空间,通过只对其L(亮度)部分调整,可达
- 我听说在ASP里,可以不用DSN来连接EXCEL,请问如何实现?确实ASP提供了替代DSN的其他方法,甚至可以在运行时建立连接看看下面的范例
- 为了应用方便,您可能需要给数据库的每条记录都添加日期/时间戳,以便确定各个记录添加到数据库的时间。在Access数据库应用中,使用Now()
- Oracle数据库以其高可靠性、安全性、可兼容性,得到越来越多的企业的青睐。如何使Oracle数据库保持优良性能,这是许多数据库管理员关心的
- 本文实例讲述了Python删除windows垃圾文件的方法。分享给大家供大家参考。具体如下:#coding:utf-8import os#f
- 有时候用phpMyAdmin的时候会突然出现这个错误信息 “无法在发生错误时创建会话,请检查 PHP 或网站服务器日志,并正确配置 PHP
- 0.偶然间看到一个奇怪的现象>>> x = 1>>> a = var()>>> a[&
- 前言虽然现在文件上传下载工具多如牛毛,比如http、ftp、sftp、scp等方案都可以用于文件传输,但都是需要安装服务器甚至客户端。有一种
- 读写文件首先看一个例子:f = open('thefile.txt','w') #以写方式打开,
- 使用python生成随机验证码的方法有很多种,今天小编给大家分享两种方法,大家可以灵活运用这两种方法,设计出适合自己的验证码方法。方法一:利
- Pandas中的resample,重新采样,是对原样本重新处理的一个方法,是一个对常规时间序列数据重新采样和频率转换的便捷的方法。方法的格式