Example #1
0
def bounds(Xs, Ys, ns=100):
    #use a gp to infer mean and bounds on sets of x/y data that have diffent x
    #f,a = plt.subplots(2)
    #for i in xrange(len(Ys)):
    #    a[0].plot(Xs[i],Ys[i])

    X = sp.hstack(Xs)
    np = X.size
    Y = sp.hstack(Ys)
    X.resize([np, 1])
    Y.resize([np, 1])
    #a[1].plot(X,Y,'r.')
    np = X.size
    S = sp.zeros(np)
    D = [[sp.NaN]] * np
    ki = GPdc.MAT52CS
    mprior = sp.array([1., 2., 1.])
    sprior = sp.array([2., 2., 2.])
    #MAPH = GPdc.searchMAPhyp(X,Y,S,D,mprior,sprior, ki,mx=500)
    MAPH = sp.array([0.5, 5., 0.3])
    g = GPdc.GPcore(X, Y, S, D, GPdc.kernel(ki, 1, MAPH))
    sup = sp.linspace(min(X), max(X), ns)
    [m, V] = g.infer_diag_post(sup, [[sp.NaN]] * ns)
    std = sp.sqrt(V + MAPH[2])
    #plt.fill_between(sup.flatten(),(m-std).flatten(),(m+std).flatten(),facecolor='lightblue',edgecolor='lightblue',alpha=0.5)
    #a[1].plot(sup,m.flatten(),'b')
    return [sup, m, std]
Example #2
0
def gpmapasrecc(optstate, **para):
    if para['onlyafter'] > len(
            optstate.y) or not len(optstate.y) % para['everyn'] == 0:
        return [sp.NaN for i in para['lb']], {'didnotrun': True}
    logger.info('gpmapas reccomender')
    d = len(para['lb'])

    x = sp.hstack(
        [sp.vstack(optstate.x),
         sp.vstack([e['xa'] for e in optstate.ev])])

    y = sp.vstack(optstate.y)
    s = sp.vstack([e['s'] for e in optstate.ev])
    dx = [e['d'] for e in optstate.ev]
    MAP = GPdc.searchMAPhyp(x, y, s, dx, para['mprior'], para['sprior'],
                            para['kindex'])
    logger.info('MAPHYP {}'.format(MAP))
    G = GPdc.GPcore(x, y, s, dx, GPdc.kernel(para['kindex'], d + 1, MAP))

    def directwrap(xq, y):
        xq.resize([1, d])
        xe = sp.hstack([xq, sp.array([[0.]])])
        #print xe
        a = G.infer_m(xe, [[sp.NaN]])
        return (a[0, 0], 0)

    [xmin, ymin, ierror] = DIRECT.solve(directwrap,
                                        para['lb'],
                                        para['ub'],
                                        user_data=[],
                                        algmethod=1,
                                        volper=para['volper'],
                                        logfilename='/dev/null')
    logger.info('reccsearchresult: {}'.format([xmin, ymin, ierror]))
    return [i for i in xmin], {'MAPHYP': MAP, 'ymin': ymin}
Example #3
0
def genmat52ojf(d, lb, ub):
    from ESutils import gen_dataset
    nt = 14
    [X, Y, S, D] = gen_dataset(nt, d, lb, ub, GPdc.MAT52,
                               sp.array([1.5] + [0.55] * d))
    G = GPdc.GPcore(X, Y, S, D,
                    GPdc.kernel(GPdc.MAT52, d, sp.array([1.5] + [0.55] * d)))

    def ojf(x, **ev):
        dx = ev['d']
        s = ev['s']
        if ev['s'] > 0:
            noise = sp.random.normal(scale=sp.sqrt(ev['s']))
        else:
            noise = 0
        return G.infer_m(sp.array(x), [dx])[0, 0] + noise, 1., dict()

    def dirwrap(x, y):
        z = G.infer_m(x, [[sp.NaN]])[0, 0]
        #z = obj(x,0.,[sp.NaN])
        return (z, 0)

    [xmin, ymin, ierror] = DIRECT.solve(dirwrap,
                                        lb,
                                        ub,
                                        user_data=[],
                                        algmethod=1,
                                        maxf=89000,
                                        logfilename='/dev/null')
    logger.info('generated function xmin {} ymin {} {}'.format(
        xmin, ymin, ierror))

    return ojf, xmin, ymin
