我的意思是模拟汤普森采样,但是以下代码在参数中给出了域错误。 我搜索它,发现有人说这可能是因为Beta的参数为负,但是这里的参数必须为正,我不知道如何解决它。
<ul>
<li><a>Blah Parent</a>
<ul>
<a>Blah Child 1</a>
<li><a>option 1</a></li>
<li><a>option 2</a></li>
<a>Blah Child 2</a>
<li><a>option 3</a></li>
<li><a>option 4</a></li>
<a>Blah Child 3</a>
<li><a>option 5</a></li>
<li><a>option 6</a></li>
</ul>
</li>
</ul>
错误:
from scipy import stats
class TS():
def __init__(self,alpha,beta,n):
self.alpha=alpha
self.beta=beta
self.n=n
self.value=[0,0,0]#estimator
self.prob=[0.4,0.6,0.8]
def generate(self):
for j in range(self.n):
tmp=[0,0,0]
for i in range(0,3):
tmp[i]=stats.beta.rvs(self.alpha[i],self.beta[i])
max_index=tmp.index(max(tmp))
r=np.random.choice([0,1],p=(1-self.prob[max_index],self.prob[max_index]))
self.alpha[max_index]+=r
self.beta[max_index]-=(1-r)
print(self.value)
one=TS([1,1,1],[1,1,1],100)
one.generate()
答案 0 :(得分:1)
self.beta[max_index]
应该增加{em> 1 - r
。更改将self.beta[max_index]
更新为
self.beta[max_index] += 1 - r
请参阅https://web.stanford.edu/~bvr/pubs/TS_Tutorial.pdf第15页的算法2。