Python 均值定心后方差为常数的高斯过程

Python 均值定心后方差为常数的高斯过程,python,gaussian,Python,Gaussian,我对高斯过程还不熟悉,所以请给一个相对初学者一个目标答案。我试图对相关噪声进行采样,其中每个样本的平均值为0(即,以平均值为中心),因此我一直在运行以下代码。然而,虽然在平均居中每个样本之前,样本之间的方差对于每个维度都是相同的,但平均居中会导致向量末端的方差越来越大。我很确定我理解为什么会发生这种情况,但我很难弄清楚是否有一种方法可以让每个样本的平均值居中,同时保持各维度的方差相等 import numpy as np def rbf_kernel(x_1, x_2, sig): r

我对高斯过程还不熟悉,所以请给一个相对初学者一个目标答案。我试图对相关噪声进行采样,其中每个样本的平均值为0(即,以平均值为中心),因此我一直在运行以下代码。然而,虽然在平均居中每个样本之前,样本之间的方差对于每个维度都是相同的,但平均居中会导致向量末端的方差越来越大。我很确定我理解为什么会发生这种情况,但我很难弄清楚是否有一种方法可以让每个样本的平均值居中,同时保持各维度的方差相等

import numpy as np

def rbf_kernel(x_1, x_2, sig):
    return np.exp((-(x_1-x_2)**2)/2*(sig**2))

X = np.array([[0.08333333],
              [0.25      ],
              [0.41666667],
              [0.58333333],
              [0.75      ],
              [0.91666667]])

r = 0.1

covNoise = np.zeros((6, 6))
for i, x1 in enumerate(X):
    for j, x2 in enumerate(X):
        covNoise[i,j] = rbf_kernel(x1, x2, r)

noise = np.random.multivariate_normal(np.zeros(6), covNoise, 1000)

np.var(noise, axis=0)
# Variance before mean-centering -- variance is constant across the vector
# array([0.99994815, 0.99941361, 0.9989251 , 0.99848157, 0.99806782, 0.99768438])

noise_meanCentered = noise - noise.mean(axis=1, keepdims=True)
np.var(noise_meanCentered, axis=0)
# Variance after mean-centering -- variance is greatest at the ends of the vector
# array([0.15211363, 0.0589172, 0.01052137, 0.01053556, 0.0589244, 0.15203642])