예제 #1
0
 def __init__(self, pgenerator, project_name, experiment_name):
     jobsDB = JobsDB(project_name, experiment_name)
     self.params = []
     self.pgenerator = pgenerator
     # Go through all the parameters that pgenerator would make
     # and take out the ones which are already in JobsDB.
     for params in pgenerator:
         if jobsDB.search_by_param(params) is None:
             self.params.append(params)
예제 #2
0
    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]