optimisation avec [scipy.odr]
Bonjour,
Je cherche a optimiser une fonction avec scipy.odr.
J'ai un set de donnees (plusieurs courbes de longeurs differentes avec leurs erreurs) qui peuvent etre expliquees avec des modeles (un model par courbe). Ma fonction calcul le model et renvoi la difference entre les donnees et le model
Code:
1 2 3 4 5 6 7 8
| x = array(Ry) # Ry contient mes donnees, et est de dimension 2
sx = array(Rs) # Rs sont mes erreurs sur les donnees (meme dimension que Ry)
x0 = array(N*[0.0])
my_data = odr.RealData(x,sx=sx)
my_model = odr.Model(inv_odr_LR_fct)
myodr = odr.ODR(my_data,my_model,maxit=1,beta0=x0) |
J'ai quelques questions sur le module odr....
1. dans la documentation, je trouve qu'il faut definir les donnees avec x et y. Quelle est la difference entre x et y ?
2. Mes donnees sont des courbes de longeur differentes, est-ce que odr est adapte a ce type de donnees ?
3. Avec le code ci-dessus j'obtiens l'erreur ci-dessous. Est ce que ca veut dire que je dois definir un y ? Mais quoi mettre dedans alors ?
Code:
1 2 3 4 5 6 7 8
| Traceback (most recent call last):
File "inv_odr_LR.py", line 52, in <module>
myodr = odr.ODR(my_data,my_model,maxit=1,beta0=x0)
File "/usr/lib/python2.6/dist-packages/scipy/odr/odrpack.py", line 737, in __init__
self._check()
File "/usr/lib/python2.6/dist-packages/scipy/odr/odrpack.py", line 754, in _check
raise odr_error("an explicit model needs response data")
odr.odrpack.odr_error: an explicit model needs response data |
J'ai aussi utilise plusieurs modules de [scipy.optimize] tels que [Fmin], [slsqp], [leastsq] et [mpfit] mais le resultat n'est pas bon du tout (l'eccart entre les donnees et le model est bien trop grand).
J'essaye de convertir un programme matlab qui utilise lsqnonlin et qui marche comme un charme.
Merci d'avance a tout ceux qui pourrais me donner des petites idees.