如何保存和加载使用 GPy
创建的高斯过程模型包?
以下是我如何定义模型并优化其参数:
# define kernel
ker = GPy.kern.Matern52(rescaled_x_train.shape[1],ARD=True) + GPy.kern.White(rescaled_x_train.shape[1]) + \
GPy.kern.Linear(rescaled_x_train.shape[1])
y_gp = y_train.values.reshape(y_train.shape[0],1)
x_gp = rescaled_x_train
# create a GP model
m = GPy.models.GPRegression(x_gp, y_gp , ker)
m.optimize(messages=True,max_f_eval = 3000)
但我不知道如何保存 m 以便加载它以用于预测。
我尝试了以下方法:
# Save the model parameters
np.save('gp_params.npy',m.param_array)
np.save('gp_y.npy',y_gp)
np.save('gp_X.npy',x_gp)
# Load model
y_load = np.load('gp_y.npy')
X_load = np.load('gp_X.npy')
gp_load = GPy.models.GPRegression(X_load, y_load, kernel= ker,
initialize=True)
但是,这会加载一个与我最初创建的模型不同的模型。请问有人可以帮忙吗?
最佳答案
事实上,它比我想象的要容易得多,我们可以像@ Engineero 建议的那样像任何其他模型一样进行 pickle,有趣的是,所有需要的元素都会自动 pickle,包括: 内核、优化的超参数和训练数据:
with open(models_path + "model_name.dump" , "wb") as f:
pickle.dump(m, f)
然后你就可以简单地加载它:
model = pickle.load(open(models_path + "model_name.dump","rb"))
关于python - 如何保存和加载高斯过程进行生产,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55386254/