我一直在尝试拟合双极 sigmoid 曲线 - 我想要以下曲线:
但我需要它移动和拉伸(stretch)。我有以下输入:
x[0] = 8, x[48] = 2
所以在 48 个周期内,我需要使用双极 sigmoid 函数从 8 下降到 2,以近似一个很好的平滑下降。任何想法如何得出适合这些参数的曲线?
到目前为止,这是我所拥有的,但我需要更改 sigmoid 函数:
import math
def sigmoid(x):
return 1 / (1 + math.exp(-x))
plt.plot([sigmoid(float(z)) for z in range(1,48)])
最佳答案
从通用双极 sigmoid 函数:
f(x,m,b)= 2/(1+exp(-b*(x-m))) - 1
有两个参数和两个未知数 - shift
m
和 scale b
你有两个条件:f(0) = 8, f(48) = 2
取第一个条件,表达
b
vs m
,连同第二个条件写非线性函数求解,然后用 SciPy 的 fsolve
数值求解,并恢复 b
和 m
。这里通过类似方法问答相关:How to random sample lognormal data in Python using the inverse CDF and specify target percentiles?
关于python - 适合双极 sigmoid python,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43213069/