Я пытаюсь рассчитать среднеквадратическое отклонение выборки данных с использованием гауссовой регрессии процесса. Я использую GPy для этого вычисления. В настоящее время у меня есть следующий соответствующий код:
def RMSE(model, grid, ygrid):
mu, V = model.predict(grid)
Sqerr = np.power(ygrid - mu,2)
MSE = np.sum(Sqerr)
rmse = np.sqrt(MSE/ygrid.size)
print ('RMSE = ' +str(rmse))
print ('Log likelihood is ' + str(model.log_likelihood()))
return rmse
#reshaping values to fit gaussian process
gp_y = (y).values.reshape(x.shape[0], 1)
gp_x = (np.array(x)).reshape(x.shape[0], 1)
#choosing right kernel:currently comparing Matern32, Matern52 & RBF
#plotting graph and calculating error
kern = GPy.kern.Matern32(1)
model = GPy.models.GPRegression(gp_x, gp_y, kern)
model.optimize()
model.plot()
plt.xlabel('Moneyness', fontsize = 15)
plt.ylabel('Bid/Strike', fontsize = 15)
RMSE(model,gp_x, gp_y)
Я не уверен, что это дает мне правильные значения, поскольку RMSE в основном равно 0. Я не уверен, есть ли в GPy функция для вычисления этого.