Advertisement
Guest User

Untitled

a guest
Sep 25th, 2016
221
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.76 KB | None | 0 0
  1. 'Desired error not necessarily achieved due to precision loss.'
  2.  
  3. ### Import Stuff
  4. from __future__ import division
  5. import numpy as np
  6. import matplotlib.pyplot as plt
  7. import scipy.optimize as op
  8.  
  9. def calc_K(x,l,k=1e-3):
  10. """ calculate covariance matrix
  11. ##################################
  12. x: inputs
  13.  
  14. l: GP length scale
  15.  
  16. k: noise and addition term fixed to small value
  17. to ensure smooth inferred trajectories
  18. """
  19. a1,a2 = np.meshgrid(x,x)
  20. sqDist = (a1-a2)**2
  21. cov = (1-k)*np.exp(-.5*sqDist*l) + np.eye(len(x))*k
  22. return cov,sqDist
  23.  
  24. ###generate fake data
  25. t = np.linspace(0,10,num=67)
  26.  
  27. length_scale = 1
  28.  
  29. K,_ = calc_K(x=t,l=length_scale)
  30. mvn = multivariate_normal(mean=[0]*len(t),cov=K)
  31. y = mvn.rvs() #generate the function
  32. #y += + np.random.normal(0,scale=.2,size=len(t)) #add some noise
  33. plt.plot(y,'-o')
  34.  
  35. #functions for LL and gradient
  36. def logPost(tav_0,x,y):
  37. tav = np.exp(tav_0)
  38.  
  39. K,sqDist = calc_K(x,l=tav)
  40.  
  41. s,logdet = np.linalg.slogdet(K)
  42. t1 = s*logdet
  43. Kinv = np.linalg.inv(K)
  44. t2 = y.dot(np.dot(Kinv,y))
  45.  
  46. t3 = len(y)*np.log(2*np.pi)
  47. ll = -.5*(t1 + t2 + 0*t3)
  48. return -ll
  49.  
  50. def logPost_grad(tav,x,y):
  51. tav = np.exp(tav)
  52. #print tav
  53. #Km=get_covariance_matrix(t,k=k,l=tav,add_offset=0)
  54. K,sqDist = calc_K(x,l=tav)
  55.  
  56. Kinv = np.linalg.inv(K)
  57. dK = sqDist*K
  58. t1 = np.trace(np.dot(Kinv,dK))
  59.  
  60. t2 = np.dot(np.dot(y,Kinv),
  61. np.dot(dK,Kinv).dot(y))
  62.  
  63. dl = -.5*(t1 + t2)
  64.  
  65. return dl
  66. ### Inference pretending we have perfectly inferred y
  67. initp = 5
  68.  
  69. r = op.minimize(fun = logPost,
  70. x0 = initp,
  71. args = (t,y),
  72. jac=0,
  73. method='CG',
  74. options = {'disp': False,'gtol':1e-4,})
  75. print r
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement