def gen_dataset(nt, d, lb, ub, kindex, hyp, s=1e-9): X = draw_support(d, lb, ub, nt, SUPPORT_UNIFORM) D = [[sp.NaN]] * (nt) kf = GPdc.kernel(kindex, 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, sp.sqrt(s), nt)).T S = sp.matrix([s] * nt).T return [X, Y, S, D]
def gen_dataset(nt, d, lb, ub, kindex, hyp, s=1e-9): X = draw_support(d, lb, ub, nt, SUPPORT_UNIFORM) D = [[sp.NaN]] * (nt) kf = GPdc.kernel(kindex, d, hyp) Kxx = GPdc.buildKsym_d(kf, X, D) Y = ( spl.cholesky(Kxx, lower=True) * sp.matrix(sps.norm.rvs(0, 1.0, nt)).T + sp.matrix(sps.norm.rvs(0, sp.sqrt(s), nt)).T ) S = sp.matrix([s] * nt).T return [X, Y, S, D]
# 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 hyp = sp.array([1.5,0.25]) kf = GPdc.gen_sqexp_k_d(hyp) nt=18 x = sp.linspace(-1,1,nt) Dtmp = [[sp.NaN]]*nt Kxx = GPdc.buildKsym_d(kf,sp.matrix(x).T,Dtmp) Z = spl.cholesky(Kxx,lower=True)*sp.matrix(sps.norm.rvs(0,1.,nt)).T Z = sp.vstack([Z,spl.cholesky(Kxx,lower=True)*sp.matrix(sps.norm.rvs(0,1.,nt)).T]) Z = sp.vstack([Z,spl.cholesky(Kxx,lower=True)*sp.matrix(sps.norm.rvs(0,1.,nt)).T]) y = [-0.4*(i-0.2)+sps.norm.rvs(scale=0.005) for i in x] y+=[-0.6*(i+0.2)+sps.norm.rvs(scale=0.005) for i in x] y+=[0.1*(i+0.8)+sps.norm.rvs(scale=0.005) for i in x] X = sp.vstack([sp.array([i,0.]) for i in x]) X = sp.vstack([X,[sp.array([i,0.4]) for i in x]]) X = sp.vstack([X,[sp.array([i,-0.3]) for i in x]]) Y = sp.matrix(y).T+Z #X = sp.matrix([[0.,-9.],[0.2,5.],[0.4,12.],[0.6,3.],[0.8,9.]])
from scipy import linalg as spl from matplotlib import pyplot as plt import os libGP = ct.cdll.LoadLibrary( os.path.join(os.path.dirname(os.path.realpath(__file__)), '../../../dist/Release/GNU-Linux/libGPshared.so')) ctpd = ct.POINTER(ct.c_double) import GPdc ni = 50 kf = GPdc.kernel(GPdc.SQUEXP, 1, sp.array([1.3, 0.3])) X = sp.matrix(sp.linspace(-1, 1, ni)).T D = [[sp.NaN]] * ni Kxx = GPdc.buildKsym_d(kf, X, D) tmp = spl.cholesky(Kxx, lower=True) Ch = sp.vstack([tmp[i, :] for i in xrange(ni)]) #hack/force row major storage z = 5 b = sp.empty([ni, z]) libGP.drawcov(Ch.ctypes.data_as(ctpd), ct.c_int(ni), b.ctypes.data_as(ctpd), ct.c_int(z)) #print b for i in xrange(z): plt.plot(X[:, 0], b[:, i])
X = ESutils.draw_support(2, sp.array([-2,-1]),sp.array([0,3]),500,ESutils.SUPPORT_UNIFORM) for i in xrange(X.shape[0]): plt.plot(X[i,0],X[i,1],'r.') plt.axis([-5,5,-5,5]) #2d gp test 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')