我正在尝试使用 MCMC 将曲线拟合到一些数据。
由于我的特定问题的性质,偶尔(运行代码的 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
这基本上会发生,因为我正在记录高斯,并且建议的平均值之一等于数据点之一。
我想重试运行代码,可能使用 try 和 except,直到这些运行时警告不发生。谢谢!
编辑:在@sgDysregulation 发表评论后,我尝试过:
while True:
try:
print "Before mcmc"
sampler.run_mcmc(pos, 500)
print "After mcmc"
break
except Exception as e:
print "Warning detected"
continue
我尝试使用“pass”和“continue”语句,将“break”放在while循环和“try”中。还尝试了“RuntimeWarning”而不是“Exception”。
上面代码段的输出未显示检测到任何警告。
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