matlab - 如何使用 GPML (Matlab) 制作二维高斯过程进行回归?

标签 matlab plot regression gaussian

我有一个名为 XNx2 输入矩阵。我还有输出值 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);

我得到了一个奇怪的表面。也就是说,我得到的是彩色区域的条纹,而不是预期的一些类似高斯的结构。 XY 中的数据是现实生活中的数据。 This is what I get from my code

我期望的是: What I would expect

最佳答案

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

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

关于matlab - 如何使用 GPML (Matlab) 制作二维高斯过程进行回归?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21320964/

相关文章:

javascript - 有没有办法通过 cypress 从目标网站访问全局变量?

image - Matlab - 如何测量二值图像中黑色的色散?

matlab - 检查 MATLAB 是否在多线程模式下运行

file - MATLAB int32 数组和写入文件

python - Astropy matplotlib 和绘制银河坐标

r - 使用 for 循环执行多个回归

javascript - Plotly JS 折线图有非常奇怪的线条

matlab - 使用 tic/toc 函数而不是计时器

matlab - 如何在 Matlab 中用数据坐标绘制箭头?

matlab - 从 MATLAB 绘图中删除点和线