MCMCを使用してデータにカーブを合わせようとしています。RuntimeWarningがなくなるまで再試行
私の特定の問題の性質上、時には(コードの1/5を実行する)いくつかの特異点が発生し、コードがRuntimeWarningを発生させ、間違った答えを出す。
/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
これは基本的には私がガウスのログをとっており、平均の提案値の1つがデータポイントの1つと等しいために起こります。
これらのランタイム警告が発生しない限り、おそらくtryとexceptを使用して、コードの実行を再試行します。 ありがとう!私は「合格」の両方を使用して入れて、文を「継続」試してみました
while True:
try:
print "Before mcmc"
sampler.run_mcmc(pos, 500)
print "After mcmc"
break
except Exception as e:
print "Warning detected"
continue
は内部ループと内側の間、「してみてください「破る」:
編集:私は試してみました@sgDysregulationによってコメントに続き "また、 "Exception"の代わりに "RuntimeWarning"を試しました。
上記スニペットからの出力には、警告が検出されていないことが示されています。
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'は' '警告' '(https://docs.python.org/2/library/warnings.html)です。例外ではありません。 'try/except'文を動作させたい場合は、Pythonにその警告を例外に変換するように指示する必要があります(例:http://stackoverflow.com/questions/16236644/userwarning-converting-a-masked-element-to- nan/16237927#16237927、または@ ali_mの回答を参照してください)。 –