def setUp(self):
        mus = np.array([[0, 0], [0, 10], [10, 0], [10, 10]])
        sigmas = np.array([np.eye(2), np.eye(2), np.eye(2), np.eye(2)])
        pis = np.array([1.0 / 3, 1.0 / 3, 1.0 / 3, 1.0 / 3])
        clusters = [DPCluster(i, j, k) for i, j, k in zip(pis, mus, sigmas)]

        self.mx = DPMixture(clusters[0:]).get_submodel([0, 1, 2, 3])

        self.my = DPMixture(clusters[1:])
Beispiel #2
0
    def testBiasSubsample(self):
        neg_mu = array([0, 1, 2])
        pos_mu = array([3, 4, 5])
        sig = array([[1, 0, 0], [0, 1, 0], [0, 0, 1]])
        neg_cluster = DPCluster(1.0, neg_mu, sig)
        neg_mix = DPMixture([neg_cluster])
        pos_cluster0 = DPCluster(0.5, neg_mu, sig)
        pos_cluster1 = DPCluster(0.5, pos_mu, sig)
        pos_mix = DPMixture([pos_cluster0, pos_cluster1])
        self.fcm.subsample(1, 'bias', pos=pos_mix, neg=neg_mix)

        self.assertEqual(1, self.fcm.shape[0], 'bias subsampling failed')
        self.assertTrue(self.fcm[0] in self.pnts,
                        'bias subsample geneterated non-existant point')
Beispiel #3
0
    def setUp(self):
        self.mux = np.array([0, 0, 0])
        self.sigx = 2 * np.eye(3)

        self.muy = np.array([0, .5, .5])
        self.sigy = np.eye(3)

        self.clustx = DPCluster(1, self.mux, self.sigx)
        self.clustersx = [self.clustx]

        self.clusty = DPCluster(1, self.muy, self.sigy)
        self.clustersy = [self.clusty]

        self.x = DPMixture(self.clustersx, niter=1, identified=True)
        self.y = DPMixture(self.clustersy, niter=1, identified=True)
Beispiel #4
0
    def test_last(self):
        cluster1 = DPCluster(0.5, self.mu1, self.sig)
        cluster3 = DPCluster(0.5, self.mu1 + 3, self.sig)
        cluster5 = DPCluster(0.5, self.mu1 + 5, self.sig)
        cluster7 = DPCluster(0.5, self.mu1 + 7, self.sig)
        cluster2 = DPCluster(0.5, self.mu2 + 2, self.sig)
        cluster4 = DPCluster(0.5, self.mu2 + 4, self.sig)
        cluster6 = DPCluster(0.5, self.mu2 + 6, self.sig)
        cluster8 = DPCluster(0.5, self.mu2 + 8, self.sig)

        mix = DPMixture([
            cluster1, cluster2, cluster3, cluster4, cluster5, cluster6,
            cluster7, cluster8
        ],
                        niter=4)

        new_r = mix.last()
        assert len(new_r.clusters) == 2
        assert all(new_r.clusters[0].mu == cluster7.mu)
        assert all(new_r.clusters[1].mu == cluster8.mu)

        new_r = mix.last(2)
        assert len(new_r.clusters) == 4
        assert all(new_r.clusters[0].mu == cluster5.mu)
        assert all(new_r.clusters[1].mu == cluster6.mu)
        assert all(new_r.clusters[2].mu == cluster7.mu)
        assert all(new_r.clusters[3].mu == cluster8.mu)
Beispiel #5
0
    def testLast(self):
        clst1 = DPCluster(0.5, self.mu1, self.sig)
        clst3 = DPCluster(0.5, self.mu1 + 3, self.sig)
        clst5 = DPCluster(0.5, self.mu1 + 5, self.sig)
        clst7 = DPCluster(0.5, self.mu1 + 7, self.sig)
        clst2 = DPCluster(0.5, self.mu2 + 2, self.sig)
        clst4 = DPCluster(0.5, self.mu2 + 4, self.sig)
        clst6 = DPCluster(0.5, self.mu2 + 6, self.sig)
        clst8 = DPCluster(0.5, self.mu2 + 8, self.sig)

        mix = DPMixture(
            [clst1, clst2, clst3, clst4, clst5, clst6, clst7, clst8], niter=4)

        new_r = mix.last()
        assert len(new_r.clusters) == 2
        assert all(new_r.clusters[0].mu == clst7.mu)
        assert all(new_r.clusters[1].mu == clst8.mu)

        new_r = mix.last(2)
        assert len(new_r.clusters) == 4
        assert all(new_r.clusters[0].mu == clst5.mu)
        assert all(new_r.clusters[1].mu == clst6.mu)
        assert all(new_r.clusters[2].mu == clst7.mu)
        assert all(new_r.clusters[3].mu == clst8.mu)

        try:
            new_r = mix.last(10)
        except ValueError:
            pass
Beispiel #6
0
    def setUp(self):
        self.mu1 = array([0, 0, 0])
        self.sig = eye(3)
        self.mu2 = array([5, 5, 5])

        self.clst1 = DPCluster(.5, self.mu1, self.sig)
        self.clst2 = DPCluster(.5, self.mu2, self.sig)
        self.mix = DPMixture([self.clst1, self.clst2])
