示例#1
0
    def test_marginalize_small(self):
        data = np.array([[1, 2],
                         [5, 8]])
        a = DiscreteFactor([(0, 2), (1, 2)], data=data)

        data = np.array([3, 13])
        c = DiscreteFactor([(0, 2)], data=data)

        b = a.marginalize([0])
        print b.data
        print c.data
        print b.data.shape
        print c.data.shape
        self.assertEqual(b.variables, c.variables)
        self.assertEqual(b.axis_to_variable, c.axis_to_variable)
        assert_array_almost_equal(b.data, c.data)

        data = np.array([6, 10])
        e = DiscreteFactor([(1, 2)], data)

        d = a.marginalize([1])
        print d.data
        print e.data
        print d.data.shape
        print e.data.shape

        self.assertEqual(d.variables, e.variables)
        self.assertEqual(d.axis_to_variable, e.axis_to_variable)
        assert_array_almost_equal(d.data, e.data)
示例#2
0
    def test_marginalize_larger(self):
        data = np.array([[[1, 2],
                          [5, 8],
                          [9, 10]],
                        [[11, 12],
                         [15, 18],
                         [19, 21]]])
        a = DiscreteFactor([(0, 2), (4, 3), (20, 2)], data=data)

        data = np.array([35, 96])
        c = DiscreteFactor([(0, 2)], data=data)

        b = a.marginalize([0])
        print b.data
        print c.data
        print b.data.shape
        print c.data.shape
        self.assertEqual(b.variables, c.variables)
        self.assertEqual(b.axis_to_variable, c.axis_to_variable)
        assert_array_almost_equal(b.data, c.data)

        data = np.array([[12, 14],
                         [20, 26],
                         [28, 31]])
        e = DiscreteFactor([(4, 3), (20, 2)], data=data)

        d = a.marginalize([4, 20])
        print d.data
        print e.data
        print d.data.shape
        print e.data.shape
        self.assertEqual(d.variables, e.variables)
        self.assertEqual(d.axis_to_variable, e.axis_to_variable)
        assert_array_almost_equal(d.data, e.data)
示例#3
0
    def test_marginalize_small_edge(self):
        data = np.array([[0, 2],
                         [5, 8]])
        a = DiscreteFactor([(0, 2), (1, 2)], data=data)

        print a.data
        b = a.marginalize([0, 1])
        print
        print b.data
        print b.data.shape
        self.assertEqual(b.variables, a.variables)
        self.assertEqual(b.axis_to_variable, a.axis_to_variable)
        assert_array_almost_equal(b.data, a.data)

        c = a.marginalize([1, 0])
        print c.data
        print c.data.shape
        self.assertEqual(c.variables, a.variables)
        self.assertEqual(c.axis_to_variable, a.axis_to_variable)
        assert_array_almost_equal(c.data, a.data)