python - 如何保存和加载高斯过程进行生产

标签 python machine-learning statistics kernel gaussian

如何保存和加载使用 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/

相关文章:

algorithm - 4D空间中的最小二乘线拟合

python - 按给定的任意顺序对字典列表进行排序

python - 导入父模块和子模块

python - tensorflow 神经网络不工作

machine-learning - 在具有不平衡数据的管道中进行交叉验证的正确方法

python - 请求例如 : Recurrent neural network for predicting next value in a sequence

python - 使用 BeautifulSoup 提取键的值

python - 为什么使用 SWIG 通过 C 接口(interface)包装 C++ 库?

mysql - 用Mysql计算中位数

c++ - 计算运行标准偏差