【问题标题】:Find point on sigmoid curve在 sigmoid 曲线上找到点
【发布时间】:2021-04-02 08:56:06
【问题描述】:

也许是一个非常简单的问题,但我似乎找不到有效的答案。

我正在绘制一系列返回 sigmoid 曲线的值:

使用的代码是(来自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]

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 值是多少?

【问题讨论】:

    标签: python python-3.x scipy-optimize


    【解决方案1】:

    popt 具有您定义的 sigmoid 函数的拟合值(Lx0kb)。将它们传回sigmoid:

    sigmoid(20, *popt)
    

    curve_fitofficial docs 在示例末尾有非常接近的内容。

    【讨论】:

    • 谢谢,我只是想说如果没有“x=”,这可以完美地工作。如果您编辑您的答案,我会将其标记为已接受。
    • 是的,我自己也测试过。编辑了答案。
    猜你喜欢
    • 2013-12-31
    • 2019-12-16
    • 2021-03-21
    • 2018-11-20
    • 1970-01-01
    • 2017-03-08
    • 2019-06-19
    • 2012-02-22
    • 2011-01-02
    相关资源
    最近更新 更多