如何使用scipy curve_fit将曲线拟合到该数据

问题描述 投票:0回答:1

我希望有人可以对我的曲线进行拟合以解决问题。我正在此link中使用该方法,因此具有以下代码:

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)

我绘制的“曲线”看起来像这样:

screenshot

但是我期望曲线更呈S形。我已经尝试了不同的p0值,但没有获得所需的输出(并且,老实说,我不确定如何找到理想的起始参数)。

使用p0 = [max(y1), np.median(x2), 0.4, 1]method='trf,我确实得到了以下内容,该内容虽然更接近但仍缺少中间的曲线?

enter image description here

非常感谢您的帮助!

python-3.x scipy curve-fitting sigmoid
1个回答
0
投票

这是因为您的y轴是对数刻度。如果将y轴更改为线性轴,则会发现拟合效果非常好。

© www.soinside.com 2019 - 2024. All rights reserved.