PyMC를 가르치기 위해 간단한 회귀 회귀를 정의하려고합니다. 하지만 ZeroProbability 오류가 발생하고 이것이 왜 발생하는지 또는 피하는 방법을 정확히 이해하지 못합니다. 여기 PyMC를 이용한 물류 회귀 분석 : ZeroProbability 오류
내 코드입니다 :import pymc
import numpy as np
x = np.array([85, 95, 70, 65, 70, 90, 75, 85, 80, 85])
y = np.array([1., 1., 0., 0., 0., 1., 1., 0., 0., 1.])
w0 = pymc.Normal('w0', 0, 0.000001) # uninformative prior (any real number)
w1 = pymc.Normal('w1', 0, 0.000001) # uninformative prior (any real number)
@pymc.deterministic
def logistic(w0=w0, w1=w1, x=x):
return 1.0/(1. + np.exp(-(w0 + w1 * x)))
observed = pymc.Bernoulli('observed', logistic, value=y, observed=True)
그리고 여기에 추적 다시 오류 메시지입니다 : 그것은 inf
을 반환 이후
Traceback (most recent call last):
File "/Library/Python/2.7/site-packages/IPython/core/interactiveshell.py", line 2883, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "<ipython-input-2-43ed68985dd1>", line 24, in <module>
observed = pymc.Bernoulli('observed', logistic, value=y, observed=True)
File "/usr/local/lib/python2.7/site-packages/pymc/distributions.py", line 318, in __init__
**arg_dict_out)
File "/usr/local/lib/python2.7/site-packages/pymc/PyMCObjects.py", line 772, in __init__
if not isinstance(self.logp, float):
File "/usr/local/lib/python2.7/site-packages/pymc/PyMCObjects.py", line 929, in get_logp
raise ZeroProbability(self.errmsg)
ZeroProbability: Stochastic observed's value is outside its support,
or it forbids its parents' current values.
나는, 문제의 원인이 될 np.exp
을 의심 할 때 선형 방정식이 너무 높아진다. 나는 PyMC (her is one)를 사용하여 로지스틱 회귀 분석을 정의하는 다른 방법이 알고 있지만, 나는이 방법이 작동하지 않는 이유를 알고에 관심이, 그리고 나는 Bernoulli
객체를 사용하는 대신 bernoulli_like
누락 된 음수 부호에주의 해 주셔서 감사합니다. 귀하의 솔루션은 Abrahams 솔루션과 동일한 문제를 해결하지만 Abraham이 제안한 솔루션은 다음 두 가지 이유로 바람직합니다. 1) 더 짧습니다. 2) 코드가 이해하기 쉽습니다. – elgehelge