コード例 #1
0
ファイル: regressors.py プロジェクト: maciejkurek87/ARDEGO
 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
コード例 #2
0
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()