我正在使用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)
需要预测均值和方差/标准差的测试点 (2-D) 是:
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
) 拟合后(这里,ConstantKernel 和 RBF 的乘积用作 中的 Kernel GaussianProcessRegressor
),可以通过以下代码行预测均值和方差/标准差:
y_pred_test, sigma = gp.predict(x_test, return_std =True)
在打印预测均值 ( y_pred_test
) 和方差 ( sigma
) 时,我会在控制台中打印以下输出:
在预测值(平均值)中,打印内部数组内具有三个对象的“嵌套数组”。可以假设内部数组是每个数据源在每个二维测试点位置的预测平均值。但是,打印的方差仅包含一个包含 16 个对象的数组(可能是 16 个测试位置点)。我知道方差提供了估计不确定性的指示。因此,我期待每个测试点的每个数据源的预测方差。我的期望错了吗?如何在每个测试点获得每个数据源的预测方差?是不是因为代码错误?