Я надеюсь, что кто-то может мне понять, где я ошибаюсь, подгоняя кривую к этим данным. Я использую метод в этой ссылке и поэтому имею следующий код:
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)
И моя построенная "кривая" выглядит так:
Но я ожидаю более S-образную кривую. Я экспериментировал с разными значениями p0, но не получил требуемого результата (и, если честно, я не уверен, как мне найти идеальные начальные параметры).
Использование p0 = [max(y1), np.median(x2), 0.4, 1]
и method='trf
Я получил следующее, которое ближе, но все еще не хватает кривой в середине?
Любая помощь очень ценится!