def train_cross(self): press_best = None for x_train, x_test, y_train, y_test in valid.k_fold_validation( self.training_set, self.training_fitness, self.conf.Kfolds ): # Scale inputs input_scaler = preprocessing.StandardScaler().fit(x_train) scaled_training_set = input_scaler.transform(x_train) scaled_testing_set = input_scaler.transform(x_test) if self.transLog: output_scaler = preprocessing.StandardScaler(with_std=False).fit(log(y_train - self.shift_by())) adjusted_training_fitness = output_scaler.transform(log(y_train - self.shift_by())) adjusted_testing_fitness = output_scaler.transform(log(y_test - self.shift_by())) else: output_scaler = preprocessing.StandardScaler(with_std=False).fit(y_train) adjusted_training_fitness = output_scaler.transform(y_train) adjusted_testing_fitness = output_scaler.transform(y_test) k, m, l, i, o = self.get_optimizer(max_trails=1) gp.train(i, m, k, l, scaled_training_set, adjusted_training_fitness, o) vargout = gp.predict(i, m, k, l, scaled_training_set, adjusted_training_fitness, scaled_testing_set) predicted_fitness = vargout[2] press = self.calc_press(predicted_fitness, adjusted_testing_fitness) if (not press_best) or (press < press_best): self.m = m self.l = l self.k = k self.o = o self.i = i self.output_scaler = output_scaler self.input_scaler = input_scaler if press_best: logging.info("Regressor training successful") return True else: logging.debug("Regressor training Failed") return False
for i in xrange(n): if y[i,0][0] == 'g': y[i,0] = 1 else: y[i,0] = -1 y = np.int8(y) #------------------------------------------------------ # Step 3: cross validation # 10-fold validation #------------------------------------------------------ K = 10 measure_ACC = [] measure_RMSE = [] for x_train, x_test, y_train, y_test in valid.k_fold_validation(x,y,K): ''' IMPORTANT: Since inf method will store some value in the last call... ..(e.g. last_alpha) so that can save computation if called again But here we are training different data for each k fold, so last_alpha will get mixed up, thus we need a new inf object everytime Hence I recommand to specify cov, mean, inf and lik functions here... ...if you specified these functions outside for loop, then you need to know which values are stored in your specified inf method, and clear these values in the end of every iteration(e.g. i.last_alpha=None) ''' k = cov.covSEiso([-1,0]) m = mean.meanZero() l = lik.likErf()