【发布时间】:2014-04-12 05:55:16
【问题描述】:
我在 python 中使用 numpy 将我的数据拟合到 S 形曲线。数据拟合曲线后,如何在曲线中 y=50% 点找到 X 的值
enter code here`import numpy as np
enter code here`import pylab
from scipy.optimize import curve_fit
def sigmoid(x, x0, k):
y = 1 / (1 + np.exp(-k*(x-x0)))
return y
xdata = np.array([0.0, 1.0, 3.0, 4.3, 7.0, 8.0, 8.5, 10.0, 12.0])
ydata = np.array([0.01, 0.02, 0.04, 0.11, 0.43, 0.7, 0.89, 0.95, 0.99])
popt, pcov = curve_fit(sigmoid, xdata, ydata)
print popt
x = np.linspace(-1, 15, 50)
y = sigmoid(x, *popt)
pylab.plot(xdata, ydata, 'o', label='data')
pylab.plot(x,y, label='fit')
pylab.ylim(0, 1.05)
pylab.legend(loc='best')
pylab.show()
【问题讨论】:
-
请通过提供示例代码展示您尝试过的内容以及您期望的行为。
-
对于完整的 S 形曲线,它将是
0, f(x=0)... -
这找到了一条曲线 我如何在数据拟合后找到 50% x 值 import numpy as np import pylab from scipy.optimize import curve_fit def sigmoid(x, x0, k): y = 1 / (1 + np.exp(-k*(x-x0))) 返回 y xdata = np.array([0.0, 1.0, 3.0, 4.3, 7.0, 8.0, 8.5, 10.0, 12.0]) ydata = np.array ([0.01, 0.02, 0.04, 0.11, 0.43, 0.7, 0.89, 0.95, 0.99]) popt, pcov = curve_fit(sigmoid, xdata, ydata) print popt x = np.linspace(-1, 15, 50) y = sigmoid(x, *popt) pylab.plot(xdata, ydata, 'o', label='data') pylab.plot(x,y, label='fit') pylab.ylim(0, 1.05) pylab.legend (loc='best') pylab.show()
-
@user3395925 您可以发表您的评论作为答案...
-
对不起,我没明白你的意思?
标签: python numpy curve-fitting