Exemple #1
0
    def testApplyMapper(self):
        """Test creation of new dataset by applying a mapper"""
        mapper = MaskMapper(N.array([1, 0, 1]))
        dataset = Dataset(samples=N.arange(12).reshape((4, 3)), labels=1, chunks=1)
        seldataset = dataset.applyMapper(featuresmapper=mapper)
        self.failUnless((dataset.selectFeatures([0, 2]).samples == seldataset.samples).all())

        # Lets do simple test on maskmapper reverse since it seems to
        # do evil things. Those checks are done only in __debug__
        if __debug__:
            # should fail since in mask we have just 2 features now
            self.failUnlessRaises(ValueError, mapper.reverse, [10, 20, 30])
            self.failUnlessRaises(ValueError, mapper.forward, [10, 20])
    def testSimple(self):
        data = N.arange(24).reshape(8,3)
        labels = [0, 1] * 4
        chunks = N.repeat(N.array((0,1)),4)

        # correct results
        csamples = [[3, 4, 5], [6, 7, 8], [15, 16, 17], [18, 19, 20]]
        clabels = [0, 1, 0, 1]
        cchunks = [0, 0, 1, 1]

        ds = Dataset(samples=data, labels=labels, chunks=chunks)

        # default behavior
        m = SampleGroupMapper()

        # error if not trained
        self.failUnlessRaises(RuntimeError, m, data)

        # train mapper first
        m.train(ds)

        self.failUnless((m.forward(ds.samples) == csamples).all())
        self.failUnless((m.forward(ds.labels) == clabels).all())
        self.failUnless((m.forward(ds.chunks) == cchunks).all())


        # directly apply to dataset
        # using untrained mapper!
        mapped = ds.applyMapper(samplesmapper=SampleGroupMapper())

        self.failUnless(mapped.nsamples == 4)
        self.failUnless(mapped.nfeatures == 3)
        self.failUnless((mapped.samples == csamples).all())
        self.failUnless((mapped.labels == clabels).all())
        self.failUnless((mapped.chunks == cchunks).all())
        # make sure origids get regenerated
        self.failUnless((mapped.origids == range(4)).all())