Je ne comprends pas curve_fit
n'est pas en mesure d'estimer la covariance du paramètre, élevant ainsi le OptimizeWarning
ci-dessous. Le MCVE suivant explique mon problème:Pourquoi `curve_fit` n'est-il pas capable d'estimer la covariance du paramètre si le paramètre correspond exactement?
MCVE extrait de 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)
de sortie
\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]]
Pour a = 1
la fonction correspond à xdata
et ydata
exactement. Pourquoi l'erreur/variance n'est pas 0
, ou quelque chose près de 0
, mais inf
à la place?
Il y a cette citation du curve_fit
SciPy Reference Guide:
Si la matrice jacobienne à la solution n'a pas de rang plein, puis méthode « lm » renvoie une matrice remplie de np.inf, de l'autre Les méthodes main 'trf' et 'dogbox' utilisent le pseudo-inverse de Moore-Penrose pour calculer la matrice de covariance.
Alors, quel est le problème sous-jacent? Pourquoi la matrice jacobienne à la solution n'a-t-elle pas un rang complet?