使用 scipy 在 Python 中进行曲线拟合
Curve fitting in Python using scipy
我想使用 scipy 中的 curve_fit 对某些数据拟合曲线。在搜索语法后,我发现了这个,
import numpy as np
from scipy.optimize import curve_fit
def func(x, a, b, c):
return a * np.exp(-b * x) + c
xdata = np.linspace(0, 4, 50)
y = func(xdata, 2.5, 1.3, 0.5)
ydata = y + 0.2 * np.random.normal(size=len(xdata))
popt, pcov = curve_fit(func, xdata, ydata)
但是文档不是很清楚,特别是关于函数func的参数,我知道x是自变量值的numpy数组,但是a、b、c是什么?还有,这行是什么意思,
a * np.exp(-b * x) + c
为了计算y我们用自变量和其他参数调用func,但是ydata是什么?还有为什么要这样计算,
ydata = y + 0.2 * np.random.normal(size=len(xdata))
最后一件事,如果我在某个函数中通过 scipy 得到拟合模型(方程),我如何在另一个函数中使用它?
感谢任何帮助。
谢谢。
curve_fit
将一组数据 ydata
与给定自变量 x
的值的每个点拟合到某个模型函数。在示例中,模型函数是 a * exp(-b * x) + c
,其中 a
、b
和 c
是要确定的一些常量,以最好地表示此模型的数据。
func
计算出的y
是模型函数在每个数据点的值,x
.
在示例中,ydata
由拟合函数模拟,其中添加了一些随机高斯(正态分布)噪声:
ydata = y + 0.2 * np.random.normal(size=len(xdata))
你可以通过绘制 y
(绿线)和 ydata
(蓝点)对 xdata
:
来看到这一点
要使用拟合参数,popt
,将它们传递给 func
:
yfit = func(xdata, *popt)
一张图将显示 "exact"(绿线)和拟合(蓝线)的比较:
我想使用 scipy 中的 curve_fit 对某些数据拟合曲线。在搜索语法后,我发现了这个,
import numpy as np
from scipy.optimize import curve_fit
def func(x, a, b, c):
return a * np.exp(-b * x) + c
xdata = np.linspace(0, 4, 50)
y = func(xdata, 2.5, 1.3, 0.5)
ydata = y + 0.2 * np.random.normal(size=len(xdata))
popt, pcov = curve_fit(func, xdata, ydata)
但是文档不是很清楚,特别是关于函数func的参数,我知道x是自变量值的numpy数组,但是a、b、c是什么?还有,这行是什么意思,
a * np.exp(-b * x) + c
为了计算y我们用自变量和其他参数调用func,但是ydata是什么?还有为什么要这样计算,
ydata = y + 0.2 * np.random.normal(size=len(xdata))
最后一件事,如果我在某个函数中通过 scipy 得到拟合模型(方程),我如何在另一个函数中使用它?
感谢任何帮助。 谢谢。
curve_fit
将一组数据 ydata
与给定自变量 x
的值的每个点拟合到某个模型函数。在示例中,模型函数是 a * exp(-b * x) + c
,其中 a
、b
和 c
是要确定的一些常量,以最好地表示此模型的数据。
func
计算出的y
是模型函数在每个数据点的值,x
.
在示例中,ydata
由拟合函数模拟,其中添加了一些随机高斯(正态分布)噪声:
ydata = y + 0.2 * np.random.normal(size=len(xdata))
你可以通过绘制 y
(绿线)和 ydata
(蓝点)对 xdata
:
要使用拟合参数,popt
,将它们传递给 func
:
yfit = func(xdata, *popt)
一张图将显示 "exact"(绿线)和拟合(蓝线)的比较: