我有一些数据点,想找到一个拟合函数,我想一个累积的高斯S型函数就可以拟合,但是我真的不知道如何实现。
这就是我现在所拥有的:
import numpy as np
import pylab
from scipy.optimize
import curve_fit
def sigmoid(x, a, b):
y = 1 / (1 + np.exp(-b*(x-a)))
return y
xdata = np.array([400, 600, 800, 1000, 1200, 1400, 1600])
ydata = np.array([0, 0, 0.13, 0.35, 0.75, 0.89, 0.91])
popt, pcov = curve_fit(sigmoid, xdata, ydata)
print(popt)
x = np.linspace(-1, 2000, 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()
Run Code Online (Sandbox Code Playgroud)
但是我收到以下警告:
... / scipy / optimize / minpack.py:779:OptimizeWarning:无法估计参数的协方差category = OptimizeWarning)
有人可以帮忙吗?我也愿意尝试其他任何方式!我只需要一条曲线以任何方式拟合此数据。