我不明白curve_fit
无法估计参数的协方差,从而提升下面的OptimizeWarning
。以下MCVE解释了我的问题:
MCVE python代码段
from scipy.optimize import curve_fit
func = lambda x, a: a * x
popt, pcov = curve_fit(f = func, xdata = [1], ydata = [1])
print(popt, pcov)
输出
\python-3.4.4\lib\site-packages\scipy\optimize\minpack.py:715:
OptimizeWarning: Covariance of the parameters could not be estimated
category=OptimizeWarning)
[ 1.] [[ inf]]
对于a = 1
,该函数完全符合xdata
和ydata
。为什么不是错误/差异0
,或接近0
,而是inf
呢?
来自curve_fit
SciPy Reference Guide:
如果解的雅可比矩阵没有满秩,那么'lm'方法返回一个填充np.inf的矩阵,另一方面'trf'和'dogbox'方法使用Moore-Penrose伪逆计算协方差矩阵。
那么,潜在的问题是什么?为什么解的雅可比矩阵不具有满秩?