def fit(self, X_train, y_train, X_test=None, y_test=None, n_iters=10, start_vals=None):
"""
"""
if (X_test is None) and (y_test is None):
X_test = X_train
y_test = y_train
elif (X_test is None) or (y_test is None):
raise MissingValueException("Need to provide 'X_test' and 'y_test'")
def objective(params):
model_params = self.model.get_params()
model_params.update(params)
self.model = self.build_new_model(model_params)
self.model.fit(X_train, y_train)
y_pred = self.model.predict(X_test)
y_true = y_test
score = -self.eval_func(y_true, y_pred)
return score
self.trials = Trials()
best_params = fmin(objective,
self.param_space,
algo=tpe.suggest,
max_evals=n_iters,
trials=self.trials)
self.hyperparam_history = []
for i, loss in enumerate(self.trials.losses()):
param_vals = {k:v[i] for k,v in self.trials.vals.items()}
self.hyperparam_history.append((-loss, param_vals))
model_params = self.model.get_params()
model_params.update(best_params)
best_model = self.build_new_model(model_params)
return best_params, best_model
评论列表
文章目录