|
4 | 4 | import numpy as np |
5 | 5 | import scipy |
6 | 6 | from sklearn.model_selection import KFold |
| 7 | +from sklearn.utils.parallel import Parallel, delayed |
7 | 8 | from qstack.mathutils.fps import do_fps |
8 | 9 | from qstack.tools import correct_num_threads |
9 | 10 | from .kernel_utils import get_kernel, defaults, train_test_split_idx, sparse_regression_kernel |
@@ -69,18 +70,21 @@ def k_fold_opt(K_all, eta): |
69 | 70 |
|
70 | 71 | def hyper_loop(sigma, eta): |
71 | 72 | errors = [] |
72 | | - for s in sigma: |
73 | | - if read_kernel is False: |
74 | | - K_all = kernel(X_train, X_train, 1.0/s) |
75 | | - else: |
76 | | - K_all = X_train |
77 | | - |
78 | | - for e in eta: |
79 | | - mean, std = k_fold_opt(K_all, e) |
80 | | - if printlevel>0 : |
81 | | - sys.stderr.flush() |
82 | | - print(s, e, mean, std, flush=True) |
83 | | - errors.append((mean, std, e, s)) |
| 73 | + with Parallel(n_jobs=-1) as parallel: |
| 74 | + for s in sigma: |
| 75 | + if read_kernel is False: |
| 76 | + K_all = kernel(X_train, X_train, 1.0/s) |
| 77 | + else: |
| 78 | + K_all = X_train |
| 79 | + |
| 80 | + def inner_loop(s,e): |
| 81 | + mean, std = k_fold_opt(K_all, e) |
| 82 | + if printlevel>0 : |
| 83 | + sys.stderr.flush() |
| 84 | + print(s, e, mean, std, flush=True) |
| 85 | + return (mean, std, e, s) |
| 86 | + |
| 87 | + errors += parallel(delayed(inner_loop)(s,e) for e in eta) |
84 | 88 | return errors |
85 | 89 | if gkernel is None: |
86 | 90 | gwrap = None |
@@ -139,7 +143,6 @@ def hyper_loop(sigma, eta): |
139 | 143 | def _get_arg_parser(): |
140 | 144 | """Parse CLI arguments.""" |
141 | 145 | parser = RegressionParser(description='This program finds the optimal hyperparameters.', hyperparameters_set='array') |
142 | | - parser.remove_argument("random_state") |
143 | 146 | parser.remove_argument("train_size") |
144 | 147 | return parser |
145 | 148 |
|
|
0 commit comments