如何使用 scipy curve_fit 将曲线拟合到此数据
How to fit a curve to this data using scipy curve_fit
我希望有人能告诉我我在为这些数据拟合曲线时出错的地方。我正在使用此 中的方法,因此有以下代码:
def sigmoid(x, L, x0, k, b):
y = L / (1 + np.exp(-k*(x-x0)))+b
return y
p0 = [max(y1), np.median(x2), 1, min(y1)]
popt, pcov = curve_fit(sigmoid, xdata=x2, ydata=y1, p0=p0, method='dogbox')
predictions = sigmoid(x2, *popt)
我绘制的 "curve" 看起来像这样:
但我期待更 S 形的曲线。我尝试了不同的 p0 值,但没有得到所需的输出(老实说,我不确定我应该如何找到理想的起始参数)。
使用 p0 = [max(y1), np.median(x2), 0.4, 1]
和 method='trf
我确实得到了以下结果,哪个更接近但仍然缺少中间的曲线?
非常感谢任何帮助!
那是因为你的 y 轴是对数刻度。如果将 y 轴更改为线性轴,您会发现拟合实际上非常好。
我希望有人能告诉我我在为这些数据拟合曲线时出错的地方。我正在使用此
def sigmoid(x, L, x0, k, b):
y = L / (1 + np.exp(-k*(x-x0)))+b
return y
p0 = [max(y1), np.median(x2), 1, min(y1)]
popt, pcov = curve_fit(sigmoid, xdata=x2, ydata=y1, p0=p0, method='dogbox')
predictions = sigmoid(x2, *popt)
我绘制的 "curve" 看起来像这样:
但我期待更 S 形的曲线。我尝试了不同的 p0 值,但没有得到所需的输出(老实说,我不确定我应该如何找到理想的起始参数)。
使用 p0 = [max(y1), np.median(x2), 0.4, 1]
和 method='trf
我确实得到了以下结果,哪个更接近但仍然缺少中间的曲线?
非常感谢任何帮助!
那是因为你的 y 轴是对数刻度。如果将 y 轴更改为线性轴,您会发现拟合实际上非常好。