def test_distributions_uniform_fit_ooc(): d = UniformDistribution(0, 10) d.summarize([0, 2], weights=[0, 5]) d.summarize([3, 2], weights=[2, 3]) d.summarize([100], weights=[200]) assert_array_equal(d.summaries, [2, 100, 210]) d.from_summaries() assert_array_equal(d.summaries, [inf, -inf, 0]) assert_array_equal(d.parameters, [2, 100])
def test_uniform(): d = UniformDistribution(0, 10) assert_almost_equal(d.log_probability(2.34), -2.3025850929940455, 8) assert_equal(d.log_probability(2), d.log_probability(8)) assert_equal(d.log_probability(10), d.log_probability(3.4)) assert_equal(d.log_probability(1.7), d.log_probability(9.7)) assert_equal(d.log_probability(10.0001), float("-inf")) assert_equal(d.log_probability(-0.0001), float("-inf")) for i in range(10): data = numpy.random.randn(100) * 100 d.fit(data) assert_equal(d.parameters[0], data.min()) assert_equal(d.parameters[1], data.max()) minimum, maximum = data.min(), data.max() for i in range(100): sample = d.sample() assert_less_equal(minimum, sample) assert_less_equal(sample, maximum) d = UniformDistribution(0, 10) d.fit([-5, 20], inertia=0.5) assert_equal(d.parameters[0], -2.5) assert_equal(d.parameters[1], 15) d.fit([-100, 100], inertia=1.0) assert_equal(d.parameters[0], -2.5) assert_equal(d.parameters[1], 15) d.summarize([0, 50, 2, 24, 28]) d.summarize([-20, 7, 8, 4]) d.from_summaries(inertia=0.75) assert_equal(d.parameters[0], -6.875) assert_equal(d.parameters[1], 23.75) d.summarize([0, 100]) d.summarize([100, 200]) d.from_summaries() assert_equal(d.parameters[0], 0) assert_equal(d.parameters[1], 200) d.freeze() d.fit([0, 1, 6, 7, 8, 3, 4, 5, 2]) assert_equal(d.parameters, [0, 200]) d.thaw() d.fit([0, 1, 6, 7, 8, 3, 4, 5, 2]) assert_equal(d.parameters, [0, 8]) e = Distribution.from_json(d.to_json()) assert_equal(e.name, "UniformDistribution") assert_equal(e.parameters, [0, 8]) f = pickle.loads(pickle.dumps(e)) assert_equal(f.name, "UniformDistribution") assert_equal(f.parameters, [0, 8])