4

I have an Nx2 input matrix called X. I also have the output values Y which is a vector Nx1. I create some data to test as follows:

Xtest=linspace(x_min,x_max,n);
Ytest=linspace(y_min,y_max,n);

So, matrix Z is of nx2 dimensions and is going to be used as my test points. I use the default tuning of the parameters found in the demo provided with the GPML lib which is as follows:

covfunc = {@covMaterniso, 3}; 
ell = 1/4; sf = 1; 
hyp.cov = log([ell; sf]);
likfunc = @likGauss; 
sn = 0.1;
hyp.lik = log(sn);

and then use the gp function:

[ymu ys2 fmu fs2] = gp(hyp, @infExact, [], covfunc, likfunc, x, y, z);

I expected ymu to be the predicted value for each testing value in z. When I plot this like this:

[L1,L2]=meshgrid(Xtest',Ytest');
[mu,~]=meshgrid(ymu,ymu);
surf(L1,L2,ymu);

I get a strange surface. i.e i get stripes of coloured area rather some Gaussian like structure which is expected. The data in X and Y are real life data. This is what I get from my code

What I would expect: What I would expect

7
  • can you upload a picture of the plot that you think is wrong? also, you don't have a mean function, so is your training data standardized to be approx standardized Gaussian? If you didn't, your hyperparameter fitting could be completely messed up. Commented Jan 23, 2014 at 23:01
  • how can i upload a picture here? I think it should work without the mean function since my data are good enough when observed with the eye. Commented Jan 23, 2014 at 23:26
  • edit your post, and there's a button for picture, click and upload. Commented Jan 23, 2014 at 23:28
  • if your Y has a large non zero mean, or its scale is large comparing to the initial scale hyperparameter you specified, then optimization of hyperparameter could run into numerical issues. report the learned hyperparameters and I can tell you if it's reasonable. Commented Jan 23, 2014 at 23:30
  • can you see the picture now? Commented Jan 23, 2014 at 23:33

1 Answer 1

3

You're using it wrong. Your z variable should be given by [L1(:),L2(:)]. Then what you should plot is:

surf(L1,L2,reshape(ymu,size(L1)));
Sign up to request clarification or add additional context in comments.

4 Comments

Error using reshape To RESHAPE the number of elements must not change. Error in spatialGP (line 63) surf(L1,L2,reshape(ymu,size(L1)));
size(L1)=size(L2)=500x500 and size(ymu)=500x1
do I have to do this ([L1(:),L2(:)]) for X as well?
If you wrote z the way I told you to, then ymu would be 25000x1. X and y can be anything, but X has to have size Nx2 and y has to be Nx1, where N is the number of data points.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.