def train(regress_type='hybrid', seed=1, **kwargs): X_obs = kwargs['X_obs'] y_obs = kwargs['y_obs'] Kds = kwargs['Kds'] kwargs['regress_type'] = regress_type # Debug. #X_obs = X_obs[:10] #y_obs = y_obs[:10] # Fit the model. if regress_type == 'baseline': from baseline import Baseline regressor = Baseline() elif regress_type == 'mlper1': regressor = mlp_ensemble( n_neurons=200, n_regressors=1, n_epochs=50, seed=seed, ) elif regress_type == 'dmlper1': regressor = mlp_ensemble( n_neurons=1000, n_regressors=1, n_hidden_layers=15, n_epochs=300, seed=seed, ) elif regress_type == 'mlper1g': regressor = mlp_ensemble( n_neurons=100, n_regressors=1, n_epochs=100, loss='gaussian_nll', seed=seed, ) elif regress_type == 'mlper5': regressor = mlp_ensemble( n_neurons=200, n_regressors=5, n_epochs=100, seed=seed, ) elif regress_type == 'mlper5g': regressor = mlp_ensemble( n_neurons=200, n_regressors=5, n_epochs=50, loss='gaussian_nll', seed=seed, ) elif regress_type == 'bayesnn': from bayesian_neural_network import BayesianNN regressor = BayesianNN( n_hidden1=200, n_hidden2=200, n_iter=1000, n_posterior_samples=100, random_state=seed, verbose=True, ) elif regress_type == 'cmf': from cmf_regressor import CMFRegressor regressor = CMFRegressor( n_components=30, seed=seed, ) regressor.fit( kwargs['chems'], kwargs['prots'], kwargs['chem2feature'], kwargs['prot2feature'], kwargs['Kds'], kwargs['idx_obs'], ) elif regress_type == 'gp': from gaussian_process import GPRegressor from sklearn.gaussian_process.kernels import RBF, ConstantKernel as C regressor = GPRegressor( kernel=C(10000., 'fixed') * RBF(1., 'fixed'), backend='sklearn', n_jobs=10, verbose=True ) elif regress_type == 'gpfactorized': from gaussian_process import GPRegressor from sklearn.gaussian_process.kernels import ConstantKernel as C from kernels import FactorizedRBF n_features_chem = kwargs['n_features_chem'] n_features_prot = kwargs['n_features_prot'] regressor = GPRegressor( kernel=C(1., 'fixed') * FactorizedRBF( [ 1.1, 1. ], [ n_features_chem, n_features_prot ], 'fixed' ), backend='sklearn', n_restarts=0, n_jobs=10, verbose=True ) elif regress_type == 'sparsegp': from gaussian_process import SparseGPRegressor regressor = SparseGPRegressor( method='geosketch', n_inducing=8000, backend='sklearn', n_restarts=10, n_jobs=10, verbose=True ) elif regress_type == 'hybrid': from gaussian_process import GPRegressor from hybrid import HybridMLPEnsembleGP regressor = HybridMLPEnsembleGP( mlp_ensemble( n_neurons=200, n_regressors=1, n_epochs=50, seed=seed, ), GPRegressor( backend='sklearn',#'gpytorch', n_restarts=10, n_jobs=10, verbose=True, ), ) elif regress_type == 'dhybrid': from gaussian_process import GPRegressor from hybrid import HybridMLPEnsembleGP regressor = HybridMLPEnsembleGP( mlp_ensemble( n_neurons=1000, n_regressors=1, n_hidden_layers=15, n_epochs=300, seed=seed, ), GPRegressor( backend='sklearn',#'gpytorch', n_restarts=10, n_jobs=10, verbose=True, ), ) elif regress_type == 'sparsehybrid': from gaussian_process import SparseGPRegressor from hybrid import HybridMLPEnsembleGP from sklearn.gaussian_process.kernels import RBF, ConstantKernel as C regressor = HybridMLPEnsembleGP( mlp_ensemble( n_neurons=200, n_regressors=1, n_epochs=50, seed=seed, ), SparseGPRegressor( method='geosketch', n_inducing=8000, backend='sklearn', n_restarts=10, n_jobs=10, verbose=True ), ) if regress_type not in { 'cmf' }: regressor.fit(X_obs, y_obs) #print(regressor.model_.kernel_.get_params()) # Debug. kwargs['regressor'] = regressor return kwargs