我在估计5个未知参数a, b, c, d, e时遇到了麻烦,这些参数肯定在某些区间内。看起来像这样:
我有一些数据(期望值),如下所示:
Y1 = [60, 59, 58, 57, 56, 55, 50, 30, 10]X1 = [0.048, 0.049, 0.05, 0.05, 0.06, 0.089, 0.1, 0.12, 0.134]
我尝试这样实现:
popt, pcov = curve_fit(func, a, b, c, d, e, Y1, X1)
以找到最优的a, b, c, d, e,来拟合曲线
plt.plot(Y, X)plt.show()
但这不起作用。
结果是:
OptimizeWarning: Covariance of the parameters could not be estimated
抱歉我的问题描述得不好。
回答:
根据curve_fit()的文档,您的curve_fit()应该以func, X1和Y1作为前三个参数。目前的代码中,func()总是返回一个与X1无关的单一值,因此无法拟合数据。下面是一个使用您的数据的示例图形拟合器,它有三个参数,并使用scipy的默认初始参数估计值1.0 – 这些并不总是最优的。如果您对任何给定函数的数据拟合效果不好,可能是初始参数估计的问题,因此scipy有一个遗传算法模块来帮助找到这些估计值,如果需要的话。