我不明白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僞逆來計算協方差矩陣。
那麼,底層的問題是什麼?爲什麼解決方案中的雅可比矩陣沒有滿秩?