def __init__(self, cluster_density, alpha=None, alpha_shape=None, alpha_rate=None): self.base_measure = PyCloneBaseMeasure() self.partition_sampler = AuxillaryParameterPartitionSampler( self.base_measure, cluster_density) self.atom_sampler = BaseMeasureAtomSampler(self.base_measure, cluster_density) if alpha is None: self.alpha = 1 self.update_alpha = True self.concentration_sampler =\ GammaPriorConcentrationSampler(alpha_shape, alpha_rate) else: self.alpha = alpha self.update_alpha = False self.num_iters = 0
def __init__(self, atom_sampler, partition_sampler, alpha=1.0, alpha_priors=None, global_params_sampler=None): self.atom_sampler = atom_sampler self.partition_sampler = partition_sampler self.alpha = alpha if alpha_priors is None: self.update_alpha = False else: self.update_alpha = True self.concentration_sampler = GammaPriorConcentrationSampler( alpha_priors['shape'], alpha_priors['rate']) if global_params_sampler is None: self.update_global_params = False else: self.update_global_params = True self.global_params_sampler = global_params_sampler self.num_iters = 0
def __init__(self, base_measure, cluster_density): self.base_measure = base_measure self.cluster_density = cluster_density self.concentration_sampler = GammaPriorConcentrationSampler(1, 1) posterior_density = BetaBinomialDensity() # self.partition_sampler = MarginalGibbsPartitionSampler(base_measure, cluster_density, posterior_density) self.partition_sampler = AuxillaryParameterPartitionSampler( base_measure, cluster_density) self.atom_sampler = BetaBinomialGibbsAtomSampler( base_measure, cluster_density)
from math import log from pydp.samplers.concentration import GammaPriorConcentrationSampler sampler = GammaPriorConcentrationSampler(0.01, 0.01) x = 0 for i in range(1000000): x = sampler.sample(x, 1, 100) x /= 2 print x log(x)
x = poisson_rvs(25) data.append(PoissonData(x)) alpha = 1 base_measure = GammaBaseMeasure(1, 1) cluster_density = PoissonDensity() partition = Partition() for item, data_point in enumerate(data): partition.add_cell(base_measure.random()) partition.add_item(item, item) concentration_sampler = GammaPriorConcentrationSampler(1, 1) posterior_density = NegativeBinomialDensity() partition_sampler = MarginalGibbsPartitionSampler(base_measure, cluster_density, posterior_density) #partition_sampler = AuxillaryParameterPartitionSampler(base_measure, cluster_density) atom_sampler = GammaPoissonGibbsAtomSampler(base_measure, cluster_density) for i in range(num_iters): alpha = concentration_sampler.sample(alpha, partition.number_of_cells, partition.number_of_items) partition_sampler.sample(data, partition, alpha)