Example #4
0
    def run_search(self):

        MAP = GPdc.searchMAPhyp(self.X, self.Y, self.S, self.D, self.mprior,
                                self.sprior, self.kindex)
        try:
            del (self.G)
        except:
            pass
        self.G = GPdc.GPcore(self.X, self.Y, self.S, self.D,
                             GPdc.kernel(self.kindex, self.d, MAP))

        def directwrap(x, y):
            x.resize([1, self.d])

            a = self.G.infer_lEI(x, [[sp.NaN]])
            #print [x,a]
            #print G.infer_diag_post(x,[[sp.NaN]])
            return (-a[0, 0], 0)

        [xmin, ymin, ierror] = DIRECT.solve(directwrap,
                                            self.lb,
                                            self.ub,
                                            user_data=[],
                                            algmethod=1,
                                            volper=self.volper,
                                            logfilename='/dev/null')

        return [xmin, self.s, [sp.NaN]]
Example #5
0
def gensquexpdraw(d, lb, ub, ignores=-1):
    nt = 14
    [X, Y, S, D] = ESutils.gen_dataset(nt, d, lb, ub, GPdc.SQUEXP,
                                       sp.array([1.5] + [0.30] * d))
    G = GPdc.GPcore(X, Y, S, D,
                    GPdc.kernel(GPdc.SQUEXP, d, sp.array([1.5] + [0.30] * d)))

    def obj(x, s, d, override=False):
        #print [x,s,d]
        if ignores > 0:
            s = ignores
        if s == 0. or override:
            noise = 0.
        else:
            noise = sp.random.normal(scale=sp.sqrt(s))
        print "EVAL WITH NOISE: " + str(noise) + "FROM S= " + str(s)
        return [G.infer_m(x, [d])[0, 0] + noise, 1.]

    def dirwrap(x, y):
        z = G.infer_m(x, [[sp.NaN]])[0, 0]
        #z = obj(x,0.,[sp.NaN])
        return (z, 0)

    [xmin, ymin, ierror] = DIRECT.solve(dirwrap,
                                        lb,
                                        ub,
                                        user_data=[],
                                        algmethod=1,
                                        maxf=89000,
                                        logfilename='/dev/null')

    return [obj, xmin, ymin]
Example #6
0
def makeG(X,Y,S,D,kindex,mprior,sprior,nh):
    #draw hyps based on plk
    #print "RRRRRRRRRRRRRR"+str([X,Y,S,D,kindex,mprior,sprior,nh])
    H = ESutils.drawhyp_plk(X,Y,S,D,kindex,mprior,sprior,nh)
    
    G = GPdc.GPcore(X,Y,S,D,[GPdc.kernel(kindex,X.shape[1],i) for i in H])
    
    return G
Example #7
0
def EIMAPaq(optstate,
            persist,
            ev=None,
            ub=None,
            lb=None,
            nrandinit=None,
            mprior=None,
            sprior=None,
            kindex=None,
            directmaxiter=None):
    para = copy.deepcopy(para)
    if persist == None:
        persist = {'n': 0, 'd': len(ub)}
    n = persist['n']
    d = persist['d']
    if n < nrandinit:
        persist['n'] += 1
        return randomaq(optstate, persist, ev=ev, lb=lb, ub=ub)
    logger.info('EIMAPaq')
    #logger.debug(sp.vstack([e[0] for e in optstate.ev]))
    #raise
    x = sp.vstack(optstate.x)
    y = sp.vstack(optstate.y)
    s = sp.vstack([e['s'] for e in optstate.ev])
    dx = [e['d'] for e in optstate.ev]
    MAP = GPdc.searchMAPhyp(x, y, s, dx, mprior, sprior, kindex)
    logger.info('MAPHYP {}'.format(MAP))

    G = GPdc.GPcore(x, y, s, dx, GPdc.kernel(kindex, d, MAP))

    def directwrap(xq, y):
        xq.resize([1, d])
        a = G.infer_lEI(xq, [ev['d']])
        return (-a[0, 0], 0)

    [xmin, ymin, ierror] = DIRECT.solve(directwrap,
                                        lb,
                                        ub,
                                        user_data=[],
                                        algmethod=0,
                                        maxf=directmaxiter,
                                        logfilename='/dev/null')
    #logger.debug([xmin,ymin,ierror])
    persist['n'] += 1
    return [i for i in xmin], ev, persist, {
        'MAPHYP': MAP,
        'logEImin': ymin,
        'DIRECTmessage': ierror
    }
