如何将多个观测值拟合到单个高斯过程

问题描述 投票:0回答:1

我正在尝试将多个观察结果拟合到单个高斯过程。

我尝试像这样拟合两个观测值(Y)的数据:

import numpy as np
from sklearn.gaussian_process import GaussianProcessRegressor
from sklearn.gaussian_process.kernels import RBF, ConstantKernel as C


# Example data

# Input data X 
X = np.array([[1.0], [2.0], [3.0], [4.0], [5.0]])

# Output data Y 
Y = np.array([[1.5, 2.5], [2.5, 3.5], [3.5, 4.5], [4.5, 5.5], [5.5, 6.5]])
kernel = C(1.0, (1e-4, 1e1)) * RBF(1.0, (1e-4, 1e1))
gp = GaussianProcessRegressor(kernel=kernel, n_restarts_optimizer=10)

# Fitting the model
gp.fit(X, Y)

mean_prediction, cov_prediction = gp.predict(X, return_cov=True)

我得到两个mean_prediction数组和两个cov_prediction矩阵。但我想要一个与单个拟合 GP 对应的观测值具有相同维度的单个均值和协方差矩阵。我怎样才能实现它?

python machine-learning scikit-learn regression gaussian-process
1个回答
0
投票

如果你按照以下方式拟合它们,你应该只得到一个后验平均值,我认为理论上你也应该得到两种平均值,但它们是相同的,所以模型只会给你一次:

# Input data X 
X = np.array([[1.0], [2.0], [3.0], [4.0], [5.0],[1.0], [2.0], [3.0], [4.0], [5.0]])

# Output data Y 
Y = np.array([[1.5], [2.5], [2.5], [3.5], [3.5], [4.5], [4.5], [5.5], [5.5], [6.5]])
kernel = C(1.0, (1e-4, 1e1)) * RBF(1.0, (1e-4, 1e1))
gp = GaussianProcessRegressor(kernel=kernel, n_restarts_optimizer=10)

# Fitting the model
gp.fit(X, Y)

mean_prediction, cov_prediction = gp.predict([[1.0], [2.0], [3.0], [4.0], [5.0]], return_cov=True)
© www.soinside.com 2019 - 2024. All rights reserved.