Advertisement
Guest User

GP regression

a guest
May 10th, 2013
34
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.39 KB | None | 0 0
  1. #!/usr/bin/env python
  2. from numpy import *
  3. from pylab import plot, show, legend
  4.  
  5. parameter_list=[[200,100,6,10,0.0,1, 1], [20,100,6,10,0.5,1, 2]]
  6.  
  7. def regression_gaussian_process_modular (n=100,n_test=100, \
  8.         x_range=6,x_range_test=10,noise_var=0.5,width=1, seed=1):
  9.        
  10.     from shogun.Features import RealFeatures, RegressionLabels
  11.     from shogun.Kernel import GaussianKernel
  12.     try:
  13.         from shogun.Regression import GaussianLikelihood, ZeroMean, \
  14.                 ExactInferenceMethod, GaussianProcessRegression
  15.     except ImportError:
  16.         print("Eigen3 needed for Gaussian Processes")
  17.         return
  18.        
  19.     # reproducable results
  20.     random.seed(seed)
  21.    
  22.     # easy regression data: one dimensional noisy sine wave
  23.     X=random.rand(1,n)*x_range
  24.    
  25.     X_test=array([[float(i)/n_test*x_range_test for i in range(n_test)]])
  26.     Y_test=sin(X_test)
  27.     Y=sin(X)+random.randn(n)*noise_var
  28.    
  29.     # shogun representation
  30.     labels=RegressionLabels(Y[0])
  31.     import pickle
  32.     print(pickle.dumps(labels))
  33.     print(repr(Y[0]))
  34.     feats_train=RealFeatures(X)
  35.     feats_test=RealFeatures(X_test)
  36.    
  37.     # GP specification
  38.     shogun_width=width*width*2
  39.     kernel=GaussianKernel(10, shogun_width)
  40.     zmean = ZeroMean()
  41.     lik = GaussianLikelihood()
  42.     lik.set_sigma(0.1)
  43.     inf = ExactInferenceMethod(kernel, feats_train, zmean, labels, lik)
  44.     gp = GaussianProcessRegression(inf, feats_train, labels)
  45.    
  46.     # some things we can do
  47.     alpha = inf.get_alpha()
  48.     diagonal = inf.get_diagonal_vector()
  49.     cholesky = inf.get_cholesky()
  50.    
  51.     # inference
  52.     gp.set_return_type(GaussianProcessRegression.GP_RETURN_MEANS)
  53.     mean = gp.apply_regression(feats_test)
  54.     gp.set_return_type(GaussianProcessRegression.GP_RETURN_COV)
  55.     covariance = gp.apply_regression(feats_test)
  56.     print(pickle.dumps(mean))
  57.     print(mean.get_labels())
  58.     print(covariance.get_labels())
  59.    
  60.     # plot results
  61.     plot(X[0],Y[0],'x') # training observations
  62.     plot(X_test[0],Y_test[0],'-') # ground truth of test
  63.     plot(X_test[0],mean.get_labels(), '-') # mean predictions of test
  64.     plot(X_test[0],mean.get_labels()-1.96*sqrt(covariance.get_labels()), 'm-') # mean predictions of test
  65.     plot(X_test[0],mean.get_labels()+1.96*sqrt(covariance.get_labels()), 'm-') # mean predictions of test
  66.     legend(["training", "ground truth", "mean predictions"])
  67.    
  68.     show()
  69.  
  70.     return gp, alpha, labels, diagonal, covariance, mean, cholesky
  71.  
  72. if __name__=='__main__':
  73.     print('Gaussian Process Regression')
  74.     regression_gaussian_process_modular(*parameter_list[0])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement