如何使用GPML(Matlab)进行回归的二维高斯过程?

时间:2014-01-23 22:49:29

标签: matlab plot regression gaussian

我有一个名为 X Nx2 输入矩阵。我还有输出值 Y ,这是一个向量 Nx1 。我创建了一些数据进行测试,如下所示:

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

因此,矩阵 Z 具有 nx2 维度,并将用作我的测试点。我使用GPML lib提供的演示中的参数的默认调整,如下所示:

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

然后使用gp函数:

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

我希望ymu是z中每个测试值的预测值。当我这样绘制时:

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

我得到一个奇怪的表面。即我得到彩色区域的条纹,而不是一些预期的高斯式结构。 X Y 中的数据是实际数据。 This is what I get from my code

我期待的是: What I would expect

1 个答案:

答案 0 :(得分:3)

你错了。你的z变量应该由[L1(:),L2(:)]给出。那么你应该绘制的是:

surf(L1,L2,reshape(ymu,size(L1)));