예제 #1
0
def test_dense_vs_sparse():
    # XXX: really belongs in irm test cases, but kernels has a nice cluster
    # enumeration iterator

    r = rng()

    n = 5
    raw = ma.array(
        np.random.choice(np.arange(20), size=(n, n)),
        mask=np.random.choice([False, True], size=(n, n)))

    dense = [relation_numpy_dataview(raw)]
    sparse = [sparse_relation_dataview(_tocsr(raw))]

    domains = [n]
    relations = [((0, 0), gp)]
    defn = irm_definition(domains, relations)

    def score_fn(data):
        def f(assignments):
            s = irm_initialize(defn, data, r=r, domain_assignments=assignments)
            assign = sum(s.score_assignment(i)
                         for i in xrange(len(assignments)))
            likelihood = s.score_likelihood(r)
            return assign + likelihood
        return f

    product_assignments = tuple(map(list, map(permutation_iter, domains)))

    dense_posterior = scores_to_probs(
        np.array(map(score_fn(dense), it.product(*product_assignments))))
    sparse_posterior = scores_to_probs(
        np.array(map(score_fn(sparse), it.product(*product_assignments))))

    assert_1d_lists_almost_equals(dense_posterior, sparse_posterior, places=3)
예제 #2
0
def test_dense_vs_sparse():
    # XXX: really belongs in irm test cases, but kernels has a nice cluster
    # enumeration iterator

    r = rng()

    n = 5
    raw = ma.array(np.random.choice(np.arange(20), size=(n, n)),
                   mask=np.random.choice([False, True], size=(n, n)))

    dense = [relation_numpy_dataview(raw)]
    sparse = [sparse_relation_dataview(_tocsr(raw))]

    domains = [n]
    relations = [((0, 0), gp)]
    defn = irm_definition(domains, relations)

    def score_fn(data):
        def f(assignments):
            s = irm_initialize(defn, data, r=r, domain_assignments=assignments)
            assign = sum(
                s.score_assignment(i) for i in xrange(len(assignments)))
            likelihood = s.score_likelihood(r)
            return assign + likelihood

        return f

    product_assignments = tuple(map(list, map(permutation_iter, domains)))

    dense_posterior = scores_to_probs(
        np.array(map(score_fn(dense), it.product(*product_assignments))))
    sparse_posterior = scores_to_probs(
        np.array(map(score_fn(sparse), it.product(*product_assignments))))

    assert_1d_lists_almost_equals(dense_posterior, sparse_posterior, places=3)
예제 #3
0
def test_one_binary_sparse():
    # 1 domain, 1 binary relation
    domains = [4]

    def mk_relations(model):
        return [((0, 0), model)]

    relsize = (domains[0], domains[0])
    raw = ma.array(np.random.choice([False, True], size=relsize),
                   mask=np.random.choice([False, True], size=relsize))
    data = [sparse_relation_dataview(_tocsr(raw))]
    _test_convergence(domains, data, mk_relations(bb), mk_relations(bb),
                      assign)
예제 #4
0
def test_one_binary_sparse():
    # 1 domain, 1 binary relation
    domains = [4]

    def mk_relations(model):
        return [((0, 0), model)]

    relsize = (domains[0], domains[0])
    raw = ma.array(
        np.random.choice([False, True], size=relsize),
        mask=np.random.choice([False, True], size=relsize))
    data = [sparse_relation_dataview(_tocsr(raw))]
    _test_convergence(
        domains, data, mk_relations(bb), mk_relations(bb), assign)