高斯过程回归matlab代码
时间: 2023-09-03 22:06:52 浏览: 49
以下是使用MATLAB实现高斯过程回归的示例代码:
```matlab
% 生成数据
X = linspace(-5, 5, 20)';
y = sin(X) + 0.1*randn(size(X));
% 定义高斯核函数
sigma_f = 1;
sigma_n = 0.1;
l = 1;
kernel = @(x, y) sigma_f^2*exp(-norm(x - y)^2/(2*l^2));
% 构建协方差矩阵
n = length(X);
K = zeros(n);
for i = 1:n
for j = 1:n
K(i,j) = kernel(X(i), X(j));
if i == j
K(i,j) = K(i,j) + sigma_n^2;
end
end
end
% 预测新数据
X_new = linspace(-6, 6, 100)';
n_new = length(X_new);
mu = zeros(n_new, 1);
Sigma = zeros(n_new, n_new);
for i = 1:n_new
k = zeros(n, 1);
for j = 1:n
k(j) = kernel(X(j), X_new(i));
end
mu(i) = k' * (K\y);
Sigma(i,i) = kernel(X_new(i), X_new(i)) - k' * (K\k);
end
% 绘制结果
figure;
hold on;
plot(X, y, 'ro');
plot(X_new, mu, 'b-', 'linewidth', 2);
plot(X_new, mu + 2*sqrt(diag(Sigma)), 'g--');
plot(X_new, mu - 2*sqrt(diag(Sigma)), 'g--');
legend('训练数据', '预测均值', '置信区间');
```
在上述代码中,我们首先生成了一些训练数据,然后定义了高斯核函数,并使用该函数构建了协方差矩阵。接着,我们利用协方差矩阵进行预测,并绘制了预测结果及其置信区间。