Я не понимаю 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:
Если матрица Якоби в решении не имеет полный ранга, то метод «ого» возвращает матрицу, заполненную np.inf, с другими методы «trf» и «dogbox» используют Moore-Penrose псевдоинверсию для вычисления ковариационной матрицы.
Итак, в чем проблема? Почему матрица якобиана в решении не имеет полного ранга?