Exemplo n.º 1
0
    def test_transform(self):
        """Check if it transforms properly."""
        t = Compose([Enumerate([2, "asfa", "ipsi"]),
                     OneHotEncode(3)], "categorical")
        assert numpy.all(t.transform(2) == numpy.array((1.0, 0.0, 0.0)))
        assert numpy.all(t.transform("asfa") == numpy.array((0.0, 1.0, 0.0)))
        assert numpy.all(t.transform("ipsi") == numpy.array((0.0, 0.0, 1.0)))
        with pytest.raises(KeyError):
            t.transform("aafdasfa")
        assert numpy.all(
            t.transform([["ipsi", "asfa"], [2, "ipsi"]]) == numpy.array([[(
                0.0, 0.0, 1.0), (0.0, 1.0,
                                 0.0)], [(1.0, 0.0, 0.0), (0.0, 0.0, 1.0)]]))

        t = Compose([Enumerate([2, "asfa"]), OneHotEncode(2)], "categorical")
        assert t.transform(2) == 0.0
        assert t.transform("asfa") == 1.0
        with pytest.raises(KeyError):
            t.transform("ipsi")
        assert numpy.all(
            t.transform([["asfa", "asfa"], [2, "asfa"]]) == numpy.array(
                [[1.0, 1.0], [0.0, 1.0]]))

        # for the crazy enough
        t = Compose([Enumerate([2]), OneHotEncode(1)], "categorical")
        assert t.transform(2) == 0.0
        with pytest.raises(KeyError):
            t.transform("ipsi")
        assert numpy.all(t.transform([[2, 2], [2, 2]]) == [[0, 0], [0, 0]])
Exemplo n.º 2
0
    def test_transform(self):
        """Check if it transforms properly."""
        t = Compose([Enumerate([2, 'asfa', 'ipsi']), OneHotEncode(3)], 'categorical')
        assert numpy.all(t.transform(2) == numpy.array((1., 0., 0.)))
        assert numpy.all(t.transform('asfa') == numpy.array((0., 1., 0.)))
        assert numpy.all(t.transform('ipsi') == numpy.array((0., 0., 1.)))
        with pytest.raises(KeyError):
            t.transform('aafdasfa')
        assert(numpy.all(t.transform([['ipsi', 'asfa'], [2, 'ipsi']]) ==
               numpy.array([[(0., 0., 1.), (0., 1., 0.)], [(1., 0., 0.), (0., 0., 1.)]])))

        t = Compose([Enumerate([2, 'asfa']), OneHotEncode(2)], 'categorical')
        assert t.transform(2) == 0.
        assert t.transform('asfa') == 1.
        with pytest.raises(KeyError):
            t.transform('ipsi')
        assert(numpy.all(t.transform([['asfa', 'asfa'], [2, 'asfa']]) ==
               numpy.array([[1., 1.], [0., 1.]])))

        # for the crazy enough
        t = Compose([Enumerate([2]), OneHotEncode(1)], 'categorical')
        assert t.transform(2) == 0.
        with pytest.raises(KeyError):
            t.transform('ipsi')
        assert numpy.all(t.transform([[2, 2], [2, 2]]) == [[0, 0], [0, 0]])
Exemplo n.º 3
0
    def test_reverse(self):
        """Check if it reverses `transform` properly, if possible."""
        t = Compose([Enumerate([2, 'asfa', 'ipsi']), OneHotEncode(3)], 'categorical')
        assert t.reverse((0.9, 0.8, 0.3)) == 2
        assert t.reverse((-0.3, 2., 0.)) == 'asfa'
        assert t.reverse((0., 0., 1.)) == 'ipsi'
        with pytest.raises(AssertionError):
            t.reverse((0., 0., 0., 1.))
        assert(numpy.all(t.reverse(numpy.array([[(0., 0., 1.), (0., 1., 0.)],
                                                [(1., 0., 0.), (0., 0., 1.)]])) ==
               numpy.array([['ipsi', 'asfa'], [2, 'ipsi']], dtype=numpy.object)))

        t = Compose([Enumerate([2, 'asfa']), OneHotEncode(2)], 'categorical')
        assert t.reverse(0.3) == 2
        assert t.reverse(2.) == 'asfa'
        assert numpy.all(t.reverse((0., 0., 0., 1.)) == numpy.array([2, 2, 2, 'asfa'],
                                                                    dtype=numpy.object))
        assert(numpy.all(t.reverse(numpy.array([[0.55, 3.], [-0.6, 1.]])) ==
               numpy.array([['asfa', 'asfa'], [2, 'asfa']], dtype=numpy.object)))

        # for the crazy enough
        t = Compose([Enumerate([2]), OneHotEncode(1)], 'categorical')
        assert t.reverse(0) == 2
        assert t.reverse(5.0) == 2
        assert t.reverse(0.2) == 2
        assert t.reverse(-0.2) == 2
        assert numpy.all(t.reverse([[0.5, 0], [1.0, 55]]) == numpy.array([[2, 2], [2, 2]],
                                                                         dtype=numpy.object))
