Esempio n. 1
0
    def _init_partition(self, base_measure):
        self.partition = Partition()

        for item, _ in enumerate(self.data):
            self.partition.add_cell(base_measure.random())

            self.partition.add_item(item, item)
Esempio n. 2
0
    def initialise_partition(self, data, init_method):
        '''
        Args:
            data : (list) Data points.
            
        Kwargs:
            method : (str) Initialisation method to use. 
                           - 'separate' will allocate each data point to a separate partition.
                           - 'together' will allocate all data points to the same partition.
        '''

        self.partition = Partition()

        if init_method == 'separate':
            for item, _ in enumerate(data):
                self.partition.add_cell(
                    self.partition_sampler.base_measure.random())

                self.partition.add_item(item, item)

        elif init_method == 'together':
            self.partition.add_cell(
                self.partition_sampler.base_measure.random())

            for item, _ in enumerate(data):
                self.partition.add_item(item, 0)
Esempio n. 3
0
def draw_from_prior(base_measure, size):
    alpha = gamma_rvs(1, 1)

    #    partition = sample_from_crp(alpha, size, base_measure)

    partition = Partition()

    partition.add_cell(base_measure.random())

    for item in range(size):
        partition.add_item(item, 0)

    return alpha, partition
Esempio n. 4
0
def sample_from_crp(alpha, size, base_measure):
    labels = []
    values = []

    tables = []

    # Seat the first customer
    tables.append([
        0,
    ])

    labels.append(0)
    values.append(base_measure.random())

    for customer in range(1, size):
        p = _get_table_probabilities(tables, alpha)

        table_id = discrete_rvs(p)

        if table_id == len(tables):
            tables.append([
                customer,
            ])

            values.append(base_measure.random())
        else:
            tables[table_id].append(customer)

        labels.append(table_id)

    partition = Partition()

    for v in values:
        partition.add_cell(v)

    for item, cell_index in enumerate(labels):
        partition.add_item(item, cell_index)

    return partition
Esempio n. 5
0
    def initialise_partition(self, data):
        self.partition = Partition()

        for item, _ in enumerate(data):
            self.partition.add_cell(self.base_measure.random())
            self.partition.add_item(item, item)
Esempio n. 6
0
for i in range(1000):
    x = poisson_rvs(100)
    data.append(PoissonData(x))

for i in range(50):
    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)