我不明白curve_fit
不能估计参数的协方差,从而提高了下面的OptimizeWarning
。下面MCVE说明我的问题:如果参数完全符合,为什么'curve_fit`不能够估计参数的协方差?
MCVE蟒蛇片段
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伪逆来计算协方差矩阵。
那么,底层的问题是什么?为什么解决方案中的雅可比矩阵没有满秩?