Exemplo n.º 4
0
    def test_infer_target_shape(self):
        """Check if it infers the shape of a transformed `Dimension`."""
        t = Compose([Enumerate([2, 'asfa', 'ipsi']), OneHotEncode(3)], 'categorical')
        assert t.infer_target_shape((2, 5)) == (2, 5, 3)

        t = Compose([Enumerate([2, 'asfa']), OneHotEncode(2)], 'categorical')
        assert t.infer_target_shape((2, 5)) == (2, 5)

        t = Compose([Enumerate([2]), OneHotEncode(1)], 'categorical')
        assert t.infer_target_shape((2, 5)) == (2, 5)
Exemplo n.º 5
0
    def test_infer_target_shape(self):
        """Check if it infers the shape of a transformed `Dimension`."""
        t = OneHotEncode(3)
        assert t.infer_target_shape((2, 5)) == (2, 5, 3)

        t = OneHotEncode(2)
        assert t.infer_target_shape((2, 5)) == (2, 5)

        t = OneHotEncode(1)
        assert t.infer_target_shape((2, 5)) == (2, 5)
Exemplo n.º 6
0
 def test_domain_and_target_type(self):
     """Check if attribute-like `domain_type` and `target_type` do
     what's expected.
     """
     t = OneHotEncode(3)
     assert t.domain_type == 'integer'
     assert t.target_type == 'real'
Exemplo n.º 7
0
def tdim2(dim2):
    """Create a second example of `TransformedDimension`."""
    transformers = [
        Enumerate(dim2.categories),
        OneHotEncode(len(dim2.categories))
    ]
    tdim2 = TransformedDimension(Compose(transformers, dim2.type), dim2)
    return tdim2
Exemplo n.º 8
0
    def test_reverse(self):
        """Check if it reverses `transform` properly, if possible."""
        t = Compose([Enumerate([2, "asfa", "ipsi"]), OneHotEncode(3)], "categorical")
        assert t.reverse((0.9, 0.8, 0.3)) == 2
        assert t.reverse((-0.3, 2.0, 0.0)) == "asfa"
        assert t.reverse((0.0, 0.0, 1.0)) == "ipsi"
        with pytest.raises(AssertionError):
            t.reverse((0.0, 0.0, 0.0, 1.0))
        assert numpy.all(
            t.reverse(
                numpy.array(
                    [
                        [(0.0, 0.0, 1.0), (0.0, 1.0, 0.0)],
                        [(1.0, 0.0, 0.0), (0.0, 0.0, 1.0)],
                    ]
                )
            )
            == numpy.array([["ipsi", "asfa"], [2, "ipsi"]], dtype=numpy.object)
        )

        t = Compose([Enumerate([2, "asfa"]), OneHotEncode(2)], "categorical")
        assert t.reverse(0.3) == 2
        assert t.reverse(2.0) == "asfa"
        assert numpy.all(
            t.reverse((0.0, 0.0, 0.0, 1.0))
            == numpy.array([2, 2, 2, "asfa"], dtype=numpy.object)
        )
        assert numpy.all(
            t.reverse(numpy.array([[0.55, 3.0], [-0.6, 1.0]]))
            == numpy.array([["asfa", "asfa"], [2, "asfa"]], dtype=numpy.object)
        )

        # for the crazy enough
        t = Compose([Enumerate([2]), OneHotEncode(1)], "categorical")
        assert t.reverse(0) == 2
        assert t.reverse(5.0) == 2
        assert t.reverse(0.2) == 2
        assert t.reverse(-0.2) == 2
        assert numpy.all(
            t.reverse([[0.5, 0], [1.0, 55]])
            == numpy.array([[2, 2], [2, 2]], dtype=numpy.object)
        )
Exemplo n.º 9
0
    def test_interval(self):
        """Test that the onehot interval has the proper dimensions"""
        t = OneHotEncode(3)
        low, high = t.interval()
        assert (low == numpy.zeros(3)).all()
        assert (high == numpy.ones(3)).all()

        t = OneHotEncode(2)
        low, high = t.interval()
        assert (low == numpy.zeros(1)).all()
        assert (high == numpy.ones(1)).all()
Exemplo n.º 10
0
    def test_domain_and_target_type(self):
        """Check if attribute-like `domain_type` and `target_type` do
        what's expected.
        """
        t = Compose([])
        assert t.domain_type is None
        assert t.target_type is None

        t = Compose([], 'real')
        assert t.domain_type == 'real'
        assert t.target_type == 'real'

        t = Compose([Quantize()], 'real')
        assert t.domain_type == 'real'
        assert t.target_type == 'integer'

        t = Compose([Enumerate([2, 'asfa', 'ipsi']), OneHotEncode(3)], 'categorical')
        assert t.domain_type == 'categorical'
        assert t.target_type == 'real'
