⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gpr.m

📁 用matlab完成高斯回归过程
💻 M
字号:
function [out1, out2] = gpr(logtheta, covfunc, x, y, xstar);% gpr - Gaussian process regression, with a named covariance function. Two% modes are possible: training and prediction: if no test data are given, the% function returns minus the log likelihood and its partial derivatives with% respect to the hyperparameters; this mode is used to fit the hyperparameters.% If test data are given, then (marginal) Gaussian predictions are computed,% whose mean and variance are returned. Note that in cases where the covariance% function has noise contributions, the variance returned in S2 is for noisy% test targets; if you want the variance of the noise-free latent function, you% must substract the noise variance.%% usage: [nlml dnlml] = gpr(logtheta, covfunc, x, y)%    or: [mu S2]  = gpr(logtheta, covfunc, x, y, xstar)%% where:%%   logtheta is a (column) vector of log hyperparameters%   covfunc  is the covariance function%   x        is a n by D matrix of training inputs%   y        is a (column) vector (of size n) of targets%   xstar    is a nn by D matrix of test inputs%   nlml     is the returned value of the negative log marginal likelihood%   dnlml    is a (column) vector of partial derivatives of the negative%                 log marginal likelihood wrt each log hyperparameter%   mu       is a (column) vector (of size nn) of prediced means%   S2       is a (column) vector (of size nn) of predicted variances%% For more help on covariance functions, see "help covFunctions".%% (C) copyright 2006 by Carl Edward Rasmussen (2006-03-20).if ischar(covfunc), covfunc = cellstr(covfunc); end % convert to cell if needed[n, D] = size(x);if eval(feval(covfunc{:})) ~= size(logtheta, 1)  error('Error: Number of parameters do not agree with covariance function')endK = feval(covfunc{:}, logtheta, x);    % compute training set covariance matrixL = chol(K)';                        % cholesky factorization of the covariancealpha = solve_chol(L',y);if nargin == 4 % if no test cases, compute the negative log marginal likelihood  out1 = 0.5*y'*alpha + sum(log(diag(L))) + 0.5*n*log(2*pi);  if nargout == 2               % ... and if requested, its partial derivatives    out2 = zeros(size(logtheta));       % set the size of the derivative vector    W = L'\(L\eye(n))-alpha*alpha';                % precompute for convenience    for i = 1:length(out2)      out2(i) = sum(sum(W.*feval(covfunc{:}, logtheta, x, i)))/2;    end  endelse                    % ... otherwise compute (marginal) test predictions ...  [Kss, Kstar] = feval(covfunc{:}, logtheta, x, xstar);     %  test covariances  out1 = Kstar' * alpha;                                      % predicted means  if nargout == 2    v = L\Kstar;    out2 = Kss - sum(v.*v)';  end  end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -