Ich versuche, eine Kurve an einige Daten mit MCMC anzupassen.Wiederholen bis keine RuntimeWarning
Aufgrund der Natur meines speziellen Problems, gelegentlich (1/5 mal mit dem Code) einige Singularitäten angetroffen und der Code wirft mir eine RuntimeWarning und fährt fort, eine falsche Antwort zu geben.
/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
Dies geschieht im Grunde, weil ich ein Protokoll einer Gaußschen nehmen und eine der vorgeschlagenen Werte des Mittels ist gleich einer der Datenpunkte.
Ich möchte den Code erneut versuchen, vielleicht mit try und except, bis diese Laufzeitwarnungen nicht auftreten. Danke!
Edit: einen Kommentar von @sgDysregulation Nach ich versucht habe:
while True:
try:
print "Before mcmc"
sampler.run_mcmc(pos, 500)
print "After mcmc"
break
except Exception as e:
print "Warning detected"
continue
wo ich versucht habe, beide „Pass“ können und „weiter“ Aussagen „brechen“ innerhalb while-Schleife setzen und innen „versuchen ". Habe auch "RuntimeWarning" anstelle von "Exception" versucht.
Die Ausgabe aus dem obigen Snippet zeigt keine Warnungen an.
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 'ist ein [' Warning'' (https://docs.python.org/2/library/warnings.html), keine 'Exception'. Sie müssen python mitteilen, dass diese Warnung in eine Ausnahme umgewandelt werden soll, wenn die Anweisung 'try/except' funktionieren soll (zB http://stackoverflow.com/questions/16236644/userwarning-converting-a-masked-Element-to- nan/16237927 # 16237927, oder siehe @ ali_m's Antwort). –