У меня есть несколько точек данных, и я хотел бы найти подходящую функцию, я думаю, подойдет кумулятивная сигмоидальная функция Гаусса, но я не знаю, как это реализовать.
Это то, что у меня естьпрямо сейчас:
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()
Но я получаю следующее предупреждение:
... / scipy / optimize / minpack.py: 779: OptimizeWarning: Ковариация параметров не можетбыть оцененной категории = OptimizeWarning)
Может кто-нибудь помочь?Я также открыт для любых других возможностей сделать это!Мне просто нужна кривая в любом случае для этих данных.