Как сохранить и загрузить гауссовский процесс для производства - PullRequest
1 голос
/ 27 марта 2019

Как сохранить и загрузить модели процессов Гаусса, созданные из пакета 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)  

Это загрузка модели, отличной от той, которую я создал изначально. Может ли кто-нибудь помочь, пожалуйста?

1 Ответ

0 голосов
/ 28 марта 2019

На самом деле все оказалось намного проще, чем я думал, мы можем просто засолить, как @ Engineero предложила, как и любую другую модель, что интересно, все необходимые элементы будут автоматически засечены, включая: ядро, оптимизированные гиперпараметры и данные обучения:

with open(models_path + "model_name.dump" , "wb") as f:
     pickle.dump(m, f)  

и затем вы можете просто загрузить его:

model = pickle.load(open(models_path + "model_name.dump","rb"))
...