Example #8
0
def gensquexpIPdraw(d, lb, ub, sl, su, sfn, sls, cfn):
    #axis = 0 value = sl
    #d dimensional objective +1 for s
    nt = 25
    #print sp.hstack([sp.array([[sl]]),lb])
    #print sp.hstack([sp.array([[su]]),ub])
    [X, Y,
     S, D] = ESutils.gen_dataset(nt, d + 1,
                                 sp.hstack([sp.array([[sl]]), lb]).flatten(),
                                 sp.hstack([sp.array([[su]]), ub]).flatten(),
                                 GPdc.SQUEXP,
                                 sp.array([1.5] + [sls] + [0.30] * d))
    G = GPdc.GPcore(
        X, Y, S, D,
        GPdc.kernel(GPdc.SQUEXP, d + 1, sp.array([1.5] + [sls] + [0.30] * d)))

    def obj(x, s, d, override=False):
        x = x.flatten()
        if sfn(x) == 0. or override:
            noise = 0.
        else:
            noise = sp.random.normal(scale=sp.sqrt(sfn(x)))

        return [G.infer_m(x, [d])[0, 0] + noise, cfn(x)]

    def dirwrap(x, y):
        z = obj(sp.array([[sl] + [i for i in x]]), sl, [sp.NaN], override=True)
        return (z, 0)

    [xmin0, ymin0, ierror] = DIRECT.solve(dirwrap,
                                          lb,
                                          ub,
                                          user_data=[],
                                          algmethod=1,
                                          maxf=89000,
                                          logfilename='/dev/null')
    lb2 = xmin0 - sp.ones(d) * 1e-4
    ub2 = xmin0 + sp.ones(d) * 1e-4
    [xmin, ymin, ierror] = DIRECT.solve(dirwrap,
                                        lb2,
                                        ub2,
                                        user_data=[],
                                        algmethod=1,
                                        maxf=89000,
                                        logfilename='/dev/null')
    #print "RRRRR"+str([xmin0,xmin,ymin0,ymin,xmin0-xmin,ymin0-ymin])
    return [obj, xmin, ymin]
Example #9
0
 def __init__(self,X,Y,S,D,lb,ub,kindex,mprior,sprior,DH_SAMPLES=8,DM_SAMPLES=8, DM_SUPPORT=400,DM_SLICELCBPARA=1.,mode=ESutils.SUPPORT_SLICELCB,noS=False):
     
     
     
     print "PES init:"
     self.lb=lb
     self.ub=ub
     self.noS=noS
     if noS:
         S=sp.zeros(S.shape)
     self.G = makeG(X,Y,S,D,kindex,mprior,sprior,DH_SAMPLES)
     HS = sp.vstack([k.hyp for k in self.G.kf])
     print "\nhyp mean: "+str(sp.mean(HS,axis=0))
     print "hyp std:  "+str(sp.sqrt(sp.mean(HS,axis=0)))
     self.Z = drawmins(self.G,DM_SAMPLES,lb,ub,SUPPORT=DM_SUPPORT,SLICELCB_PARA=DM_SLICELCBPARA,mode=mode)
     print "mindraws: "+str(self.Z)
     self.Ga = [GPdc.GPcore(*addmins(self.G,X,Y,S,D,self.Z[i,:])+[self.G.kf]) for i in xrange(DM_SAMPLES)]
Example #10
0
 def __init__(self,X,Y,S,D,lb,ub,kindex,mprior,sprior,axis,value,DH_SAMPLES=8,DM_SAMPLES=8, DM_SUPPORT=400,DM_SLICELCBPARA=1.,AM_POLICY=NOMIN,mode=ESutils.SUPPORT_SLICELCB,noS=False):
     print "PES init:"
     self.lb=lb
     self.ub=ub
     self.noS=noS
     self.X=X
     if noS:
         S=sp.zeros(S.shape)
     print [X.shape,Y.shape,mprior,sprior]
     self.G = makeG(X,Y,S,D,kindex,mprior,sprior,DH_SAMPLES)
     HS = sp.vstack([k.hyp for k in self.G.kf])
     print "\nhyp mean: "+str(sp.mean(HS,axis=0))
     print "hyp std:  "+str(sp.sqrt(sp.mean(HS,axis=0)))
     self.Z = drawmins_inplane(self.G,DM_SAMPLES,lb,ub,axis=axis,value=value,SUPPORT=DM_SUPPORT,SLICELCB_PARA=DM_SLICELCBPARA,mode=mode)
     print "mindraws:\n"+str(self.Z)
     self.Ga = [GPdc.GPcore(*addmins_inplane(self.G,X,Y,S,D,self.Z[i,:],axis=axis,value=value,MINPOLICY=AM_POLICY)+[self.G.kf]) for i in xrange(DM_SAMPLES)]
     return
