Ejemplo n.º 1
0
    def testem(self):
        # complex DataSet with HMM sequences and scalar data
        dat = self.gen.sampleSet(100)

        # sampling hmm data
        seq1 = self.h1.hmm.sample(40, 10)
        seq2 = self.h2.hmm.sample(60, 10)

        seq1.merge(seq2)

        data = mixtureHMM.SequenceDataSet()
        data.fromGHMM(dat, [seq1])
        data.internalInit(self.m)

        tA = [[0.5, 0.2, 0.3], [0.2, 0.3, 0.5], [0.1, 0.5, 0.4]]
        tB = [[0.2, 0.4, 0.1, 0.3], [0.5, 0.1, 0.2, 0.2],
              [0.4, 0.3, 0.15, 0.15]]
        tpi = [0.3, 0.3, 0.4]
        th1 = mixtureHMM.getHMM(
            mixtureHMM.ghmm.IntegerRange(0, 4),
            mixtureHMM.ghmm.DiscreteDistribution(
                mixtureHMM.ghmm.IntegerRange(0, 4)), tA, tB, tpi)

        tA2 = [[0.5, 0.4, 0.1], [0.3, 0.2, 0.5], [0.3, 0.2, 0.5]]
        tB2 = [[0.1, 0.1, 0.4, 0.4], [0.1, 0.1, 0.4, 0.4],
               [0.2, 0.1, 0.6, 0.1]]
        tpi2 = [0.3, 0.4, 0.3]
        th2 = mixtureHMM.getHMM(
            mixtureHMM.ghmm.IntegerRange(0, 4),
            mixtureHMM.ghmm.DiscreteDistribution(
                mixtureHMM.ghmm.IntegerRange(0, 4)), tA2, tB2, tpi2)

        tn1 = NormalDistribution(-1.5, 1.5)
        tn2 = NormalDistribution(9.0, 1.2)

        tmult1 = MultinomialDistribution(3,
                                         4, [0.1, 0.1, 0.55, 0.25],
                                         alphabet=self.DIAG)
        tmult2 = MultinomialDistribution(3,
                                         4, [0.4, 0.3, 0.1, 0.2],
                                         alphabet=self.DIAG)

        tc1 = ProductDistribution([tn1, tmult1, th1])
        tc2 = ProductDistribution([tn2, tmult2, th2])

        tmpi = [0.7, 0.3]
        tm = MixtureModel(2, tmpi, [tc1, tc2])

        tm.EM(data, 80, 0.1, silent=1)
Ejemplo n.º 2
0
    def testememptylist(self):
        # complex DataSet with HMM sequences only

        # sampling hmm data
        seq1 = self.h1.hmm.sample(40, 10)
        seq2 = self.h2.hmm.sample(60, 10)
        seq1.merge(seq2)

        data = mixtureHMM.SequenceDataSet()
        data.fromGHMM([], [seq1])

        tA = [[0.5, 0.2, 0.3], [0.2, 0.3, 0.5], [0.1, 0.5, 0.4]]
        tB = [[0.2, 0.4, 0.1, 0.3], [0.5, 0.1, 0.2, 0.2],
              [0.4, 0.3, 0.15, 0.15]]
        tpi = [0.3, 0.3, 0.4]
        th1 = mixtureHMM.getHMM(
            mixtureHMM.ghmm.IntegerRange(0, 4),
            mixtureHMM.ghmm.DiscreteDistribution(
                mixtureHMM.ghmm.IntegerRange(0, 4)), tA, tB, tpi)

        tA2 = [[0.5, 0.4, 0.1], [0.3, 0.2, 0.5], [0.3, 0.2, 0.5]]
        tB2 = [[0.1, 0.1, 0.4, 0.4], [0.1, 0.1, 0.4, 0.4],
               [0.2, 0.1, 0.6, 0.1]]
        tpi2 = [0.3, 0.4, 0.3]
        th2 = mixtureHMM.getHMM(
            mixtureHMM.ghmm.IntegerRange(0, 4),
            mixtureHMM.ghmm.DiscreteDistribution(
                mixtureHMM.ghmm.IntegerRange(0, 4)), tA2, tB2, tpi2)

        c1 = ProductDistribution([th1])
        c2 = ProductDistribution([th2])

        mpi = [0.4, 0.6]
        hm = MixtureModel(2, mpi, [c1, c2])

        data.internalInit(hm)

        hm.EM(data, 40, 0.1, silent=1)
Ejemplo n.º 3
0
    p2.append(random.random())
    p3.append(random.random())
    p4.append(random.random())

g1 = lambda x: x / sum(p1)
p1 = map(g1, p1)

g2 = lambda x: x / sum(p2)
p2 = map(g2, p2)

g3 = lambda x: x / sum(p3)
p3 = map(g3, p3)

