J'essaie d'ajuster une courbe à certaines données en utilisant MCMC.Retry until no RuntimeWarning
En raison de la nature de mon problème particulier, occasionnellement (1/5 fois l'exécution du code) certaines singularités sont rencontrées et le code me soulève un RuntimeWarning et continue à donner une mauvaise réponse.
/Library/Python/2.7/site-packages/emcee-2.2.1-py2.7.egg/emcee/ensemble.py:335: RuntimeWarning: invalid value encountered in subtract
/Library/Python/2.7/site-packages/emcee-2.2.1-py2.7.egg/emcee/ensemble.py:336: RuntimeWarning: invalid value encountered in greater
Cela se produit essentiellement parce que je prends un journal d'une gaussienne et l'une des valeurs proposées de moyens est égal à l'un des points de données.
Je voudrais réessayer d'exécuter le code, en utilisant peut-être try and except, jusqu'à ce que ces avertissements d'exécution ne se produisent pas. Merci!
Edit: Après un commentaire par @sgDysregulation J'ai essayé:
while True:
try:
print "Before mcmc"
sampler.run_mcmc(pos, 500)
print "After mcmc"
break
except Exception as e:
print "Warning detected"
continue
où j'ai essayé d'utiliser les deux « passe » et « continuer » déclarations, mettant « casser » à l'intérieur et à l'intérieur en boucle « essayer ". J'ai également essayé "RuntimeWarning" au lieu de "Exception".
La sortie de l'extrait ci-dessus ne montre aucun avertissement détecté.
Before mcmc
/Library/Python/2.7/site-packages/emcee-2.2.1-py2.7.egg/emcee/ensemble.py:335: RuntimeWarning: invalid value encountered in subtract
/Library/Python/2.7/site-packages/emcee-2.2.1-py2.7.egg/emcee/ensemble.py:336: RuntimeWarning: invalid value encountered in greater
After mcmc
'RuntimeWarning' est un [' Warning'] (https://docs.python.org/2/library/warnings.html), pas une 'Exception'. Vous devez indiquer à python de convertir cet avertissement en exception si vous voulez que l'instruction 'try/except' fonctionne (par exemple http://stackoverflow.com/questions/16236644/userwarning-converting-a-masked-element-to- nan/16237927 # 16237927, ou voir la réponse de @ ali_m). –