Beispiel #7
0
    def testAnomalySubsample(self):
        mu = array([0, 1, 2])
        sig = array([[1, 0, 0], [0, 1, 0], [0, 0, 1]])
        cluster = DPCluster(1.0, mu, sig)
        mix = DPMixture([cluster])
        self.fcm.subsample(1, 'anomaly', mix)

        self.assertEqual(1, self.fcm.shape[0], 'anomaly subsampling failed')
        self.assertTrue(self.fcm[0] in self.pnts,
                        'anomaly subsample geneterated non-existant point')
Beispiel #8
0
    def setUp(self):
        self.mu1 = array([0, 0, 0])
        self.sig = eye(3)
        self.mu2 = array([5, 5, 5])

        self.cluster1 = DPCluster(.5 / 3, self.mu1, self.sig)
        self.cluster2 = DPCluster(.5 / 3, self.mu2, self.sig)
        self.clusters = [
            self.cluster1, self.cluster2, self.cluster1, self.cluster2,
            self.cluster1, self.cluster2
        ]
        self.mix = DPMixture(self.clusters, niter=3, identified=True)
Beispiel #9
0
    def testClassify(self):
        from fcm.statistics import DPCluster, DPMixture
        mu1 = array([0, 0, 0])
        sig = eye(3)
        mu2 = array([5, 5, 5])

        clst1 = DPCluster(.5, mu1, sig)
        clst2 = DPCluster(.5, mu2, sig)
        mix = DPMixture([clst1, clst2])

        cls = self.fcms.classify(mix)
        assert_array_equal(cls['test_fcm1'], array([0, 1]), 'Calssify failed')
        assert_array_equal(cls['test_fcm2'], array([0, 1]), 'Calssify failed')
Beispiel #10
0
    def setUp(self):
        self.mu1 = np.array([0, 0, 0])
        self.sig = 2 * np.eye(3)
        self.mu2 = np.array([5, 5, 5])

        self.clust1 = DPCluster(.5, self.mu1, self.sig)
        self.clust2 = DPCluster(.5, self.mu2, self.sig)
        self.clusters = [self.clust1, self.clust2]
        self.x = DPMixture(self.clusters, niter=1, identified=True)

        self.diag = DiagonalAlignData(self.x, size=100000)
        self.comp = CompAlignData(self.x, size=100000)
        self.full = FullAlignData(self.x, size=200000)
Beispiel #11
0
    def testAverage(self):
        clst1 = DPCluster(0.5, self.mu1, self.sig)
        clst3 = DPCluster(0.5, self.mu1, self.sig)
        clst5 = DPCluster(0.5, self.mu1, self.sig)
        clst7 = DPCluster(0.5, self.mu1, self.sig)
        clst2 = DPCluster(0.5, self.mu2, self.sig)
        clst4 = DPCluster(0.5, self.mu2, self.sig)
        clst6 = DPCluster(0.5, self.mu2, self.sig)
        clst8 = DPCluster(0.5, self.mu2, self.sig)

        mix = DPMixture(
            [clst1, clst2, clst3, clst4, clst5, clst6, clst7, clst8], niter=4)
        avg = mix.average()

        assert len(avg.clusters) == 2
        assert all(avg.mus[0] == self.mu1)
        assert all(avg.mus[1] == self.mu2)
        assert all(avg.sigmas[0] == self.sig)
        assert all(avg.sigmas[1] == self.sig)
        assert avg.pis[0] == 0.5, 'pis should be 0.5 but is %f' % avg.pis()[0]
        assert avg.pis[1] == 0.5, 'pis should be 0.5 but is %f' % avg.pis()[0]
Beispiel #12
0
    def test_average(self):
        cluster1 = DPCluster(0.5, self.mu1, self.sig)
        cluster3 = DPCluster(0.5, self.mu1, self.sig)
        cluster5 = DPCluster(0.5, self.mu1, self.sig)
        cluster7 = DPCluster(0.5, self.mu1, self.sig)
        cluster2 = DPCluster(0.5, self.mu2, self.sig)
        cluster4 = DPCluster(0.5, self.mu2, self.sig)
        cluster6 = DPCluster(0.5, self.mu2, self.sig)
        cluster8 = DPCluster(0.5, self.mu2, self.sig)

        mix = DPMixture([
            cluster1, cluster2, cluster3, cluster4, cluster5, cluster6,
            cluster7, cluster8
        ],
                        niter=4)
        avg = mix.average()

        assert len(avg.clusters) == 2
        assert all(avg.mus[0] == self.mu1)
        assert all(avg.mus[1] == self.mu2)
        assert all(avg.sigmas[0] == self.sig)
        assert all(avg.sigmas[1] == self.sig)
        assert avg.pis[0] == 0.5, 'pis should be 0.5 but is %f' % avg.pis()[0]
        assert avg.pis[1] == 0.5, 'pis should be 0.5 but is %f' % avg.pis()[0]