我有一个名为 X 的 Nx2 输入矩阵。我还有输出值 Y,它是一个向量 Nx1。我创建了一些数据来测试如下:
Xtest=linspace(x_min,x_max,n);
Ytest=linspace(y_min,y_max,n);
因此,矩阵 Z 的维度为 nx2,将用作我的测试点。我使用 GPML 库提供的演示中的默认参数调整,如下所示:
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 中的数据是现实生活中的数据。
我期望的是:
最佳答案
你用错了。您的 z 变量应由 [L1(:),L2(:)] 给出。那么你应该绘制的是:
surf(L1,L2,reshape(ymu,size(L1)));
关于matlab - 如何使用 GPML (Matlab) 制作二维高斯过程进行回归?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21320964/