def __init__(self, pgenerator, project_name, experiment_name, n_best=0.1, n_samples=None, param_space=None): jobsDB = JobsDB(project_name, experiment_name) param_values = jobsDB.get_param_values(encode_labels=True) df = pd.DataFrame(param_values) gb_up = GB(n_estimators=500, learning_rate=0.1, loss='quantile', alpha=0.95, max_depth=3, max_features=None, min_samples_leaf=9, min_samples_split=9) gb_up.fit(df, losses) gb_dn = GB(n_estimators=500, learning_rate=0.1, loss='quantile', alpha=0.05, max_depth=3, max_features=None, min_samples_leaf=9, min_samples_split=9) gb_dn.fit(df, losses) gb = GB(n_estimators=500, learning_rate=0.1, loss='ls', max_depth=3, max_features=None, min_samples_leaf=9, min_samples_split=9) gb.fit(df, losses) if hasattr(pgenerator, "__name__"): self.pgenerator = pgenerator(param_space, n_samples) else: self.pgenerator = pgenerator trial_params_list = list(self.pgenerator) trial_params_df = pd.DataFrame( trial_params_list ) predicted_loss = gb.predict(trial_params_df) predicted_loss_up = gb_up.predict(trial_params_df) predicted_loss_dn = gb_dn.predict(trial_params_df) idx = np.argsort(predicted_loss_dn) sorted_trial_params = np.array(trial_params_list)[idx] if n_best >= 1: # actual thresh_idx = int(np.round(n_best)) else: # fraction thresh_idx = int( np.round(n_best * len(trial_params_list)) ) self.params = list(trial_params_list)[:thresh_idx]