Python Scikit学习高斯过程返回2个样本的常数方差
我正在使用scikit learn的高斯过程(GP)工具进行贝叶斯优化。我注意到一个奇怪的趋势,它一直影响着我的结果。当我输入以下代码以将GP装配到一个数据点时Python Scikit学习高斯过程返回2个样本的常数方差,python,scikit-learn,Python,Scikit Learn,我正在使用scikit learn的高斯过程(GP)工具进行贝叶斯优化。我注意到一个奇怪的趋势,它一直影响着我的结果。当我输入以下代码以将GP装配到一个数据点时 import numpy as np import sklearn.gaussian_process as gp #domain x = np.linspace(-3,3,10).reshape(-1,1) #create gaussian process kernel = gp.kernels.Matern() model = g
import numpy as np
import sklearn.gaussian_process as gp
#domain
x = np.linspace(-3,3,10).reshape(-1,1)
#create gaussian process
kernel = gp.kernels.Matern()
model = gp.GaussianProcessRegressor(kernel=kernel,
alpha=1e-5,
n_restarts_optimizer=10,
normalize_y=True)
#fit to first data point
model.fit(np.array([[0.72]]), np.array([[-0.665]]))
#precict mean, standard deviaion over domain
mu, std = model.predict(x, return_std=True)
print std
我得到了一个好看的标准偏差,在x=0.72的采样点附近减小:
[0.99992986 0.99949578 0.99661166 0.97932637 0.89018143 0.51921629
0.40500728 0.8588613 0.97270708 0.99544088]
但是,我随后为第二个数据点实现了相同的GP,如下所示:
#fit to first and second data point
model.fit(np.array([[0.72],[-2.99]]), np.array([[-0.665],[0.2168]]))
#precict mean, standard deviaion over domain
mu, std = model.predict(x, return_std=True)
print std
然后接收一个奇怪的向量,它在第一个点只低于1
[0.70285521.1.1.1.1.1.1.1。
1.1.1.]
这当然不可能是真的,因为我们对最初的观点仍有一些信心。当我加入第三个点时,标准偏差看起来又正常了,但是,第二个点中的这种奇怪现象导致了我的优化例程出现问题,我不明白为什么会发生这种情况