Exemplo n.º 11
0
    def test_domain_and_target_type(self):
        """Check if attribute-like `domain_type` and `target_type` do
        what's expected.
        """
        t = Compose([])
        assert t.domain_type is None
        assert t.target_type is None

        t = Compose([], "real")
        assert t.domain_type == "real"
        assert t.target_type == "real"

        t = Compose([Quantize()], "real")
        assert t.domain_type == "real"
        assert t.target_type == "integer"

        t = Compose([Enumerate([2, "asfa", "ipsi"]), OneHotEncode(3)], "categorical")
        assert t.domain_type == "categorical"
        assert t.target_type == "real"
Exemplo n.º 12
0
 def test_no_reverse_one_hot_encode(self):
     """Do NOT support real to categorical."""
     with pytest.raises(AssertionError):
         Reverse(OneHotEncode([1, 2, 3]))
Exemplo n.º 13
0
 def test_repr_format(self):
     """Check representation of a transformed dimension."""
     t = Compose([Enumerate([2, "asfa", "ipsi"]),
                  OneHotEncode(3)], "categorical")
     assert t.repr_format("asfa") == "OneHotEncode(Enumerate(asfa))"
Exemplo n.º 14
0
 def test_repr_format(self):
     """Check representation of a transformed dimension."""
     t = OneHotEncode(3)
     assert t.repr_format('asfa') == 'OneHotEncode(asfa)'
Exemplo n.º 15
0
    def test_reverse(self):
        """Check if it reverses `transform` properly, if possible."""
        t = OneHotEncode(3)
        assert t.reverse((0.9, 0.8, 0.3)) == 0
        assert t.reverse((-0.3, 2., 0.)) == 1
        assert t.reverse((0., 0., 1.)) == 2
        with pytest.raises(AssertionError):
            t.reverse((0., 0., 0., 1.))
        assert(numpy.all(t.reverse(numpy.array([[[0., 0., 1.], [0., 1., 0.]],
                                                [[1., 0., 0.], [0., 0., 1.]]])) ==
               numpy.array([[2, 1], [0, 2]], dtype=int)))

        t = OneHotEncode(2)
        assert t.reverse(0.3) == 0
        assert t.reverse(2.) == 1
        assert numpy.all(t.reverse((0., 0., 0., 1.)) == numpy.array([0, 0, 0, 1],
                                                                    dtype=int))
        assert(numpy.all(t.reverse(numpy.array([[0.55, 3.], [-0.6, 1.]])) ==
               numpy.array([[1, 1], [0, 1]], dtype=int)))

        # for the crazy enough
        t = OneHotEncode(1)
        assert t.reverse(0) == 0
        assert t.reverse(5.0) == 0
        assert t.reverse(0.2) == 0
        assert t.reverse(-0.2) == 0
        assert numpy.all(t.reverse([[0.5, 0], [1.0, 55]]) == numpy.array([[0, 0], [0, 0]],
                                                                         dtype=int))
Exemplo n.º 16
0
    def test_transform(self):
        """Check if it transforms properly."""
        t = OneHotEncode(3)
        assert numpy.all(t.transform(0) == numpy.array((1., 0., 0.)))
        assert numpy.all(t.transform(1) == numpy.array((0., 1., 0.)))
        assert numpy.all(t.transform(2) == numpy.array((0., 0., 1.)))
        with pytest.raises(AssertionError):
            t.transform(4)
        with pytest.raises(AssertionError):
            t.transform(-1)
        with pytest.raises(AssertionError):
            t.transform(2.2)
        assert(numpy.all(t.transform([[2, 1], [0, 2]]) ==
               numpy.array([[(0., 0., 1.), (0., 1., 0.)], [(1., 0., 0.), (0., 0., 1.)]])))

        t = OneHotEncode(2)
        assert t.transform(0) == 0.
        assert t.transform(1) == 1.
        with pytest.raises(TypeError):
            t.transform('ipsi')
        assert(numpy.all(t.transform([[1, 1], [0, 1]]) ==
               numpy.array([[1., 1.], [0., 1.]])))

        # for the crazy enough
        t = OneHotEncode(1)
        assert t.transform(0) == 0.
        with pytest.raises(TypeError):
            t.transform('ipsi')
        assert numpy.all(t.transform([[0, 0], [0, 0]]) == [[0., 0.], [0., 0.]])
Exemplo n.º 17
0
 def test_deepcopy(self):
     """Verify that the transformation object can be copied"""
     t = Compose([Enumerate([2, 'asfa', 'ipsi']), OneHotEncode(3)], 'categorical')
     t.transform([2])
     copy.deepcopy(t)
Exemplo n.º 18
0
 def test_deepcopy(self):
     """Verify that the transformation object can be copied"""
     t = OneHotEncode(3)
     t.transform([2])
     copy.deepcopy(t)
Exemplo n.º 19
0
 def test_repr_format(self):
     """Check representation of a transformed dimension."""
     t = Compose([Enumerate([2, 'asfa', 'ipsi']), OneHotEncode(3)], 'categorical')
     assert t.repr_format('asfa') == 'OneHotEncode(Enumerate(asfa))'