我正在使用scikit-learn进行高斯过程回归(GPR)操作,以预测数据。我的训练数据如下:
x_train = np.array([[0,0],[2,2],[3,3]]) #2-D cartesian coordinate points
y_train = np.array([[200,250, 155],[321,345,210],[417,445,851]]) #observed output from three different datasources at respective input data points (x_train)
需要预测平均值和方差/标准偏差的测试点(2D)为:
xvalues = np.array([0,1,2,3])
yvalues = np.array([0,1,2,3])
x,y = np.meshgrid(xvalues,yvalues) #Total 16 locations (2-D)
positions = np.vstack([x.ravel(), y.ravel()])
x_test = (np.array(positions)).T
现在,在运行GPR(GausianProcessRegressor
)拟合之后(这里,在GaussianProcessRegressor
中使用ConstantKernel和RBF的乘积作为内核),可以通过以下代码行预测平均值和方差/标准偏差:
y_pred_test, sigma = gp.predict(x_test, return_std =True)
在打印预测均值 (y_pred_test
) 和方差 (sigma
) 时,控制台会输出以下内容:
在预测值 (均值) 中,内部数组中有三个对象的 '嵌套数组' 被打印出来。可以推断出,内部数组是每个数据源在每个二维测试点位置的预测均值。然而,打印出来的方差仅包含一个具有 16 个对象的数组(可能为 16 个测试位置点)。我知道方差提供了估计的不确定性的指示。因此,我期望每个数据源在每个测试点的预测方差。我的期望是错误的吗?我该如何获得每个数据源在每个测试点的预测方差?是由于代码错误吗?