Example #11
0
 def train_costest(self):
     print self.X[:, 0]
     X = self.X[:, 0].copy().reshape([len(self.C), 1])
     C = sp.array(self.C)
     D = [[sp.NaN]] * len(self.C)
     S = sp.zeros([len(self.C), 1])
     lbc = sp.array([-3., -2., -6.])
     ubc = sp.array([3., 2., 1.])
     MLEC = GPdc.searchMLEhyp(X,
                              sp.log(C),
                              S,
                              D,
                              lbc,
                              ubc,
                              GPdc.SQUEXPCS,
                              mx=10000)
     print "MLEC " + str(MLEC)
     self.ce = GPdc.GPcore(X.copy(), sp.log(C), S, D,
                           GPdc.kernel(GPdc.SQUEXPCS, 1, sp.array(MLEC)))
     #self.ce = GPdc.GPcore(X,C,S,D,GPdc.kernel(GPdc.SQUEXPCS,1,sp.array([1.,0.3,1e-3])))
     #self.ce.printc()
     return
Example #12
0
def genbiasedmat52ojf(d, lb, ub, sls):
    #s normalised to 0 exact, 1
    from ESutils import gen_dataset
    nt = 20
    [X, Y, S, D] = gen_dataset(nt, d + 1, [0.] + lb, [1.] + ub, GPdc.MAT52,
                               sp.array([1.5] + [0.30] * d + [sls]))

    G = GPdc.GPcore(
        X, Y, S, D,
        GPdc.kernel(GPdc.MAT52, d + 1, sp.array([1.5] + [0.30] * d + [sls])))

    def ojf(x, **ev):
        #print "\nojfinput: {} : {}".format(x,ev)
        dx = ev['d']
        s = ev['s']
        if ev['s'] > 0:
            noise = sp.random.normal(scale=sp.sqrt(ev['s']))
        else:
            noise = 0
        xa = ev['xa']
        x = sp.array(x)
        xfull = sp.hstack([x, xa])
        return G.infer_m(xfull, [dx])[0, 0] + noise, 1., dict()

    def dirwrap(x, y):
        z = G.infer_m(sp.hstack(sp.array(x) + [0.]), [[sp.NaN]])[0, 0]
        return (z, 0)

    [xmin, ymin, ierror] = DIRECT.solve(dirwrap,
                                        lb,
                                        ub,
                                        user_data=[],
                                        algmethod=1,
                                        maxf=89000,
                                        logfilename='/dev/null')
    logger.info('generated function xmin {} ymin {}'.format(xmin, ymin))
    return ojf, xmin, ymin
Example #13
0


nt=34
X = ESutils.draw_support(2, sp.array([-1.,-1.]),sp.array([1.,1.]),nt,ESutils.SUPPORT_UNIFORM)
D = [[sp.NaN]]*(nt)
hyp = sp.array([1.5,0.25,0.25])
kf = GPdc.gen_sqexp_k_d(hyp)
Kxx = GPdc.buildKsym_d(kf,X,D)
Y = spl.cholesky(Kxx,lower=True)*sp.matrix(sps.norm.rvs(0,1.,nt)).T+sp.matrix(sps.norm.rvs(0,1e-3,nt)).T
S = sp.matrix([1e-6]*nt).T

lb = sp.array([-2.,-2.,-2.])
ub = sp.array([2.,2.,2.])
#MLEH =  GPdc.searchMLEhyp(X,Y,S,D,lb,ub,GPdc.SQUEXP,mx=10000)
G = GPdc.GPcore(X,Y,S,D,GPdc.kernel(GPdc.SQUEXP,2,sp.array([1.5,0.15,0.15])))
#np=180
#sup = sp.linspace(-1,1,np)
#Dp = [[sp.NaN]]*np
#Xp = sp.vstack([sp.array([i]) for i in sup])
#[m,v] = G.infer_diag(Xp,Dp)
#a0.plot(sup,m)
#sq = sp.sqrt(v)
#a0.fill_between(sup, sp.array(m-2.*sq).flatten(), sp.array(m+2.*sq).flatten(), facecolor='lightblue',edgecolor='lightblue')

Z = ESutils.draw_support(G, sp.array([-1.,-1.]),sp.array([1.,1.]),500,ESutils.SUPPORT_SLICEEI)
np=30
R = ESutils.draw_min(G,Z,500)
Z2 = ESutils.draw_support(G, sp.array([-1.,-1.]),sp.array([1.,1.]),500,ESutils.SUPPORT_LAPAPR,para=np)
R2 = ESutils.draw_min(G,Z2,500)
Example #14
0
from scipy import linalg as spl
from matplotlib import pyplot as plt
import GPdc
import OPTutils
import ESutils
import DIRECT

#base dimension
d = 2
kindex = GPdc.MAT52
nt = 34
lb = sp.array([0.] + [-1.] * d)
ub = sp.array([5.] + [1.] * d)
Htrue = sp.array([1.4, 4.] + [0.25] * d)
[X, Y, S, D] = ESutils.gen_dataset(nt, d + 1, lb, ub, kindex, Htrue, s=1e-8)
G = GPdc.GPcore(X, Y, S, D, GPdc.kernel(kindex, d + 1, Htrue))


