def score_cv(self, parameters):
logger.info("Evaluating using %s-fold CV with parameters %s", self.task.kfold.n_folds, parameters)
self.model.set_params(**parameters)
scores = []
fold_predictions = []
for i, (train_index, test_index) in enumerate(self.task.kfold):
logger.info("Starting fold %s ...", i)
X_train, X_test = self.task.X[train_index], self.task.X[test_index]
y_train, y_test = self.task.y[train_index], self.task.y[test_index]
self.model.fit(X_train, y_train)
logger.info("Training for fold %s done !", i)
y_pred = self.get_prediction(self.model, X_test)
fold_predictions.append(y_pred.tolist())
score = self.scorer.scoring_function(y_test, y_pred)
logger.info("Score %s", score)
scores.append(score)
logger.info("Cross validation done !")
mean_score = np.mean(scores)
logger.info("Mean Score = %s", mean_score)
result = OptimizationResult(
model=str(self.model),
parameters=parameters,
score=mean_score,
scorer_name=self.scorer.name,
validation_method=self.task.validation_method,
predictions=fold_predictions,
random_state=self.task.random_state)
self.opt_logger.save(result)
return {'loss': mean_score, 'status': STATUS_OK}
评论列表
文章目录