g4 = lambda x: x / sum(p4)
p4 = map(g4, p4)

mult = MultinomialDistribution(6, 25, p1, SNP)
mult2 = MultinomialDistribution(7, 25, p2, SNP)
phi = NormalDistribution(11.0, 4.0)
phi2 = NormalDistribution(11.0, 6.0)
pd1 = ProductDistribution([mult, mult2, phi, phi2])

mult3 = MultinomialDistribution(6, 25, p3, SNP)
mult4 = MultinomialDistribution(7, 25, p4, SNP)
phi3 = NormalDistribution(8.0, 5.0)
phi4 = NormalDistribution(15.0, 5.0)
pd2 = ProductDistribution([mult, mult2, phi, phi2])

m = MixtureModel(2, [0.5, 0.5], [pd1, pd2])
m.EM(d, 15, 0.05)
Ejemplo n.º 4
0
    pdList.append(ProductDistribution(dList))

piList = [random(), random(), random()]
g = lambda x: x / sum(piList)
piList = map(g, piList)

mix = MixtureModel(3, piList, pdList)

dat = mix.sampleDataSet(1000)

pdList2 = []
for j in range(3):
    dList2 = []
    for i in range(10):
        par2 = [random(), random(), random(), random(), random(), random()]
        f = lambda x: x / sum(par2)
        par2 = map(f, par2)

        dList2.append(MultinomialDistribution(6, 6, par2))

    pdList2.append(ProductDistribution(dList2))

piList2 = [random(), random(), random()]
g = lambda x: x / sum(piList2)
piList2 = map(g, piList2)

mix2 = MixtureModel(3, piList2, pdList2)
with Timer("time"):
    mix2.EM(dat, 40, 0.1)
Ejemplo n.º 5
0
tB2 = [[0.1, 0.1, 0.4, 0.4], [0.1, 0.1, 0.4, 0.4], [0.2, 0.1, 0.6, 0.1]]
tpi2 = [0.3, 0.4, 0.3]
th2 = mixtureHMM.getHMM(
    mixtureHMM.ghmm.IntegerRange(0, 4),
    mixtureHMM.ghmm.DiscreteDistribution(mixtureHMM.ghmm.IntegerRange(0, 4)),
    tA2, tB2, tpi2)

tn1 = NormalDistribution(-1.5, 1.5)
tn2 = NormalDistribution(9.0, 1.2)

tmult1 = MultinomialDistribution(3, 4, [0.1, 0.1, 0.55, 0.25], alphabet=DIAG)
tmult2 = MultinomialDistribution(3, 4, [0.4, 0.3, 0.1, 0.2], alphabet=DIAG)

tc1 = ProductDistribution([tn1, tmult1, th1])
tc2 = ProductDistribution([tn2, tmult2, th2])

tmpi = [0.7, 0.3]
tm = MixtureModel(2, tmpi, [tc1, tc2])

tm.EM(data, 80, 0.1, silent=0)

##for i,s in enumerate(seq1):
##    print "\n",i,":",s
##    print "h1:",h1.hmm.loglikelihoods(s)
##    print "h2:",h2.hmm.loglikelihoods(s)
#
#
##print tm
##print tm.components[0].distList[2].hmm
##print tm.components[1].distList[2].hmm
Ejemplo n.º 6
0
    random(),
    random(),
    random(),
    random(),
    random()
]
g = lambda x: x / sum(piList2)
piList2 = map(g, piList2)
#print piList
#print sum(piList)

for i in range(10):
    par2 = [random(), random(), random()]
    f = lambda x: x / sum(par2)
    par2 = map(f, par2)
    #    print par

    dList2.append(MultinomialDistribution(6, 3, par2))

mix2 = MixtureModel(10, piList2, dList2)

mix2.EM(s, 50, 0.2)

print "----------- True Model--------- "
print mix
print "--------------------------------\n\n"

print "----------- Trained Model--------- "
print mix2
print "--------------------------------"
Ejemplo n.º 7
0
dat = DataSet()
dat.fromArray(seq3)

print "vorher ------\n", m4
pred = m4.cluster(dat,
                  nr_runs=5,
                  nr_init=9,
                  max_iter=30,
                  delta=0.1,
                  labels=None,
                  entropy_cutoff=None)

classes = m4.classify(dat)

m4.shortInitEM(dat, 5, 5, 5, 0.1)
m4.EM(seq3, 20, 0.1)
print "####Finish\n", m4

dat.printClustering(2, pred)

evaluate(pred, true)

#  ----------------------------- Example 4 -----------------------------
m5 = MixtureModel(1, [1.0], [NormalDistribution(3.0, 2.5)])

seq4 = m5.sample(1800)

#print "var = ", variance(seq4)

m6 = MixtureModel(1, [1.0], [NormalDistribution(-1.5, 2.5)])