设为首页收藏本站

EPS数据狗论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2667|回复: 0

利用GPML-V4.1工具箱实现高斯过程回归(GPR)的多变量数据预测

[复制链接]

32

主题

233

金钱

368

积分

入门用户

发表于 2019-3-26 13:38:57 | 显示全部楼层 |阅读模式


在实现多变量数据预测过程中,发现利用MATLAB自带的高斯过程回归(Gaussian process regression,GPR)无法实现多输入多输出的数据预测,于是利用了gpml-matlab-v4.1-2017-10-19这个工具箱,并简单实现了多变量数据的预测值以及给出了每个预测值对应的方差。

注:涉及的训练数据和测试数据会在附件中给出。
  1. % X_train_s, Y_train_s: 训练数据,X_test_s, Y_test_s: 测试数据
  2. % 行:样本,列:变量
复制代码


首先是MATLAB自带的GPR工具箱使用:
  1. % 数据预测 by GPR
  2. gprMdl = fitrgp(X_train_s, Y_train_s(:,1), X_test_s);
  3. yfit_GPR(:,1) = predict(gprMdl,X_test_s);
复制代码

两行核心代码就可以实现单个变量的预测输出,但只能解决多输入单输出的数据预测问题。具体用法可以在MATLAB的命令行窗口输入 help  fitrgp

然后是gpml-matlab-v4.1-2017-10-19工具箱的多变量数据预测简单实现:
  1. %% GPR using gpml-matlab-v4.1
  2. % 初始化超参数结构
  3. meanfunc = [];                    % empty: don't use a mean function
  4. covfunc = @covSEiso;              % Squared Exponental covariance function
  5. likfunc = @likGauss;              % Gaussian likelihood
  6. hyp = struct('mean', [], 'cov', [0 0], 'lik', -1);
  7. % 优化超参数结构
  8. hyp2 = minimize(hyp, @gp, -20, @infGaussLik, meanfunc, covfunc, likfunc, ...
  9.      X_train_s, Y_train_s);
  10. % GPR建模(ymu为预测值的均值,ys为预测值的方差)
  11. [ymu ys] = gp(hyp2, @infGaussLik, meanfunc, covfunc, likfunc, ...
  12.     X_train_s, Y_train_s, X_test_s);

  13. %% 可视化结果
  14. xs = (1:size(X_test_s,1))';
  15. % 变量1
  16. % 95%的置信度边界(3σ准则)
  17. figure
  18. f1 = [ymu(:,1)+2*sqrt(ys(:,1)); flipdim(ymu(:,1)-2*sqrt(ys(:,1)),1)];
  19. fill([xs; flipdim(xs,1)], f1, [7 7 7]/8)
  20. hold on
  21. % 实际数据
  22. plot(Y_test_s(:,1 ),'r:o','MarkerSize',2)
  23. % 预测数据
  24. plot(ymu(:,1) ,'b:o','MarkerSize',2)
  25. xlabel('样本点')
  26. ylabel('幅值')
  27. legend('95%置信度边界','原始数据','预测数据')
  28. title('变量1的预测结果')
  29. 复制代码
复制代码


由于篇幅问题上述代码只展示了第一个变量的预测结果及方差,下图是变量1的预测结果图。
185442p4e1fwgsps0pscz2.png
最后附件给出利用GPML-V4.1工具箱实现高斯过程回归(GPR)的多变量数据预测代码,初次使用,如有错误的地方请指出,谢谢。

GPR based on GPML-V4.1.rar

1.4 MB, 下载次数: 0, 下载积分: 贡献 -1

售价: 1 金钱  [记录]  [购买]

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

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

客服中心
关闭
在线时间:
周一~周五
8:30-17:30
QQ群:
653541906
联系电话:
010-85786021-8017
在线咨询
客服中心

意见反馈|网站地图|手机版|小黑屋|EPS数据狗论坛 ( 京ICP备09019565号-3 )   

Powered by BFIT! X3.4

© 2008-2028 BFIT Inc.

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