コード例 #1
0
def test_mixture_distribution_weights():
    d = dit.Distribution(['A', 'B'], [0.5, 0.5])
    d2 = dit.Distribution(['A', 'B'], [1, 0])

    with pytest.raises(ditException):
        dit.mixture_distribution([d, d2], [1])
    with pytest.raises(ditException):
        dit.mixture_distribution2([d, d2], [1])
コード例 #2
0
ファイル: test_distconst.py プロジェクト: Autoplectic/dit
def test_mixture_distribution_weights():
    d = dit.Distribution(['A', 'B'], [0.5, 0.5])
    d2 = dit.Distribution(['A', 'B'], [1, 0])

    with pytest.raises(ditException):
        dit.mixture_distribution([d, d2], [1])
    with pytest.raises(ditException):
        dit.mixture_distribution2([d, d2], [1])
コード例 #3
0
ファイル: test_distconst.py プロジェクト: chebee7i/dit
def test_mixture_distribution5():
    # Incompatible sample spaces.
    d1 = dit.Distribution(['A', 'B'], [0.5, 0.5])
    d2 = dit.Distribution(['B', 'C'], [0.5, 0.5])
    d3 = dit.mixture_distribution([d1, d2], [0.5, 0.5], merge=True)
    pmf = np.array([0.25, 0.5, 0.25])
    assert_true(np.allclose(pmf, d3.pmf))
コード例 #4
0
ファイル: test_distconst.py プロジェクト: chebee7i/dit
def test_mixture_distribution():
    d = dit.Distribution(['A', 'B'], [0.5, 0.5])
    d2 = dit.Distribution(['A', 'B'], [1, 0])
    pmf = np.array([0.75, 0.25])

    d3 = dit.mixture_distribution([d, d2], [0.5, 0.5])
    npt.assert_allclose(pmf, d3.pmf)
コード例 #5
0
ファイル: dirichlet.py プロジェクト: chebee7i/buhmm
    def pm_next_word_dists(self, lengths, base=None):
        """
        Calculate next word distributions of the specified lengths.

        The posterior mean transition probabilities and final state of each
        hidden Markov model are used to calculate the word probabilities.

        """
        if base is None:
            base = dit.ditParams['base']
        if base != 'linear':
            logs = True
        else:
            logs = False

        dists = defaultdict(list)
        for i, initial_node in enumerate(self.posterior.valid_initial_nodes):
            pm_machine = self.posterior.pm_machine(initial_node)
            final_node = self.posterior.final_node[initial_node]
            kwds = {'logs': logs, 'sort': 'dit', 'ndist': final_node}
            d = pm_machine.probabilities(lengths, **kwds)
            for L, dist in zip(lengths, d):
                if logs and base != 2:
                    dist = dist.set_base(base)
                dists[L].append(dist)

        weights = dit.copypmf(self.inode_posterior, base, 'sparse')
        avg_dists = []
        for L in lengths:
            avg_dists.append( dit.mixture_distribution(dists[L], weights) )

        return avg_dists
コード例 #6
0
def test_mixture_distribution5():
    # Incompatible sample spaces.
    d1 = dit.Distribution(['A', 'B'], [0.5, 0.5])
    d2 = dit.Distribution(['B', 'C'], [0.5, 0.5])
    d3 = dit.mixture_distribution([d1, d2], [0.5, 0.5], merge=True)
    pmf = np.array([0.25, 0.5, 0.25])
    assert_true(np.allclose(pmf, d3.pmf))
コード例 #7
0
def test_mixture_distribution():
    d = dit.Distribution(['A', 'B'], [0.5, 0.5])
    d2 = dit.Distribution(['A', 'B'], [1, 0])
    pmf = np.array([0.75, 0.25])

    d3 = dit.mixture_distribution([d, d2], [0.5, 0.5])
    npt.assert_allclose(pmf, d3.pmf)
