def do_grid_search(self): self.get_dataset() n_folds = mdata.get_grid_search_fold() skf = StratifiedKFold(n_splits=n_folds) skf.get_n_splits(self.X_train, self.y_train) clf, pipeline = self.build_clf_pipeline() log.debug('get_params: %s' % (pipeline.get_params().keys())) params = mdata.get_hyper_param_pairs(self.class_name) if len(params) > 0: temp_params = {} for (param, range) in params.items(): if mdata.is_param_float_type(param) is True: temp_range = [float(value_str) for value_str in range] elif mdata.is_param_int_type(param) is True: temp_range = [int(value_str) for value_str in range] else: temp_range = range temp_name = "clf__" + param temp_params[temp_name] = temp_range gs = GridSearchCV(estimator=pipeline, param_grid=temp_params, n_jobs=-1, cv=skf, verbose=2) gs.fit(self.X_train, self.y_train) log.debug('GridSearch Params:%s' % gs.param_grid) log.debug('Best CV accuracy: %g\nBest params: %s\n' % (gs.best_score_, gs.best_params_)) mdata.set_grid_search_param_values(gs.best_params_)
def save_hyper_param(self): value_str = str(self.range_combo.currentText()) log.debug('start - index: %s' % value_str) if value_str != config.txt_default: if mdata.is_param_float_type(self.param_name) is True: param_value = float(value_str) elif mdata.is_param_int_type(self.param_name) is True: param_value = int(value_str) mdata.set_hyper_param_value(self.param_name, param_value)
def set_param_value(self, index): log.debug('start - index: %d' % index) value_str = str(self.range_combo.currentText()) param_value = None if value_str != config.txt_default: if mdata.is_param_float_type(self.param_name) is True: param_value = float(value_str) elif mdata.is_param_int_type(self.param_name) is True: param_value = int(value_str) mdata.set_hyper_param_value(self.param_name, param_value)