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
J'ai quelques questions sur le module odr....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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)
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 ?
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).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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'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.
Partager