Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用GPML(Matlab)进行二维高斯过程回归?_Matlab_Plot_Regression_Gaussian - Fatal编程技术网

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

如何使用GPML(Matlab)进行二维高斯过程回归?,matlab,plot,regression,gaussian,Matlab,Plot,Regression,Gaussian,我有一个名为X的Nx2输入矩阵。我还有输出值Y,它是一个向量Nx1。我创建了一些要测试的数据,如下所示: Xtest=linspace(x_min,x_max,n); Ytest=linspace(y_min,y_max,n); covfunc = {@covMaterniso, 3}; ell = 1/4; sf = 1; hyp.cov = log([ell; sf]); likfunc = @likGauss; sn = 0.1; hyp.lik = log(sn); 因此,矩阵

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

Xtest=linspace(x_min,x_max,n);
Ytest=linspace(y_min,y_max,n);
covfunc = {@covMaterniso, 3}; 
ell = 1/4; sf = 1; 
hyp.cov = log([ell; sf]);
likfunc = @likGauss; 
sn = 0.1;
hyp.lik = log(sn);
因此,矩阵Z是nx2维,将用作我的测试点。我使用GPML库提供的演示中的默认参数调优,如下所示:

Xtest=linspace(x_min,x_max,n);
Ytest=linspace(y_min,y_max,n);
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);
我得到一个奇怪的表面。i、 我得到了彩色区域的条纹,而不是预期的高斯结构。XY中的数据是真实的数据。

我所期望的是:
你用错了。z变量应该由[L1(:)、L2(:)]给出。那么你应该画的是:

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

你能上传一张你认为错误的情节图片吗?此外,您没有均值函数,所以您的训练数据是否标准化为近似标准化?如果您没有,您的超参数拟合可能会完全混乱。我如何在这里上传图片?我认为它不需要均值函数,因为我的数据在用眼睛观察时已经足够好了。编辑你的帖子,有一个图片按钮,点击并上传。如果你的Y有一个很大的非零均值,或者它的比例与你指定的初始比例超参数相比很大,然后,超参数的优化可能会遇到数值问题。报告学习到的超参数,我可以告诉你它是否合理。你现在能看到图片吗?错误使用重塑来重塑元素的数量不能改变。空间GP(第63行)surf(L1、L2、整形(ymu、大小(L1))中的错误;大小(L1)=大小(L2)=500x500,大小(ymu)=500x1我是否也必须为X这样做([L1(:),L2(:)])?如果你按照我告诉你的方式写z,那么ymu将是25000x1。X和y可以是任何东西,但是X的大小必须是Nx2,y的大小必须是Nx1,其中N是数据点的数量。