Esempio n. 1
0
def test_distributions_normal_freeze_fit():
	d = NormalDistribution(5, 2)
	d.freeze()
	d.fit([0, 1, 1, 2, 3, 2, 1, 2, 2])

	assert_array_almost_equal(d.parameters, [5, 2])
	assert_array_equal(d.summaries, [0, 0, 0])
Esempio n. 2
0
def test_distributions_normal_freeze_thaw_fit():
	d = NormalDistribution(5, 2)
	d.freeze()
	d.thaw()

	d.fit([5, 4, 5, 4, 6, 5, 6, 5, 4, 6, 5, 4])
	assert_array_almost_equal(d.parameters, [4.9166, 0.7592], 4)
Esempio n. 3
0
def test_distributions_normal_weighted_fit():
	d = NormalDistribution(5, 2)

	d.fit([0, 2, 3, 2, 100], weights=[0, 5, 2, 3, 200])
	assert_array_almost_equal(d.parameters, [95.3429, 20.8276], 4)
	assert_almost_equal(d.log_probability(50), -6.32501194)
	assert_array_equal(d.summaries, [0, 0, 0])
Esempio n. 4
0
def test_distributions_normal_inertia_fit():
	d = NormalDistribution(5, 2)

	d.fit([0, 5, 3, 5, 7, 3, 4, 5, 2], inertia=0.5)

	assert_array_almost_equal(d.parameters, [4.3889, 1.9655], 4)
	assert_array_equal(d.summaries, [0, 0, 0])
Esempio n. 5
0
def test_distributions_normal_freeze_thaw_fit():
	d = NormalDistribution(5, 2)
	d.freeze()
	d.thaw()

	d.fit([5, 4, 5, 4, 6, 5, 6, 5, 4, 6, 5, 4])
	assert_array_almost_equal(d.parameters, [4.9166, 0.7592], 4)
Esempio n. 6
0
def test_distributions_normal_freeze_fit():
	d = NormalDistribution(5, 2)
	d.freeze()
	d.fit([0, 1, 1, 2, 3, 2, 1, 2, 2])

	assert_array_almost_equal(d.parameters, [5, 2])
	assert_array_equal(d.summaries, [0, 0, 0])
Esempio n. 7
0
def test_distributions_normal_inertia_fit():
	d = NormalDistribution(5, 2)

	d.fit([0, 5, 3, 5, 7, 3, 4, 5, 2], inertia=0.5)

	assert_array_almost_equal(d.parameters, [4.3889, 1.9655], 4)
	assert_array_equal(d.summaries, [0, 0, 0])
Esempio n. 8
0
def test_distributions_normal_weighted_fit():
	d = NormalDistribution(5, 2)

	d.fit([0, 2, 3, 2, 100], weights=[0, 5, 2, 3, 200])
	assert_array_almost_equal(d.parameters, [95.3429, 20.8276], 4)
	assert_almost_equal(d.log_probability(50), -6.32501194)
	assert_array_equal(d.summaries, [0, 0, 0])
Esempio n. 9
0
def test_distributions_normal_exclusive_nan_fit():
	d = NormalDistribution(5, 2)
	e = NormalDistribution(5, 2)

	d.fit([nan, nan, nan, nan, nan])

	assert_array_equal(d.parameters, [5, 2])
	assert_almost_equal(d.log_probability(4), e.log_probability(4.))
	assert_array_equal(d.summaries, [0, 0, 0])
Esempio n. 10
0
def test_distributions_normal_exclusive_nan_fit():
	d = NormalDistribution(5, 2)
	e = NormalDistribution(5, 2)

	d.fit([nan, nan, nan, nan, nan])

	assert_array_equal(d.parameters, [5, 2])
	assert_almost_equal(d.log_probability(4), e.log_probability(4.))
	assert_array_equal(d.summaries, [0, 0, 0])
