查看: 59|回复: 2|关注: 0

[未答复] 高斯过程的SM kernel

[复制链接]

新手

5 麦片

财富积分


050


1

主题

3

帖子

0

最佳答案
发表于 6 天前 | 显示全部楼层 |阅读模式
请教各位老师一个问题,我最近在学习机器学习中的Gaussian Process,其中有一个spectral mixture kernel可以由于模式发现。但是该作者在他的网站贴出的源代码运行会出错。
QQ截图20191108100239.png

新手

5 麦片

财富积分


050


1

主题

3

帖子

0

最佳答案
 楼主| 发表于 6 天前 | 显示全部楼层
补充一下代码
  1. % Test GPML covSM on airline dataset
  2. % Andrew Gordon Wilson, 11 Oct 2013

  3. clear all

  4. load CO2data

  5. x = xtrain;
  6. y = ytrain;

  7. z = xtest;

  8. s = 42; randn('seed',s)

  9. D = 1;  % Input dimensionality
  10. Q = 4;  % Number of covSM components

  11. numinit = 10;   

  12. nlml = Inf;  

  13. % try numinit random initialisations
  14. for j=1:numinit

  15. smhyp_try = initSMhypers(Q,x,y);    % initialise SM hypers

  16. % Use spectral mixture to do regression

  17. likfunc = @likGauss; sn = 0.1;
  18. covfunc = {@covSM,Q}; hypspec.cov = smhyp_try; hypspec.lik = log(sn);

  19. smhyp_train = minimize(hypspec, @gp, -100, @infExact, [], covfunc, likfunc, x, y);
  20. nlml_new = gp(smhyp_train, @infExact, [], covfunc, likfunc, x, y);

  21. if (nlml_new < nlml)
  22.     smhyp_init = smhyp_try;
  23.     nlml = nlml_new;
  24. end

  25. end

  26. likfunc = @likGauss; sn = 0.1;
  27. covfunc = {@covSM,Q}; hypspec.cov = smhyp_try; hypspec.lik = log(sn);

  28. smhyp_train = minimize(hypspec, @gp, -1000, @infExact, [], covfunc, likfunc, x, y);
  29. nlml = gp(smhyp_train, @infExact, [], covfunc, likfunc, x, y);

  30. % Final nlml should be about 65

  31. [mSM, s2] = gp(smhyp_train, @infGaussLik, [], covfunc, likfunc, x, y, z);

  32. figure(1); clf;
  33. hold on;

  34. f = [mSM + 2*sqrt(s2); flipdim(mSM - 2*sqrt(s2),1)];
  35. fill([z; flipdim(z,1)], f, [7 7 7]/8, 'EdgeColor', [7 7 7]/8);

  36. plot(xtrain,ytrain,'b','LineWidth',2);

  37. plot(xtest,ytest,'g','LineWidth',2);


  38. likfunc = @likGauss;
  39. covfunc = @covSEiso;
  40. hypSE.cov = log([40 std(y)]); hypSE.lik = log(sn);
  41. hypSEtrain = minimize(hypSE, @gp, -100, @infExact, [], covfunc, likfunc, x,y);
  42. [mSE, s2SE] = gp(hypSEtrain, @infExact, [], covfunc, likfunc, x,y,z);

  43. figure(1); plot(xtest,mSE,'r','LineWidth',2);

  44. plot(xtest,mSM,'k','LineWidth',2);

  45. xlabel('Months');
  46. ylabel('CO_2 (ppm)');
复制代码

新手

5 麦片

财富积分


050


1

主题

3

帖子

0

最佳答案
 楼主| 发表于 6 天前 | 显示全部楼层
啊,里面的数据没办法贴出来,我也没权限发链接。我作者的网址贴在这里
直接查询:Andrew Gordon Wilson即可。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /3 下一条

快速回复 返回顶部 返回列表