def test(self, weights, num_samples=10000): plot.figure(self.i) self.i+=1 weights = weights/float(weights.sum()) d = distribution(weights) sample = d.sample(num_samples) frequencies = numpy.array([sample.count(i) for i in xrange(weights.size)]) plot.plot(numpy.arange(weights.size), weights/float(sum(weights))) plot.plot(numpy.arange(weights.size), frequencies/float(sum(frequencies)), "b*")
def better_resample(X, weights): return numpy.array(distribution(weights).sample(X.shape[0], X))