def sampleRow(self, amount): category = ST.drawCategory(self.mixture) dirichlet = self.dirichlets[category] multinomial = ST.drawFromDirichlet(dirichlet) retVal = [0]*self.K for i in range(0, amount): k = ST.drawCategory(multinomial) retVal[k] += 1 return retVal
def sampleRow(self, amount): category = ST.drawCategory(self.mixture) dirichlet = self.dirichlets[category] multinomial = ST.drawFromDirichlet(dirichlet) retVal = [0] * self.K for i in range(0, amount): k = ST.drawCategory(multinomial) retVal[k] += 1 return retVal
def initMixtureModel(data, hyperParams): # Initialize parameter data structs C = hyperParams.C K = hyperParams.K mixture = [1.0 / C] * C multinomials = [] for c in range(0, C): randomMultinomial = ST.drawFromDirichlet(hyperParams.componentDirich) multinomials.append(randomMultinomial) return MME.MultinomialMixtureModel(C, K, multinomials, mixture)
# # import sys import csv import math import random import samplingTools as Sample from optparse import OptionParser parser = OptionParser() parser.add_option('-N', '--numMulinomials', dest='N', type="int", default=100, help='Number of distinct multinomials to generate') parser.add_option('-M', '--numSamplesPerRow', dest='M', type="int", default=100, help='The number of samples for each multinomial') parser.add_option('-A', '--alpha', dest='A', default='1,1', help='Comma-separated dirichlet parameters') parser.add_option('-O', '--outputType', dest='O', default='countMatrix', help='The type of output: countMatrix (default), or UMatrix') (options, args) = parser.parse_args() alphas = map(float, options.A.split(",")) K = len(alphas) outputType = "countMatrix" if (options.O == "UMatrix"): outputType = options.O if (outputType == "UMatrix"): data = Sample.generateRandomDataset(options.M, options.N, alphas) print "\t".join(map(str, data)) else: for i in range(0, options.N): multinomial = Sample.drawFromDirichlet(alphas) buckets = Sample.sampleFromMultinomial(multinomial, options.M) print "\t".join(map(str, buckets))
'--numMulinomials', dest='N', type="int", default=100, help='Number of distinct multinomials to generate') parser.add_option('-A', '--alpha', dest='A', default='1,1', help='Comma-separated dirichlet parameters') parser.add_option( '-O', '--outputType', dest='O', default='multnomials', help= 'The type of output: multnomials (default), or ss (sufficient statistic) which is the average of the sum of the logs for each category' ) (options, args) = parser.parse_args() alphas = map(float, options.A.split(",")) K = len(alphas) if (options.O == "ss"): for i in range(0, options.N): multinomial = Sample.drawFromDirichlet(alphas) print "\t".join(map(str, multinomial)) else: for i in range(0, options.N): multinomial = Sample.drawFromDirichlet(alphas) print "\t".join(map(str, multinomial))