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.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}
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}
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}
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]]
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 }
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_LCB(x,[[sp.NaN]],1.)[0,0] return (a,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]]
GPdc.SQUEXP, sp.array([0.9, 0.25]), s=1e-8) 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)
# To change this license header, choose License Headers in Project Properties. # To change this template file, choose Tools | Templates # and open the template in the editor. from scipy import stats as sps from scipy import linalg as spl import scipy as sp from matplotlib import pyplot as plt import GPdc ni = 100 kf = GPdc.kernel(GPdc.SQUEXP,2,sp.array([1.3,0.3,0.2])) X = sp.random.uniform(-1,1,size=[ni,2]) D = [[sp.NaN]]*ni Kxx = GPdc.buildKsym_d(kf,X,D) s = 1e-2 Y = spl.cholesky(Kxx,lower=True)*sp.matrix(sps.norm.rvs(0,1.,ni)).T+sp.matrix(sps.norm.rvs(0,s,ni)).T S = sp.ones(ni)*s print Y MLEHYP = GPdc.searchMLEhyp(X,Y,S,D,sp.array([2.,2.,2.]),sp.array([-2.,-2.,-2.]), GPdc.SQUEXP) print MLEHYP MAPHYP = GPdc.searchMAPhyp(X,Y,S,D,sp.array([0.,0.,0.]),sp.array([1.,1.,1.]), GPdc.SQUEXP) print MAPHYP
x = X[i,0] s = -(1e-2)*(x-1.)*(x+1.1) Y[i,0]+= sps.norm.rvs(0,sp.sqrt(s)) 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)
# To change this license header, choose License Headers in Project Properties. # To change this template file, choose Tools | Templates # and open the template in the editor. from scipy import stats as sps from scipy import linalg as spl import scipy as sp from matplotlib import pyplot as plt import GPdc ni = 100 kf = GPdc.kernel(GPdc.SQUEXP, 2, sp.array([1.3, 0.3, 0.2])) X = sp.random.uniform(-1, 1, size=[ni, 2]) D = [[sp.NaN]] * ni Kxx = GPdc.buildKsym_d(kf, X, D) s = 1e-2 Y = spl.cholesky(Kxx, lower=True) * sp.matrix(sps.norm.rvs( 0, 1., ni)).T + sp.matrix(sps.norm.rvs(0, s, ni)).T S = sp.ones(ni) * s print Y MLEHYP = GPdc.searchMLEhyp(X, Y, S, D, sp.array([2., 2., 2.]), sp.array([-2., -2., -2.]), GPdc.SQUEXP) print MLEHYP MAPHYP = GPdc.searchMAPhyp(X, Y, S, D, sp.array([0., 0., 0.]), sp.array([1., 1., 1.]), GPdc.SQUEXP) print MAPHYP