1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
|
import numpy as np
from numpy.testing import assert_allclose
from hmmlearn.utils import normalize, fill_covars
def test_normalize():
A = np.random.normal(42., size=128)
A[np.random.choice(len(A), size=16)] = 0.0
assert (A == 0.0).any()
normalize(A)
assert_allclose(A.sum(), 1.)
def test_normalize_along_axis():
A = np.random.normal(42., size=(128, 4))
for axis in range(A.ndim):
A[np.random.choice(len(A), size=16), axis] = 0.0
assert (A[:, axis] == 0.0).any()
normalize(A, axis=axis)
assert_allclose(A.sum(axis=axis), 1.)
def test_fill_covars():
full = np.arange(12).reshape(3, 2, 2) + 1
np.testing.assert_equal(fill_covars(full, 'full', 3, 2), full)
diag = np.arange(6).reshape(3, 2) + 1
expected = np.array([[[1, 0], [0, 2]],
[[3, 0], [0, 4]],
[[5, 0], [0, 6]]])
np.testing.assert_equal(fill_covars(diag, 'diag', 3, 2), expected)
tied = np.arange(4).reshape(2, 2) + 1
expected = np.array([[[1, 2], [3, 4]],
[[1, 2], [3, 4]],
[[1, 2], [3, 4]]])
np.testing.assert_equal(fill_covars(tied, 'tied', 3, 2), expected)
spherical = np.array([1, 2, 3])
expected = np.array([[[1, 0], [0, 1]],
[[2, 0], [0, 2]],
[[3, 0], [0, 3]]])
np.testing.assert_equal(
fill_covars(spherical, 'spherical', 3, 2), expected)
|