def estimate(self, context, data):
pdf = ScaleMixture()
alpha = context.prior.alpha
beta = context.prior.beta
d = context._d
if len(data.shape) == 1:
data = data[:, numpy.newaxis]
a = alpha + 0.5 * d * len(data.shape)
b = beta + 0.5 * data.sum(-1) ** 2
s = numpy.clip(numpy.random.gamma(a, 1. / b), 1e-20, 1e10)
pdf.scales = s
context.prior.estimate(s)
pdf.prior = context.prior
return pdf
评论列表
文章目录