Example #1
0
    def setUp(self):
        self.options = beta.get_default_options()
        self.options.max_iter = 200
        self.options.min_iter = 4

        self.K = 3

        # the exponential family we are dealing with
        self.exp_family = beta.DirichletExpFamily(k=2)

        np.random.seed(1)
        self.setUpData()

        #self.weights = np.ones(len(self.T))
        #self.weights[0] = .2
        self.weights = np.random.rand(len(self.T))
np.random.seed(1)

N = 40
x = np.empty(N)
"Data."
x[:N/2] = np.random.beta(3, 1, N/2)
x[N/2:] = np.random.beta(1, 3, N/2)

T = np.empty((N, 2))
"Sufficient statistics of data."
T[:,0] = np.log(x)
T[:,1] = np.log(1-x)
weights = np.ones(N)


options = beta.get_default_options()
options.K = 2
options.point_estimates = True
options.max_iter = 25


family = beta.DirichletExpFamily(k=2)
exp_family = beta.DirichletExpFamily(k=2)
mixture = beta.ExpFamilyMixture(T, weights, options.K, exp_family, -np.ones(2), 1., options=options)
eta_0 = np.array([ 0.17656734,  0.16734223])
epsilon = 1e-1 * np.ones(2)
mixture.q_eta.eta[0] = eta_0 + epsilon
mixture.q_eta.eta[1] = eta_0 - epsilon

for _i in xrange(options.max_iter):
    mixture.update()