Возможно, очень простая проблема, но я не могу найти ответ, который работает.
Я рисую ряд значений, которые возвращают сигмовидную кривую ниже:
Использовался код (от User88484):
def sigmoid(x, L ,x0, k, b):
y = L / (1 + np.exp(-k*(x-x0)))+b
return (y)
p0 = [max(po_array), np.median(sp_array), 1, min(po_array)]
popt, pcov = curve_fit(sigmoid, sp_array, po_array, p0, method='dogbox')
print("Popt:", popt)
print()
print("Pcov:", pcov)
Это возвращает следующие значения:
Точка: [96.74093921 12.83580801 0.56406601 3.2468077 ]
Пков: [[ 4.15866152e-01 -3.57909355e-05 -5.46449590e-03 -2.10617443e-01] [-3.57909355e-05 1.81185487e-03 -8.47729461e-06 7.55813943e-03] [-5.46449590e-03 -8.47729461e-06 1.48370347e- 04 2.67572376e-03] [-2.10617443e -01 7,55813943e-03 2,67572376e-03 1,75321322e-01]]
Учитывая это, как я могу найти значение y кривой, когда мне задано значение x? т. е. если X = 20, каким будет значение y для этой точки на кривой?
popt
имеет подогнанные значения вашей определенной сигмовидной функции (L
, x0
, k
и b
). Передайте их обратно sigmoid
:
sigmoid(20, *popt)
В официальной документации для curve_fit
есть что-то очень близкое к этому в конце примера.
Да и сам тоже проверял. Отредактировал ответ.
Спасибо, как раз хотел сказать, что это отлично работает без "x = ". Если вы отредактируете свой ответ, я отмечу его как принятый.