def _fit(self): seed = self.random_state.randint(1000000) for outer_fold in range(self.outer_cv_folds): # First perform the fit for the outer cross validation outer_train_indices, outer_test_indices = \ get_CV_fold(self.X_train, self.Y_train, fold=outer_fold, folds=self.outer_cv_folds, shuffle=True, random_state=seed) self.outer_indices[outer_fold] = ((outer_train_indices, outer_test_indices)) model = self.model_class(self.configuration, self.random_state) self.outer_models[outer_fold] = model self._fit_and_suppress_warnings(self.outer_models[outer_fold], self.X_train[outer_train_indices], self.Y_train[outer_train_indices]) # Then perform the fit for the inner cross validation for inner_fold in range(self.inner_cv_folds): X_train = self.X_train[outer_train_indices] Y_train = self.Y_train[outer_train_indices] inner_train_indices, inner_test_indices = \ get_CV_fold(X_train, Y_train, fold=inner_fold, folds=self.inner_cv_folds, shuffle=True, random_state=seed) inner_train_indices = outer_train_indices[inner_train_indices] inner_test_indices = outer_train_indices[inner_test_indices] X_train = self.X_train[inner_train_indices] Y_train = self.Y_train[inner_train_indices] self.inner_indices[outer_fold][inner_fold] = \ ((inner_train_indices, inner_test_indices)) model = self.model_class(self.configuration, self.random_state) model = self._fit_and_suppress_warnings(model, X_train, Y_train) self.inner_models[outer_fold][inner_fold] = model
def _fit(self): seed = self.random_state.randint(1000000) for outer_fold in range(self.outer_cv_folds): # First perform the fit for the outer cross validation outer_train_indices, outer_test_indices = \ get_CV_fold(self.X_train, self.Y_train, fold=outer_fold, folds=self.outer_cv_folds, shuffle=True, random_state=seed) self.outer_indices[outer_fold] = ((outer_train_indices, outer_test_indices)) model = self.model_class(self.configuration, self.random_state) self.outer_models[outer_fold] = model self.outer_models[outer_fold].fit( self.X_train[outer_train_indices], self.Y_train[outer_train_indices]) # Then perform the fit for the inner cross validation for inner_fold in range(self.inner_cv_folds): X_train = self.X_train[outer_train_indices] Y_train = self.Y_train[outer_train_indices] inner_train_indices, inner_test_indices = \ get_CV_fold(X_train, Y_train, fold=inner_fold, folds=self.inner_cv_folds, shuffle=True, random_state=seed) inner_train_indices = outer_train_indices[inner_train_indices] inner_test_indices = outer_train_indices[inner_test_indices] X_train = self.X_train[inner_train_indices] Y_train = self.Y_train[inner_train_indices] self.inner_indices[outer_fold][inner_fold] = \ ((inner_train_indices, inner_test_indices)) model = self.model_class(self.configuration, self.random_state) model = model.fit(X_train, Y_train) self.inner_models[outer_fold][inner_fold] = model
def get_train_test_split(self, fold): return get_CV_fold(self.X_train, self.Y_train, fold=fold, folds=self.cv_folds, shuffle=True, random_state=self.seed)
def _partial_fit_and_predict(self, fold): model = self.model_class(self.configuration, self.seed) train_indices, test_indices = \ get_CV_fold(self.X_train, self.Y_train, fold=fold, folds=self.cv_folds, shuffle=True, random_state=self.seed) self.indices[fold] = ((train_indices, test_indices)) model.fit(self.X_train[train_indices], self.Y_train[train_indices]) train_indices, test_indices = self.indices[fold] self.Y_targets[fold] = self.Y_train[test_indices] opt_pred = self.predict_function(self.X_train[test_indices], model, self.task_type, self.Y_train[train_indices]) X_valid = self.X_valid.copy() valid_pred = self.predict_function(X_valid, model, self.task_type, self.Y_train[train_indices]) X_test = self.X_test.copy() test_pred = self.predict_function(X_test, model, self.task_type, self.Y_train[train_indices]) return opt_pred, valid_pred, test_pred
def partial_fit(self, fold): model = self.model_class(self.configuration, self.seed) train_indices, test_indices = \ get_CV_fold(self.X_train, self.Y_train, fold=fold, folds=self.cv_folds, shuffle=True, random_state=self.seed) self.indices[fold] = ((train_indices, test_indices)) self.models[fold] = model self.models[fold].fit(self.X_train[train_indices], self.Y_train[train_indices])