在 S 形曲线上找到点
Find point on sigmoid curve
也许是一个非常简单的问题,但我似乎找不到有效的答案。
我正在绘制一系列值 returns 下面的 S 形曲线:
使用的代码是(来自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)
此returns以下值:
Popt: [96.74093921 12.83580801 0.56406601 3.2468077 ]
Pcov: [[ 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]]
鉴于此,当我得到 x 值时,如何找到曲线的 y 值?即如果 X = 20,曲线上该点的 y 值是多少?
popt
具有您定义的 sigmoid 函数(L
、x0
、k
和 b
)的拟合值。将它们传递回 sigmoid
:
sigmoid(20, *popt)
curve_fit
的 official docs 在示例的末尾有一些非常接近的内容。
也许是一个非常简单的问题,但我似乎找不到有效的答案。
我正在绘制一系列值 returns 下面的 S 形曲线:
使用的代码是(来自
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)
此returns以下值:
Popt: [96.74093921 12.83580801 0.56406601 3.2468077 ]
Pcov: [[ 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]]
鉴于此,当我得到 x 值时,如何找到曲线的 y 值?即如果 X = 20,曲线上该点的 y 值是多少?
popt
具有您定义的 sigmoid 函数(L
、x0
、k
和 b
)的拟合值。将它们传递回 sigmoid
:
sigmoid(20, *popt)
curve_fit
的 official docs 在示例的末尾有一些非常接近的内容。