我想将数据拟合到Logistic(Sigmoid)函数并获得无限协方差。我有2个参数,并假设我有5个数据点。我的数据在变量xdata
和ydata
中。这里是产生完全相同的警告一个代码示例:scipy.optimize.curve_fit未能估计协方差
from scipy.optimize import curve_fit
def sigmoid(x, x0, k):
y = 1/(1 + np.exp(-k*(x-x0)))
return y
xdata = np.array([ 5., 75., 88., 95., 96.])
ydata = np.array([ 0.04761905, 0.02380952, 0, 0.04761905, 0])
popt, pcov = curve_fit(sigmoid, xdata, ydata)
赋予pcov
是
array([[ inf, inf],
[ inf, inf]])
和以下警告:
OptimizeWarning:协方差参数不能估计为 category = OptimizeWarning)
我看到一个导致相同问题的相关问题here,但问题是数据点和参数的数量是相同的,这在我的情况中是不正确的。
编辑:注意上面我所提到我有个数据点,但是这仅仅是例子。实际上有60个。这里是原始数据的图表,看到确实sigmoid功能似乎是合适的:
您尝试使用的数据与直线的一组点不同吗?你能提供真实数据的样本吗?或者你是否真的试图将一个sigmoid放入一个线性数据集? –
谢谢@IgnacioVergaraKausel。我刚刚添加了示例数据 – splinter