def ojfaugnn(x):
    return G.infer_m(x, [[sp.NaN]])[0, 0]


def opt_ip(s):
    def dwrap(x, y):
        X = sp.hstack([[s], x])
        return (ojfaugnn(X), 0)

    [xm, ym, ierror] = DIRECT.solve(dwrap,
                                    lb[1:],
                                    ub[1:],
                                    user_data=[],
Example #15
0
#lb = sp.array([0.,0.,-4.,-0.5*float(nf),float(nf)])
#ub = sp.array([4.,3.,3.,0.,1.5*float(nf)])
#MLEH =  GPdc.searchMLEhyp(X,H,sp.zeros([np,1]),[[sp.NaN]]*(np),lb,ub,GPdc.SQUEXPPS,mx=10000)
#G = GPdc.GPcore(X.copy(),H,sp.zeros([np,1]),[[sp.NaN]]*(np),GPdc.kernel(GPdc.SQUEXPPS,1,sp.array(MLEH)))
lb = sp.array([0., 0., -4., -1., -3.])
ub = sp.array([4., 3., 3., 0.5, 3.])
MLEH = GPdc.searchMLEhyp(1. / float(nf) * X,
                         H,
                         sp.zeros([np, 1]), [[sp.NaN]] * (np),
                         lb,
                         ub,
                         GPdc.SQUEXPBS,
                         mx=10000)
G = GPdc.GPcore(1. / float(nf) * X.copy(), H, sp.zeros([np,
                                                        1]), [[sp.NaN]] * (np),
                GPdc.kernel(GPdc.SQUEXPBS, 1, sp.array(MLEH)))

[m, v] = G.infer_diag(1. / float(nf) * X, [[sp.NaN]] * (np))

S = sp.empty([np, 1])
for i in xrange(np):
    S[i, 0] = MLEH[2] * ((1. / float(nf) * X[i, 0])**(MLEH[3] * MLEH[4])) * (
        (1. - 1. / float(nf) * X[i, 0])**(MLEH[3] * (1. - MLEH[4])))

lbc = sp.array([-4., 0., -6.])
ubc = sp.array([2., 3., 0.])
MLEC = GPdc.searchMLEhyp(X,
                         sp.log(T),
                         sp.zeros([np, 1]), [[sp.NaN]] * (np),
                         lbc,
Example #16
0
D = [[sp.NaN], [sp.NaN], [0], [0, 0]]

a[0].plot([-0.8, -0.8], [0.3 - sp.sqrt(1e-1), 0.3 + sp.sqrt(1e-1)], 'r')
a[0].plot([-0.8], [0.3], 'ro')
a[0].plot([-0.25], [-0.2], 'ro')
a[1].plot([0.25], [2.5], 'ro')
a[2].plot([0.8], [50], 'ro')

k = GPdc.kernel(GPdc.SQUEXP, 1, sp.array([0.5, 0.2]))
K = sp.empty([4, 4])
for i in xrange(4):
    for j in xrange(i, 4):
        K[i, j] = K[j, i] = k(X[i, :], X[j, :], D[i], D[j])
    K[i, i] += 1e-6

g = GPdc.GPcore(X, Y, S, D, GPdc.kernel(GPdc.SQUEXP, 1, sp.array([0.5, 0.2])))
#g.printc()
C = g.get_cho()
print C

print spl.cho_solve((C, True), sp.eye(4)).dot(K)
for i, d in enumerate([[sp.NaN], [0], [0, 0]]):
    m, v = g.infer_diag(sup, [d] * ns)
    vl = (m - sp.sqrt(v)).flatten()
    vu = (m + sp.sqrt(v)).flatten()
    a[i].plot(sup, m.flatten())
    a[i].fill_between(sup,
                      vl,
                      vu,
                      facecolor='LightBlue',
                      edgecolor='LightBlue')
Example #17
0
f0 = plt.figure()
a0 = plt.subplot(111)
a0.plot(sp.array(X[:,0]).flatten(),Y,'g.')

lb = sp.array([-2.,-2.,-9,-2.,-2.])
ub = sp.array([2.,2.,-1,2.,2.])
MLEH =  GPdc.searchMLEhyp(X,Y,S,D,lb,ub,GPdc.SQUEXPPS,mx=20000)

mprior = sp.array([0.,-1.,-5.,-0.5,0.5])
sprior = sp.array([1.,1.,3.,1.,1.])

MAPH = GPdc.searchMAPhyp(X,Y,S,D,mprior,sprior,GPdc.SQUEXPPS,mx=20000)
print "MLEH: "+str(MLEH)
print "MAPH: "+str(MAPH)
G = GPdc.GPcore(X,Y,S,D,GPdc.kernel(GPdc.SQUEXPPS,1,sp.array(MAPH)))



print G.llk()

np=180
sup = sp.linspace(-1,1,np)
Dp = [[sp.NaN]]*np
Xp = sp.vstack([sp.array([i]) for i in sup])

[m,v] = G.infer_diag(Xp,Dp)
sq = sp.sqrt(v)
S = sp.empty([np,1])
for i in xrange(np):
    S[i,0] = -MAPH[2]*(Xp[i,0]-MAPH[3])*(Xp[i,0]-MAPH[4])
Example #18
0
def traincfn(x, c):
    n = x.size
    g = GPdc.GPcore(x, c, sp.array([1e-1] * n), [[sp.NaN]] * n,
                    GPdc.kernel(GPdc.MAT52, 1, [1., 0.2]))

    return cfnobj(g)
Example #19
0
from matplotlib import pyplot as plt

import GPdc
#test on a single point
nt = 3
X = ESutils.draw_support(1, sp.array([-1.]), sp.array([1.]), nt,
                         ESutils.SUPPORT_UNIFORM)
D = [[sp.NaN]] * (nt)
hyp = sp.array([1.5, 0.15])
kf = GPdc.gen_sqexp_k_d(hyp)
Kxx = GPdc.buildKsym_d(kf, X, D)
Y = spl.cholesky(Kxx, lower=True) * sp.matrix(sps.norm.rvs(
    0, 1., nt)).T + sp.matrix(sps.norm.rvs(0, 1e-3, nt)).T
S = sp.matrix([1e-6] * nt).T

G = GPdc.GPcore(X, Y, S, D, GPdc.kernel(GPdc.SQUEXP, 2, hyp))

ng = 40
A = sp.empty([ng, ng])
print 'startimage1'
sup = sp.logspace(-3, 2, ng)
for i, hi in enumerate(sup):
    for j, hj in enumerate(sup):
        A[i,
          j] = GPdc.GP_LKonly(X, Y, S, D,
                              GPdc.kernel(GPdc.SQUEXP, 2,
                                          sp.array([hi, hj]))).plk(
                                              sp.array([0., -1.]),
                                              sp.array([1., 1.]))
A = -sp.log10(-A + sp.amax(A) + 1.)
plt.figure()
Example #20
0
S *= 0.
f0 = plt.figure()
a0 = plt.subplot(111)
a0.plot(sp.array(X[:, 0]).flatten(), Y, 'g.')

lb = sp.array([-2., -2., -9])
ub = sp.array([2., 2., -1])
MLEH = GPdc.searchMLEhyp(X, Y, S, D, lb, ub, GPdc.SQUEXPCS, mx=10000)

mprior = sp.array([0., -1., -5.])
sprior = sp.array([1., 1., 3.])

MAPH = GPdc.searchMAPhyp(X, Y, S, D, mprior, sprior, GPdc.SQUEXPCS, mx=10000)
print "MLEH: " + str(MLEH)
print "MAPH: " + str(MAPH)
G = GPdc.GPcore(X, Y, S, D, GPdc.kernel(GPdc.SQUEXPCS, 1, sp.array(MLEH)))

print G.llk()

np = 180
sup = sp.linspace(-1, 1, np)
Dp = [[sp.NaN]] * np
Xp = sp.vstack([sp.array([i]) for i in sup])

[m, v] = G.infer_diag(Xp, Dp)
a0.plot(sup, m.flatten())
sq = sp.sqrt(v)

a0.fill_between(sup,
                sp.array(m - 1. * sq).flatten(),
                sp.array(m + 1. * sq).flatten(),
Example #21
0
    ax[i].plot(sup,sps.norm.pdf(sup,loc=m[i],scale=sp.sqrt(v[i,i])),'b')
    ax[i].plot(sup,sps.norm.pdf(sup,loc=mu[i],scale=sp.sqrt(vu[i,i])),'r')
    ax[i].twinx().plot(sup,sps.norm.cdf(Z[i]*(sup-Y[i])/max(F[i],1e-20))*sps.norm.pdf(sup,loc=m[i],scale=sp.sqrt(v[i,i])),'g')
#est on a gp

import ESutils
import GPdc
nt=5
X = sp.matrix(sp.linspace(-1,1,nt)).T
D = [[sp.NaN]]*(nt)
hyp = sp.array([1.5,0.15])
kf = GPdc.kernel(GPdc.SQUEXP,1,hyp)
Kxx = GPdc.buildKsym_d(kf,X,D)
Y = spl.cholesky(Kxx,lower=True)*sp.matrix(sps.norm.rvs(0,1.,nt)).T+sp.matrix(sps.norm.rvs(0,1e-3,nt)).T
S = sp.matrix([1e-2]*nt).T
g = GPdc.GPcore(X,Y,S,D,kf)
f,a = plt.subplots(2)

Xe = sp.array([-0.25,0.25])
De = [[sp.NaN]]*2
[m0,V0] = g.infer_full(Xe,De)
Ye = sp.array([2.,-2.])
Ze = sp.array([1.,-1.])
Fe = sp.array([(1e-6)**2,(1e-6)**2])

mt,vt = eprop.expectation_prop(m0,V0,Ye,Ze,Fe,20)
print D+De
g2 = GPdc.GPcore(sp.vstack([X,sp.array([Xe]).T]),sp.vstack([Y,sp.array([Ye]).T]),sp.vstack([S,sp.array([Fe]).T]),D+De,kf)

ESutils.plot_gp(g,a[0],sp.linspace(-1,1,100),[[sp.NaN]]*100)
ESutils.plot_gp(g2,a[1],sp.linspace(-1,1,100),[[sp.NaN]]*100)
Example #22
0
from scipy import linalg as spl
from scipy import stats as sps
from matplotlib import pyplot as plt
import GPdc
import PES

nt=12
d=1
lb = sp.array([-1.]*d)
ub = sp.array([1.]*d)
[X,Y,S,D] = ESutils.gen_dataset(nt,d,lb,ub,GPdc.SQUEXP,sp.array([1.5,0.15]))

G = PES.makeG(X,Y,S,D,GPdc.SQUEXP,sp.array([0.,-1.]),sp.array([1.,1.]),12)
Z=PES.drawmins(G,8,sp.array([-1.]),sp.array([1.]),SUPPORT=400,SLICELCB_PARA=1.)

Ga = GPdc.GPcore(*PES.addmins(G,X,Y,S,D,Z[0,:])+[G.kf])

np=100
sup = sp.linspace(-1,1,np)
Dp = [[sp.NaN]]*np
Xp = sp.vstack([sp.array([i]) for i in sup])

[m,V] = G.infer_diag_post(Xp,Dp)
[mp,Vp] = Ga.infer_diag_post(Xp,Dp)

f,a = plt.subplots(2)
s = sp.sqrt(V[0,:])
a[0].fill_between(sup,sp.array(m[0,:]-2.*s).flatten(),sp.array(m[0,:]+2.*s).flatten(),facecolor='lightblue',edgecolor='lightblue')
a[0].plot(sup,m[0,:].flatten())
a[0].plot(sp.array(X[:,0]).flatten(),Y,'g.')
Example #23
0
#X = sp.matrix([[0.,-9.],[0.2,5.],[0.4,12.],[0.6,3.],[0.8,9.]])

#Y = sp.matrix([0.2,0.1,0.,-0.15,-0.3]).T

D = [[sp.NaN]] * (X.shape[0])
S = sp.matrix([0.005**2] * X.shape[0]).T
f0 = plt.figure()
a0 = plt.subplot(111)
a0.plot(sp.array(X[:, 0]).flatten(), Y, 'g.')

lb = sp.array([-2., -1., -2.])
ub = sp.array([2., 1., 2.])
MLEH = GPdc.searchMLEhyp(X, Y, S, D, lb, ub, GPdc.LIN1, mx=10000)

print MLEH
G = GPdc.GPcore(X, Y, S, D, GPdc.kernel(GPdc.LIN1, 2, MLEH))
print G.llk()

np = 180
sup = sp.linspace(-1, 1, np)
Dp = [[sp.NaN]] * np
Xp = sp.vstack([sp.array([i, 1.]) for i in sup])

[m, v] = G.infer_diag(Xp, Dp)
a0.plot(sup, m.flatten())
sq = sp.sqrt(v)

a0.fill_between(sup,
                sp.array(m - 1. * sq).flatten(),
                sp.array(m + 1. * sq).flatten(),
                facecolor='lightblue',
Example #24
0
Kxx = GPdc.buildKsym_d(kf, X, D)

Y = spl.cholesky(Kxx, lower=True) * sp.matrix(sps.norm.rvs(
    0, 1., nt)).T + sp.matrix(sps.norm.rvs(0, 1e-3, nt)).T
S = sp.matrix([1e-6] * nt).T
f0 = plt.figure()
a0 = plt.subplot(111)
a0.plot(sp.array(X[:, 0]).flatten(), Y, 'g.')

lb = sp.array([-2., -2.])
ub = sp.array([2., 2.])
MLEH = GPdc.searchMLEhyp(X, Y, S, D, lb, ub, GPdc.SQUEXP, mx=10000)

print MLEH
G = GPdc.GPcore(X, Y, S, D, GPdc.kernel(GPdc.SQUEXP, 1, MLEH))
print G.llk()

np = 180
sup = sp.linspace(-1, 1, np)
Dp = [[sp.NaN]] * np
Xp = sp.vstack([sp.array([i]) for i in sup])

[m, v] = G.infer_diag(Xp, Dp)

a0.plot(sup, m.flatten())
sq = sp.sqrt(v)

a0.fill_between(sup,
                sp.array(m - 2. * sq).flatten(),
                sp.array(m + 2. * sq).flatten(),
Example #25
0
D = [[sp.NaN]] * (nt)

hyp0 = sp.array([1.5, 0.15])
hyp1 = sp.array([1.5, 0.05])
hyp2 = sp.array([1.5, 0.20])
kf = GPdc.kernel(GPdc.SQUEXP, 1, hyp0)

Kxx = GPdc.buildKsym_d(kf, X, D)

Y = spl.cholesky(Kxx, lower=True) * sp.matrix(sps.norm.rvs(
    0, 1., nt)).T + sp.matrix(sps.norm.rvs(0, 1e-3, nt)).T
S = sp.matrix([1e-6] * nt).T

G = GPdc.GPcore(X, Y, S, D, [
    GPdc.kernel(GPdc.SQUEXP, 1, hyp0),
    GPdc.kernel(GPdc.SQUEXP, 1, hyp1),
    GPdc.kernel(GPdc.SQUEXP, 1, hyp2),
    GPdc.kernel(GPdc.SQUEXP, 1, hyp0)
])
#G.printc()

np = 100
sup = sp.linspace(-1, 1, np)
Dp = [[sp.NaN]] * np
Xp = sp.vstack([sp.array([i]) for i in sup])

m = G.infer_m(Xp, Dp)
f, a = plt.subplots(m.shape[0])
for i in xrange(m.shape[0]):
    a[i].plot(sup, m[i, :].flatten())
    a[i].plot(sp.array(X[:, 0]).flatten(), Y, 'g.')
D = [[sp.NaN]]*X.shape[0]
S = sp.matrix([0.005**2]*X.shape[0]).T
f0 = plt.figure()
a0 = plt.subplot(111)
a0.plot(sp.array(X[:,0]).flatten(),Y,'g.')


lb = sp.array([-2.,-1.,-2.,-2.,-2.,-2.,-2.])
ub = sp.array([2.,1.,2.,2.,2.,2.,2.])
MLEH =  GPdc.searchMLEhyp(X,Y,S,D,lb,ub,GPdc.LINSQUEXPXSQUEXP,mx=10000)
print "xxx"
GPdc.kernel(GPdc.LINSQUEXPXSQUEXP,2,MLEH)
print "yyyy"
print MLEH
G = GPdc.GPcore(X,Y,S,D,GPdc.kernel(GPdc.LINSQUEXPXSQUEXP,2,MLEH))
print G.llk()

print "zzz"
np=180
sup = sp.linspace(-1,1,np)
Dp = [[sp.NaN]]*np
Xp = sp.vstack([sp.array([i,0.2]) for i in sup])

[m,v] = G.infer_diag(Xp,Dp)
print "wwww"
a0.plot(sup,m)
sq = sp.sqrt(v)

a0.fill_between(sup, sp.array(m-1.*sq).flatten(), sp.array(m+1.*sq).flatten(), facecolor='lightblue',edgecolor='lightblue')
Example #27
0
G = PES.makeG(X, Y, S, D, GPdc.SQUEXP, sp.array([0., -1., -1.]),
              sp.array([1., 1., 1.]), 6)
nz = 8
Z = PES.drawmins_inplane(G,
                         nz,
                         sp.array([-1.] * d),
                         sp.array([1.] * d),
                         axis=0,
                         value=0.,
                         SUPPORT=500,
                         SLICELCB_PARA=1.)

print Z
Ga = [
    GPdc.GPcore(*PES.addmins_inplane(
        G, X, Y, S, D, Z[i, :], axis=0, value=0., MINPOLICY=PES.NOMIN) +
                [G.kf]) for i in xrange(nz)
]

np = 220
sup = sp.linspace(-1, 1, np)
Dp = [[sp.NaN]] * np
Xp0 = sp.vstack([sp.array([i, Z[0, 1]]) for i in sup])
Xp1 = sp.vstack([sp.array([Z[0, 0], i]) for i in sup])

[mp0, Vp0] = Ga[0].infer_diag_post(Xp0, Dp)
[mp1, Vp1] = Ga[0].infer_diag_post(Xp1, Dp)

f, a = plt.subplots(d)
s = sp.sqrt(Vp0[0, :])
a[0].fill_between(sup,