【发布时间】:2017-11-21 17:53:32
【问题描述】:
我想将数据拟合到 Logistic (Sigmoid) 函数并获得无限协方差。我有 2 个参数,假设我有 5 个数据点。我的数据在变量xdata 和ydata 中。这是一个生成完全相同警告的代码示例:
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:无法估计参数的协方差 类别=优化警告)
我看到一个相关的问题导致了同样的问题here,但问题是数据点和参数的数量是相同的,在我的情况下不是这样。
编辑:请注意,上面我已经提到我有数据点,但这只是示例。实际上有 60 个。这是原始数据的图,可以看出 sigmoid 函数似乎很合适:
【问题讨论】:
-
您尝试使用的数据是否不同于直线的一组点?你能提供一个真实数据的样本吗?还是您真的想将 sigmoid 拟合到线性数据集中?
-
感谢@IgnacioVergaraKausel。我刚刚添加了示例数据
标签: python python-3.x scipy curve-fitting data-fitting