2014-01-23 149 views
3

我有一個Nx2輸入矩陣叫做X。我也有輸出值Y這是一個向量Nx1。我創建了一些數據,以測試如下:如何使用GPML(Matlab)進行二維高斯過程進行迴歸?

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

因此,矩陣ž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); 

我得到一個奇怪的表面。即我得到彩色區域的條紋,而不是預期的高斯結構。 XY中的數據爲實際數據。 This is what I get from my code

我會期待什麼: What I would expect

+0

你能上傳一張你認爲是錯誤的情節圖嗎?另外,你沒有一個平均的功能,你的訓練數據是否標準化爲近似標準高斯?如果你沒有,你的超參數配件可能會完全搞砸。 –

+0

我如何在這裏上傳圖片?我認爲它應該沒有平均功能,因爲我的數據足夠好,用眼睛觀察。 – JustCurious

+0

編輯您的文章,並有一個圖片按鈕,點擊並上傳。 –

回答

3

你使用它錯了。你的z變量應該由[L1(:),L2(:)]給出。那麼你應該繪製的是:

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

使用重塑的錯誤 要重新設置元素的數量一定不能改變。 spaceGP中的錯誤(第63行) surf(L1,L2,reshape(ymu,size(L1))); – JustCurious

+0

尺寸(L1)=尺寸(L2)= 500x500和尺寸(ymu)= 500x1 – JustCurious

+0

我也必須爲X做這個([L1(:),L2(:)])嗎? – JustCurious