Esempio n. 11
0
def test_distributions_normal_nan_fit():
	d = NormalDistribution(5, 2)
	e = NormalDistribution(5, 2)

	d.fit([5, 4, nan, 5, 4, nan, 6, 5, 6, nan, nan, 5, 4, 6, nan, 5, 4, nan])

	assert_array_almost_equal(d.parameters, [4.9167, 0.7592], 4)
	assert_not_equal(d.log_probability(4), e.log_probability(4))
	assert_almost_equal(d.log_probability(4), -1.3723678499651766)
	assert_almost_equal(d.log_probability(18), -149.13140399454429)
	assert_almost_equal(d.log_probability(1e8), -8674697942168743.0, -4)
	assert_array_equal(d.summaries, [0, 0, 0])
Esempio n. 12
0
def test_distributions_normal_nan_fit():
	d = NormalDistribution(5, 2)
	e = NormalDistribution(5, 2)

	d.fit([5, 4, nan, 5, 4, nan, 6, 5, 6, nan, nan, 5, 4, 6, nan, 5, 4, nan])

	assert_array_almost_equal(d.parameters, [4.9167, 0.7592], 4)
	assert_not_equal(d.log_probability(4), e.log_probability(4))
	assert_almost_equal(d.log_probability(4), -1.3723678499651766)
	assert_almost_equal(d.log_probability(18), -149.13140399454429)
	assert_almost_equal(d.log_probability(1e8), -8674697942168743.0, -4)
	assert_array_equal(d.summaries, [0, 0, 0])
def test_normal():
    d = NormalDistribution(5, 2)
    e = NormalDistribution(5., 2.)

    assert_true(isinstance(d.log_probability(5), float))
    assert_true(isinstance(d.log_probability([5]), float))
    assert_true(isinstance(d.log_probability([5, 6]), numpy.ndarray))

    assert_almost_equal(d.log_probability(5), -1.61208571, 8)
    assert_equal(d.log_probability(5), e.log_probability(5))
    assert_equal(d.log_probability(5), d.log_probability(5.))

    assert_almost_equal(d.log_probability(0), -4.737085713764219)
    assert_equal(d.log_probability(0), e.log_probability(0.))

    d.fit([5, 4, 5, 4, 6, 5, 6, 5, 4, 6, 5, 4])

    assert_almost_equal(d.parameters[0], 4.9167, 4)
    assert_almost_equal(d.parameters[1], 0.7592, 4)
    assert_not_equal(d.log_probability(4), e.log_probability(4))
    assert_almost_equal(d.log_probability(4), -1.3723678499651766)
    assert_almost_equal(d.log_probability(18), -149.13140399454429)
    assert_almost_equal(d.log_probability(1e8), -8674697942168743.0, -4)

    d = NormalDistribution(5, 1e-10)
    assert_almost_equal(d.log_probability(1e100), -4.9999999999999994e+219)

    d.fit([0, 2, 3, 2, 100], weights=[0, 5, 2, 3, 200])
    assert_equal(round(d.parameters[0], 4), 95.3429)
    assert_equal(round(d.parameters[1], 4), 20.8276)
    assert_equal(round(d.log_probability(50), 8), -6.32501194)

    d = NormalDistribution(5, 2)
    d.fit([0, 5, 3, 5, 7, 3, 4, 5, 2], inertia=0.5)

    assert_equal(round(d.parameters[0], 4), 4.3889)
    assert_equal(round(d.parameters[1], 4), 1.9655)

    d.summarize([0, 2], weights=[0, 5])
    d.summarize([3, 2], weights=[2, 3])
    d.summarize([100], weights=[200])
    d.from_summaries()

    assert_equal(round(d.parameters[0], 4), 95.3429)
    assert_equal(round(d.parameters[1], 4), 20.8276)

    d.freeze()
    d.fit([0, 1, 1, 2, 3, 2, 1, 2, 2])
    assert_equal(round(d.parameters[0], 4), 95.3429)
    assert_equal(round(d.parameters[1], 4), 20.8276)

    d.thaw()
    d.fit([5, 4, 5, 4, 6, 5, 6, 5, 4, 6, 5, 4])
    assert_equal(round(d.parameters[0], 4), 4.9167)
    assert_equal(round(d.parameters[1], 4), 0.7592)

    e = Distribution.from_json(d.to_json())
    assert_equal(e.name, "NormalDistribution")
    assert_equal(round(e.parameters[0], 4), 4.9167)
    assert_equal(round(e.parameters[1], 4), 0.7592)

    f = pickle.loads(pickle.dumps(e))
    assert_equal(f.name, "NormalDistribution")
    assert_equal(round(f.parameters[0], 4), 4.9167)
    assert_equal(round(f.parameters[1], 4), 0.7592)
