Я не уверен, почему регрессия этого гауссовского процесса не работает. Я просто скопировал из примеров. Но не знаю, почему он не может предсказать данные одного теста. Для простой одномерной регрессии уже достаточно нескольких данных.
train_X = np.atleast_2d([0, 0.2, 0.5, 1]).T
print(train_X)
print(f(train_X))
train_y = f(train_X)
print(train_y)
test_X = np.atleast_2d(np.linspace(0, 1, 100)).T
test_Y_real = f(test_X)
# fit GPR
kernel = RBF(1)
gpr = GaussianProcessRegressor(kernel=kernel, n_restarts_optimizer=10)
gpr.fit(train_X, train_y)
mu, cov = gpr.predict(test_X, return_cov=True)
test_y = mu.ravel()
uncertainty = 1.96 * np.sqrt(np.diag(cov))
# plotting
plt.figure()
plt.title("l=%.1f" % (gpr.kernel_.length_scale))
plt.fill_between(test_X.ravel(), test_y + uncertainty, test_y - uncertainty, alpha=0.5)
plt.plot(test_X, test_y, label="predict")
plt.plot(test_X, test_Y_real, label='real_value')
plt.scatter(train_X, train_y, label="train", c="red", marker="x")
plt.legend()
plt.show()
![enter image description here](https://i.stack.imgur.com/EG9zz.png)