小编use*_*757的帖子

为什么 Scipy 如此糟糕地拟合这条曲线?

我正在尝试使这个函数适合一些数据

这是我的功能:

def first_deriv(xlist, L, k, x0):
    return [k*L*(math.e**(-k*(x+x0)))/(1+math.e**(-k*(x+x0)))**2 for x in xlist]
Run Code Online (Sandbox Code Playgroud)

这就是函数的样子,所以我希望得到一个非常好的拟合。 该函数的外观如何

这是使函数适合数据的代码

popt = curve_fit(first_deriv, list(range(len(data))), data, bounds=((0, -np.inf, -np.inf), (10**(9), +np.inf, 0)), maxfev=10000)
Run Code Online (Sandbox Code Playgroud)

这就是我绘制它的方式:

xdata = list(np.linspace(-100, 100, 2000))    
plt.scatter(xdata, first_deriv(xdata, popt[0][0], popt[0][1], popt[0][2]), s=1)
Run Code Online (Sandbox Code Playgroud)

界限的存在是为了使答案合理,但即使我将所有界限设为无限,它仍然给出了一个糟糕的拟合。

这是可怕的拟合

不合适

我很惊讶 curve_fit 似乎完全搞砸了。有人可以解释一下为什么吗?

python scipy

1
推荐指数
1
解决办法
2073
查看次数

标签 统计

python ×1

scipy ×1