Esempio n. 14
0
def test_normal():
	d = NormalDistribution(5, 2)
	e = NormalDistribution(5., 2.)

	assert_true(isinstance(d.log_probability(5), float))
	assert_true(isinstance(d.log_probability([5]), float))
	assert_true(isinstance(d.log_probability([5, 6]), numpy.ndarray))

	assert_almost_equal(d.log_probability(5), -1.61208571, 8)
	assert_equal(d.log_probability(5), e.log_probability(5))
	assert_equal(d.log_probability(5), d.log_probability(5.))

	assert_almost_equal(d.log_probability(0), -4.737085713764219)
	assert_equal(d.log_probability(0), e.log_probability(0.))

	d.fit([5, 4, 5, 4, 6, 5, 6, 5, 4, 6, 5, 4])

	assert_almost_equal(d.parameters[0], 4.9167, 4)
	assert_almost_equal(d.parameters[1], 0.7592, 4)
	assert_not_equal(d.log_probability(4), e.log_probability(4))
	assert_almost_equal(d.log_probability(4), -1.3723678499651766)
	assert_almost_equal(d.log_probability(18), -149.13140399454429)
	assert_almost_equal(d.log_probability(1e8), -8674697942168743.0, -4)

	d = NormalDistribution(5, 1e-10)
	assert_almost_equal(d.log_probability(1e100), -4.9999999999999994e+219)


	d.fit([0, 2, 3, 2, 100], weights=[0, 5, 2, 3, 200])
	assert_equal(round(d.parameters[0], 4), 95.3429)
	assert_equal(round(d.parameters[1], 4), 20.8276)
	assert_equal(round(d.log_probability(50), 8), -6.32501194)

	d = NormalDistribution(5, 2)
	d.fit([0, 5, 3, 5, 7, 3, 4, 5, 2], inertia=0.5)

	assert_equal(round(d.parameters[0], 4), 4.3889)
	assert_equal(round(d.parameters[1], 4), 1.9655)

	d.summarize([0, 2], weights=[0, 5])
	d.summarize([3, 2], weights=[2, 3])
	d.summarize([100], weights=[200])
	d.from_summaries()

	assert_equal(round(d.parameters[0], 4), 95.3429)
	assert_equal(round(d.parameters[1], 4), 20.8276)

	d.freeze()
	d.fit([0, 1, 1, 2, 3, 2, 1, 2, 2])
	assert_equal(round(d.parameters[0], 4), 95.3429)
	assert_equal(round(d.parameters[1], 4), 20.8276)

	d.thaw()
	d.fit([5, 4, 5, 4, 6, 5, 6, 5, 4, 6, 5, 4])
	assert_equal(round(d.parameters[0], 4), 4.9167)
	assert_equal(round(d.parameters[1], 4), 0.7592)

	e = Distribution.from_json(d.to_json())
	assert_equal(e.name, "NormalDistribution")
	assert_equal(round(e.parameters[0], 4), 4.9167)
	assert_equal(round(e.parameters[1], 4), 0.7592)

	f = pickle.loads(pickle.dumps(e))
	assert_equal(f.name, "NormalDistribution")
	assert_equal(round(f.parameters[0], 4), 4.9167)
	assert_equal(round(f.parameters[1], 4), 0.7592)