def hp_categorical(self, memo, node, label, tid, val): """ Parameters: See `hp_uniform` """ size = memo[node.arg['size']] if size == 0: return [] val1 = np.atleast_1d(val) p = p_orig = np.asarray(memo[node.arg['p']]) if p.ndim == 2: if len(p) not in (1, len(val1)): print node print p print np.asarray(p).shape assert len(p) in (1, len(val1)) else: assert p.ndim == 1 p = p[np.newaxis, :] upper = memo[node.arg['upper']] if val1.size: counts = np.bincount(val1, minlength=upper) / float(val1.size) prior = self.shrinking(label) else: counts = np.zeros(upper) prior = 1.0 new_p = (1 - prior) * counts + prior * p assert new_p.ndim == 2 rval = categorical(p=new_p, rng=self.rng, size=size) if p_orig.ndim == 1: assert len(rval) == 1 return rval[0] else: return rval
def hp_categorical(self, memo, node, label, tid, val): """ Parameters: See `hp_uniform` """ p = p_orig = np.asarray(memo[node.arg['p']]) if p.ndim == 2: assert len(p) == 1 p = p[0] counts = np.zeros_like(p) counts[val] += 1 prior = self.shrinking(label) new_p = (1 - prior) * counts + prior * p if p_orig.ndim == 2: rval = categorical(p=[new_p], rng=self.rng, size=memo[node.arg['size']]) else: rval = categorical(p=new_p, rng=self.rng, size=memo[node.arg['size']]) return rval
def hp_randint(self, memo, node, label, tid, val): """ Parameters: See `hp_uniform` """ upper = memo[node.arg['upper']] counts = np.zeros(upper) counts[val] += 1 prior = self.shrinking(label) p = (1 - prior) * counts + prior * (1.0 / upper) rval = categorical(p=p, upper=upper, rng=self.rng, size=memo[node.arg['size']]) return rval
def hp_randint(self, memo, node, label, tid, val): """ Parameters: See `hp_uniform` """ upper = memo[node.arg['upper']] val1 = np.atleast_1d(val) if val1.size: counts = np.bincount(val1, minlength=upper) / float(val1.size) else: counts = np.zeros(upper) prior = 1.0 prior = self.shrinking(label) p = (1 - prior) * counts + prior * (1.0 / upper) rval = categorical(p=p, upper=upper, rng=self.rng, size=memo[node.arg['size']]) return rval