Select Git revision
section_4.3_compute.py
section_4.2_compute.py 3.25 KiB
# DATA-DRIVEN KERNEL DESIGNS FOR OPTIMIZED GREEDY SCHEMES: A MACHINE LEARNING PERSPECTIVE by
# TIZIAN WENZEL, FRANCESCO MARCHETTI, EMMA PERRACCHIONE
# Code related to the numerical experiment within Section 4.2. "Machine learning data
# sets", especially to produce the results for the Figures 3-5.
from utils.main_function import run_everything, run_cross_validation
from utils.hyperparameters import dic_hyperparams
from scipy import io
import os
list_datasets = ['fried', 'sarcos', 'protein', 'ct', 'diamonds',
'stock', 'kegg_undir_uci', 'online_video',
'wecs', 'mlr_knn_rng', 'query_agg_count',
'sgemm', 'road_network', 'methane', 'poker'] #, 'susy', 'higgs']
## Loop over reruns and datasets
for idx_indices in [0, 1, 2, 3, 4]:
for idx_dataset, name_dataset in enumerate(list_datasets):
## Load the hyperparameters
hyperparameter = dic_hyperparams[name_dataset]
## Run everything
A_start, A_optimized, model, model_vkoga1, model_vkoga2, data, \
array_concatenate, array_test_rmse_deep, dic_timings_2L = run_everything(
name_dataset,
hyperparameter.maxIter_vkoga, hyperparameter.N_points,
hyperparameter.noise_level, hyperparameter.reg_para_optim, hyperparameter.reg_para_vkoga,
hyperparameter.learning_rate, hyperparameter.n_epochs,
hyperparameter.batch_size, hyperparameter.n_folds,
flag_initialize_diagonal=hyperparameter.flag_initialize_diagonal,
flag_symmetric_A=hyperparameter.flag_symmetric,
flag_gaussian=hyperparameter.flag_gaussian,
flag_optim_verbose=False,
flag_std_vkoga=False,
idx_rerun=idx_indices)
## Run cross-validation
array_eps, array_cv_f, array_cv_f_val, array_test_rmse_cv, list_timings_1L = \
run_cross_validation(
name_dataset, # required only for hyperparameters
data, hyperparameter.maxIter_vkoga,
flag_gaussian=hyperparameter.flag_gaussian,
n_cross_val=hyperparameter.n_cross_val)
## Store in matlab for beautiful tikzfigure plots
path_for_results = os.path.abspath(os.path.join(os.path.dirname(__file__), 'results_5reruns/'))
os.makedirs(path_for_results, exist_ok=True)
io.savemat(path_for_results + name_dataset + '_{}'.format(idx_indices) + '.mat',
dict(array_concatenate=array_concatenate,
list_objectives=model.list_obj,
train_hist_deep_f=model_vkoga1.train_hist['f'],
train_hist_deep_f_val=model_vkoga1.train_hist['f val'],
train_hist_std_f=model_vkoga2.train_hist['f'],
train_hist_std_f_val=model_vkoga2.train_hist['f val'],
array_eps=array_eps,
array_cv_f=array_cv_f,
array_cv_f_val=array_cv_f_val,
array_test_rmse_deep=array_test_rmse_deep,
array_test_rmse_cv=array_test_rmse_cv,
dic_timings_2L=dic_timings_2L,
list_timings_1L=list_timings_1L))
# in Matlab:
# results = load('gong.mat')