model = GPy.models.GPRegression(X_train, Y_train, kernel=k) model.optimize(messages=True, max_iters=100) # Get predictions info_dict = {} if args.model == 'ridge' or args.model == 'svr': preds = model.predict(X_test) if args.label_preproc == 'scale': preds = Y_scaler.inverse_transform(preds) info_dict['mae'] = MAE(preds, Y_test.flatten()) info_dict['rmse'] = np.sqrt(MSE(preds, Y_test.flatten())) info_dict['pearsonr'] = pearsonr(preds, Y_test.flatten()) else: # TODO: check if this makes sense #preds, vars = model.predict(X_test) preds, vars = model.predict_noiseless(X_test) if args.label_preproc == 'scale': preds = Y_scaler.inverse_transform(preds) info_dict['mae'] = MAE(preds, Y_test) info_dict['rmse'] = np.sqrt(MSE(preds, Y_test)) info_dict['pearsonr'] = pearsonr(preds.flatten(), Y_test.flatten()) nlpd = model.log_predictive_density(X_test, Y_test) info_dict['nlpd'] = np.mean(nlpd) # Get parameters if args.model == 'ridge': info_dict['coefs'] = list(model.coef_) info_dict['intercept'] = model.intercept_ info_dict['regularization'] = model.alpha_ elif args.model == 'svr': info_dict['regularization'] = model.best_params_['C']