Python 当数据数增加时,曲线拟合返回1.0

Python 当数据数增加时,曲线拟合返回1.0,python,scipy,curve-fitting,Python,Scipy,Curve Fitting,我一直在尝试对一些数据进行直方图拟合。当柱状图中的箱子数在12到300之间时,代码工作得很好,但是当我增加箱子数时,它返回一条平线 我检查了一下,看是否是直方图的错误,但是数据出来很好,尽管箱子的数量 def f_func(x, a, b, c): return a * np.exp(-b * x) + c popt, pcov = opt.curve_fit(f_func, hist_x, hist_y) print("f = ", round(popt[0], 2), "* ex

我一直在尝试对一些数据进行直方图拟合。当柱状图中的箱子数在12到300之间时,代码工作得很好,但是当我增加箱子数时,它返回一条平线

我检查了一下,看是否是直方图的错误,但是数据出来很好,尽管箱子的数量

def f_func(x, a, b, c):
    return a * np.exp(-b * x) + c

popt, pcov = opt.curve_fit(f_func, hist_x, hist_y)

print("f = ", round(popt[0], 2), "* exp(-", round(popt[2], 2), "* x) +", round(popt[2], 2))

当曲线拟合无法改善初始参数估计时,它只返回它们。由于您没有提供自己的任何初始参数估计,因此它使用的是所有1.0的默认初始参数估计。尝试的一个实验是使用300的拟合值作为(比如)400的初始参数估计,看看这是否解决了问题。这将证明,对于较大的数字,您需要提供自己的初始参数估计值。当曲线拟合无法改善初始参数估计值时,它只返回它们。由于您没有提供自己的任何初始参数估计,因此它使用的是所有1.0的默认初始参数估计。尝试的一个实验是使用300的拟合值作为(比如)400的初始参数估计,看看这是否解决了问题。这将证明,对于较大的数字,您需要提供自己的初始参数估计。