コード例 #8
0
ファイル: test_distconst.py プロジェクト: chebee7i/dit
def test_mixture_distribution_log():
    d = dit.Distribution(['A', 'B'], [0.5, 0.5])
    d2 = dit.Distribution(['A', 'B'], [1, 0])
    d.set_base(2)
    d2.set_base(2)
    weights = np.log2(np.array([0.5, 0.5]))
    pmf = np.log2(np.array([0.75, 0.25]))

    d3 = dit.mixture_distribution([d, d2], weights)
    npt.assert_allclose(pmf, d3.pmf)
コード例 #9
0
def test_mixture_distribution_log():
    d = dit.Distribution(['A', 'B'], [0.5, 0.5])
    d2 = dit.Distribution(['A', 'B'], [1, 0])
    d.set_base(2)
    d2.set_base(2)
    weights = np.log2(np.array([0.5, 0.5]))
    pmf = np.log2(np.array([0.75, 0.25]))

    d3 = dit.mixture_distribution([d, d2], weights)
    npt.assert_allclose(pmf, d3.pmf)
コード例 #10
0
ファイル: test_distconst.py プロジェクト: chebee7i/dit
def test_mixture_distribution4():
    # Sample spaces are compatible.
    # But pmfs have a different lengths and orders.
    d = dit.Distribution(['A', 'B'], [0.5, 0.5])
    d2 = dit.Distribution(['B', 'A'], [1, 0], sort=False, trim=False, sparse=True)
    d2.make_sparse(trim=True)
    pmf = np.array([0.25, 0.75])

    d3 = dit.mixture_distribution([d, d2], [0.5, 0.5])
    assert_true(np.allclose(pmf, d3.pmf))
    assert_raises(ValueError, dit.mixture_distribution2, [d, d2], [0.5, 0.5])
コード例 #11
0
ファイル: test_distconst.py プロジェクト: chebee7i/dit
def test_mixture_distribution3():
    # Sample spaces are compatible.
    # But pmfs have a different order.
    d = dit.Distribution(['A', 'B'], [0.5, 0.5])
    d2 = dit.Distribution(['B', 'A'], [1, 0], sort=False, trim=False, sparse=False)
    pmf = np.array([0.25, 0.75])

    d3 = dit.mixture_distribution([d, d2], [0.5, 0.5])
    assert_true(np.allclose(pmf, d3.pmf))
    d3 = dit.mixture_distribution2([d, d2], [0.5, 0.5])
    assert_false(np.allclose(pmf, d3.pmf))
コード例 #12
0
ファイル: test_distconst.py プロジェクト: zhaofeng-shu33/dit
def test_mixture_distribution3():
    # Sample spaces are compatible.
    # But pmfs have a different order.
    d = dit.Distribution(['A', 'B'], [0.5, 0.5])
    d2 = dit.Distribution(['B', 'A'], [1, 0], sort=False, trim=False, sparse=False)
    pmf = np.array([0.25, 0.75])

    d3 = dit.mixture_distribution([d, d2], [0.5, 0.5])
    assert np.allclose(pmf, d3.pmf)
    d3 = dit.mixture_distribution2([d, d2], [0.5, 0.5])
    assert not np.allclose(pmf, d3.pmf)
コード例 #13
0
ファイル: test_distconst.py プロジェクト: zhaofeng-shu33/dit
def test_mixture_distribution4():
    # Sample spaces are compatible.
    # But pmfs have a different lengths and orders.
    d = dit.Distribution(['A', 'B'], [0.5, 0.5])
    d2 = dit.Distribution(['B', 'A'], [1, 0], sort=False, trim=False, sparse=True)
    d2.make_sparse(trim=True)
    pmf = np.array([0.25, 0.75])

    d3 = dit.mixture_distribution([d, d2], [0.5, 0.5])
    assert np.allclose(pmf, d3.pmf)
    with pytest.raises(ValueError):
        dit.mixture_distribution2([d, d2], [0.5, 0.5])