def predict(self): Y_optimization_pred = self.predict_function(self.X_optimization, self.model, self.task_type) if self.X_valid is not None: Y_valid_pred = self.predict_function(self.X_valid, self.model, self.task_type) else: Y_valid_pred = None if self.X_test is not None: Y_test_pred = self.predict_function(self.X_test, self.model, self.task_type) else: Y_test_pred = None score = calculate_score( self.Y_optimization, Y_optimization_pred, self.task_type, self.metric, self.D.info['target_num'], all_scoring_functions=self.all_scoring_functions) if hasattr(score, '__len__'): err = {key: 1 - score[key] for key in score} else: err = 1 - score if self.with_predictions: return err, Y_optimization_pred, Y_valid_pred, Y_test_pred return err
def predict(self): Y_optimization_pred = [None] * self.cv_folds Y_targets = [None] * self.cv_folds Y_valid_pred = [None] * self.cv_folds Y_test_pred = [None] * self.cv_folds for i in range(self.cv_folds): # To support prediction when only partial_fit was called if self.models[i] is None: continue train_indices, test_indices = self.indices[i] opt_pred = self.predict_function(self.X_train[test_indices], self.models[i], self.task_type, self.Y_train[train_indices]) Y_optimization_pred[i] = opt_pred Y_targets[i] = self.Y_train[test_indices] if self.X_valid is not None: X_valid = self.X_valid.copy() valid_pred = self.predict_function(X_valid, self.models[i], self.task_type, self.Y_train[train_indices]) Y_valid_pred[i] = valid_pred if self.X_test is not None: X_test = self.X_test.copy() test_pred = self.predict_function(X_test, self.models[i], self.task_type, self.Y_train[train_indices]) Y_test_pred[i] = test_pred Y_optimization_pred = np.concatenate( [Y_optimization_pred[i] for i in range(self.cv_folds) if Y_optimization_pred[i] is not None]) Y_targets = np.concatenate([Y_targets[i] for i in range(self.cv_folds) if Y_targets[i] is not None]) if self.X_valid is not None: Y_valid_pred = np.array([Y_valid_pred[i] for i in range(self.cv_folds) if Y_valid_pred[i] is not None]) # Average the predictions of several models if len(Y_valid_pred.shape) == 3: Y_valid_pred = np.nanmean(Y_valid_pred, axis=0) if self.X_test is not None: Y_test_pred = np.array([Y_test_pred[i] for i in range(self.cv_folds) if Y_test_pred[i] is not None]) # Average the predictions of several models if len(Y_test_pred.shape) == 3: Y_test_pred = np.nanmean(Y_test_pred, axis=0) self.Y_optimization = Y_targets score = calculate_score( Y_targets, Y_optimization_pred, self.task_type, self.metric, self.D.info['target_num'], all_scoring_functions=self.all_scoring_functions) if hasattr(score, '__len__'): err = {key: 1 - score[key] for key in score} else: err = 1 - score if self.with_predictions: return err, Y_optimization_pred, Y_valid_pred, Y_test_pred return err