コード例 #1
0
ファイル: fourway.py プロジェクト: wilsondy/cgpm
 def simulate(self, rowid, targets, constraints=None, inputs=None, N=None):
     regime = self.lookup_quadrant(
         inputs[self.inputs[0]],
         inputs[self.inputs[1]],
     )
     x = gu.pflip(self.probabilities[regime], rng=self.rng)
     return {self.outputs[0]: x}
コード例 #2
0
ファイル: mvkde.py プロジェクト: wilsondy/cgpm
 def simulate(self, rowid, targets, constraints=None, inputs=None, N=None):
     if self.N == 0:
         raise ValueError('KDE requires at least one observation.')
     if inputs:
         raise ValueError('Prohibited inputs: %s' % (inputs, ))
     if not targets:
         raise ValueError('No targets: %s' % (targets, ))
     if any(q not in self.outputs for q in targets):
         raise ValueError('Unknown targets: %s' % (targets, ))
     if constraints and any(q in constraints for q in targets):
         raise ValueError('Duplicate variable: %s, %s' % (
             targets,
             constraints,
         ))
     constraints = self.populate_constraints(rowid, targets, constraints)
     if constraints:
         full_members = self._dataset(targets + constraints.keys())
         weights = _kernel_base.gpke(
             self._bw(constraints),
             full_members[:, len(targets):],
             constraints.values(),
             self._stattypes(constraints),
             tosum=False,
         )
         targets_members = full_members[:, :len(targets)]
     else:
         targets_members = self._dataset(targets)
         weights = [1] * len(targets_members)
     assert len(weights) == len(targets_members)
     index = gu.pflip(weights, size=N, rng=self.rng)
     if N is None:
         return self._simulate_member(targets_members[index], targets)
     return [
         self._simulate_member(targets_members[i], targets) for i in index
     ]
コード例 #3
0
ファイル: test.py プロジェクト: wilsondy/cgpm
def gen_partition(N, weights, rng):
    assert all(w != 0 for w in weights)
    assert np.allclose(sum(weights), 1)
    K = len(weights)
    assert K <= N    # XXX FIXME
    Z = range(K)
    Z.extend(int(gu.pflip(weights, rng=rng)) for _ in xrange(N-K))
    rng.shuffle(Z)
    return Z
コード例 #4
0
ファイル: test.py プロジェクト: wilsondy/cgpm
def _gen_categorical_data(Z, rng, separation=.9, distargs=None):
    k = int(distargs['k'])
    n_rows = len(Z)

    if separation > .95:
        separation = .95

    Tc = np.zeros(n_rows, dtype=int)
    C = max(Z)+1
    theta_arrays = [rng.dirichlet(np.ones(k)*(1.-separation), 1)
        for _ in range(C)]

    for r in xrange(n_rows):
        cluster = Z[r]
        thetas = theta_arrays[cluster][0]
        x = gu.pflip(thetas, rng=rng)
        Tc[r] = int(x)
    return Tc
コード例 #5
0
 def simulate(self, rowid, targets, constraints=None, inputs=None, N=None):
     y = inputs[self.inputs[0]]
     assert int(y) == float(y)
     assert y in [0, 1]
     x = gu.pflip(self.probabilities[y], rng=self.rng)
     return {self.outputs[0]: x}
コード例 #6
0
ファイル: categorical.py プロジェクト: wilsondy/cgpm
 def simulate(self, rowid, targets, constraints=None, inputs=None, N=None):
     DistributionGpm.simulate(self, rowid, targets, constraints, inputs, N)
     if rowid in self.data:
         return {self.outputs[0]: self.data[rowid]}
     x = gu.pflip(self.counts + self.alpha, rng=self.rng)
     return {self.outputs[0]: x}
コード例 #7
0
ファイル: categorical.py プロジェクト: stjordanis/cgpm2
 def simulate(self, rowid, targets, constraints=None, inputs=None, N=None):
     DistributionCGPM.simulate(self, rowid, targets, constraints, inputs, N)
     if rowid in self.data and not isnan(self.data[rowid]):
         return {self.outputs[0]: self.data[rowid]}
     x = pflip(self.counts + self.alpha, rng=self.rng)
     return {self.outputs[0]: x}