dongya6997 2014-06-01 12:32 采纳率: 0%
浏览 37
已采纳

从Python移植到Go的算法

I am trying to port this python code to Go but there is no beta() in math package. Where can i find beta and other functions required for this?

from numpy import *
from scipy.stats import beta


class BetaBandit(object):
    def __init__(self, num_options=2, prior=(1.0,1.0)):
        self.trials = zeros(shape=(num_options,), dtype=int)
        self.successes = zeros(shape=(num_options,), dtype=int)
        self.num_options = num_options
        self.prior = prior

    def add_result(self, trial_id, success):
        self.trials[trial_id] = self.trials[trial_id] + 1
        if (success):
            self.successes[trial_id] = self.successes[trial_id] + 1

    def get_recommendation(self):
        sampled_theta = []
        for i in range(self.num_options):
            #Construct beta distribution for posterior
            dist = beta(self.prior[0]+self.successes[i],
                        self.prior[1]+self.trials[i]-self.successes[i])
            #Draw sample from beta distribution
            sampled_theta += [ dist.rvs() ]
        # Return the index of the sample with the largest value
        return sampled_theta.index( max(sampled_theta) )
  • 写回答

1条回答 默认 最新

  • dongyong8491 2014-06-01 12:40
    关注

    If you are talking about numpy.random.beta, the Beta distribution which is a special case of the Dirichlet distribution, and is related to the Gamma distribution, you can check the project gostat.

    It has a beta.go source code which implements that function.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?