Ejemplo n.º 1
0
    def __init__(self,
                 method,
                 hyper_params,
                 inputs_block,
                 attr_types,
                 random=False,
                 random_max_run=1,
                 name="DN"):
        assert 'r' not in attr_types, "real value attributes are not allowd here"
        self.attr_types = attr_types
        self.num_attr = len(self.attr_types)
        self.inputs_block = inputs_block
        self.method = method
        self.num_inputs = self.inputs_block[-1][1]
        self.name = name
        self.models = []
        for i, block in enumerate(self.inputs_block):
            self.models.append(self.method())
            try:
                self.models[-1].set_params(probability=True)
            except:
                pass

        self.hyper_params_choices = enumerate_parameters(hyper_params)
        if random:
            num_choices = len(self.hyper_params_choices)
            assert random_max_run <= num_choices
            sel = np.random.choice(range(num_choices),
                                   size=(random_max_run, ),
                                   replace=False)
            self.hyper_params_choices = [
                self.hyper_params_choices[s] for s in sel
            ]

        self._define_masks()
Ejemplo n.º 2
0
 def train_valid_search(self, X, y, v_X, v_y, param_grid, sample_weight=None, v_sample_weight=None, max_num_run=None, refit=False, verbose=1):
     hyper_params = enumerate_parameters(param_grid)
     hyper_params = np.random.choice(hyper_params, size=len(hyper_params), replace=False)
     if max_num_run is None:
         max_num_run = len(hyper_params)
     best_params = None
     best_score = 0
     for r in range(max_num_run):
         self.estimator = clone(self.estimator)
         self.set_params(hyper_params[r])
         self.fit(X, y, sample_weight=sample_weight)
         if verbose>=2:
             print hyper_params[r]
         score = self.estimator.score(v_X, v_y, sample_weight=v_sample_weight)
         if verbose>=2:
             print score
         if score > best_score:
             best_score = score
             best_params = hyper_params[r]
     if verbose>=1:
         print "best ------"
         print best_params
         print best_score
     if sample_weight is None:
         sample_weight = np.ones((X.shape[0], ))
     if v_sample_weight is None:
         v_sample_weight = np.ones((v_X.shape[0], ))
     train_data = np.concatenate([X, y[:, None], sample_weight[:, None]], axis=1)
     valid_data = np.concatenate([v_X, v_y[:, None], v_sample_weight[:, None]], axis=1)
     all_data = np.concatenate([train_data, valid_data], axis=0)
     np.random.shuffle(all_data)
     self.set_params(best_params)
     if refit:
         self.estimator = clone(self.estimator)
         self.fit(all_data[:, :-2], all_data[:, -2], sample_weight=all_data[:, -1])
Ejemplo n.º 3
0
    def __init__(self,
                 hyper_params,
                 noise_generator,
                 inputs_dim,
                 prior_dim,
                 inputs_block,
                 attr_types,
                 random=False,
                 name="GDN"):
        self.hyper_params = hyper_params
        self.noise_generator = noise_generator
        self.inputs_dim = inputs_dim
        self.prior_dim = prior_dim
        self.inputs_block = inputs_block
        self.attr_types = attr_types
        self.name = name

        self.hyper_params_choices = enumerate_parameters(hyper_params)
        if random:
            num_choices = len(self.hyper_params_choices)
            sel = np.random.choice(range(num_choices),
                                   size=(num_choices, ),
                                   replace=False)
            self.hyper_params_choices = [
                self.hyper_params_choices[s] for s in sel
            ]

        self.set_model(self.hyper_params_choices[0])
Ejemplo n.º 4
0
 def __init__(self, hyper_params, random=True, name=None):
     self.name = name
     self.hyper_params_choices = enumerate_parameters(hyper_params)
     if random:
         num_choices = len(self.hyper_params_choices)
         sel = np.random.choice(range(num_choices),
                                     size=(num_choices,), replace=False)
         self.hyper_params_choices = [self.hyper_params_choices[s] for s in sel]
Ejemplo n.º 5
0
 def __init__(self, method, hyper_params, random=False, random_max_run=1):
     self.hyper_params_choices = enumerate_parameters(hyper_params)
     if random:
         num_choices = len(self.hyper_params_choices)
         assert random_max_run <= num_choices
         sel = np.random.choice(range(num_choices),
                                     size=(random_max_run,), replace=False)
         self.hyper_params_choices = [self.hyper_params_choices[s] for s in sel]
     self.method = method
     self.performance_records = []
Ejemplo n.º 6
0
    def __init__(self, base_model, hyper_params, inputs_dim, random=True, name=None):
        self.inputs_dim = inputs_dim
        self.base_model = base_model
        self.custom_objects = {}
        if self.base_model == "Gaussian":
            self.custom_objects["_mdn_gaussian_loss"] = self._mdn_gaussian_loss
        elif self.base_model == "Poisson":
            self.custom_objects["_mdn_poisson_loss"] = self._mdn_poisson_loss
        elif self.base_model == "NegativeBinomial":
            self.custom_objects["_mdn_negative_binomial_loss"] = self._mdn_negative_binomial_loss

        self.hyper_params_choices = enumerate_parameters(hyper_params)
        self.name = name
        self.n_components = None
        if random:
            num_choices = len(self.hyper_params_choices)
            sel = np.random.choice(range(num_choices),
                                        size=(num_choices,), replace=False)
            self.hyper_params_choices = [self.hyper_params_choices[s] for s in sel]