Beispiel #1
0
 def by_sim_check(self, train=None, test=None, is_iter=False):
     # exception handler
     if train is None:
         try:
             train = self.train
         except NameError:
             self.split_data('random')
             train = self.train
     if test is None:
         try:
             test = self.test
         except NameError:
             self.split_data('random')
             test = self.test
     season_interval = self.param['season']
     ## checking sim
     pred_res = []
     ground_truth = []
     for i in range(len(test)):
         season_interval = self.param['season']
         # season for test should be different (last season shouldn't be added)
         if self.is_train:
             test_season = [season_interval[0], season_interval[1]-1]
         else:
             test_season = [season_interval[0]+1, season_interval[1]]
         test_list = dict_to_list(test[i]['data'],test_season)
         ground_truth.append(dict_to_list(test[i]['data'], 
                                             [season_interval[1],
                                              season_interval[1]])[0])
         res = 0.0
         errsum = 0.0
         for j in range(len(train)):
             train_list = dict_to_list(train[j]['data'], season_interval)
             # this is only for current one. err should be array afterwards
             if is_iter:
                 sii = SimCheckIteration(test_list,
                                         train_list[0:-1], 'corr')
             else:
                 sii = SimCheck(test_list, train_list[0:-1], 'corr')
             err = sii.run()[0]
             if err==0:
                 err = 0.00001
             res+=(train_list[-1][0]/err)
             errsum+=1/err
         res/=errsum
         pred_res.append(res)
     eval_res = self.evaluation(pred_res, ground_truth)
     return pred_res, eval_res
Beispiel #2
0
 def by_regression(self, train=None, test=None):
     # exception handler
     if train is None:
         try:
             train = self.train
         except NameError:
             self.split_data('random')
             train = self.train
     if test is None:
         try:
             test = self.test
         except NameError:
             self.split_data('random')
             test = self.test
             
     season_interval = self.param['season']
     # checking sim
     input_season = [season_interval[0],season_interval[1]-1]
     output_season = [season_interval[1],season_interval[1]]
     train_input = []
     train_output = []
     for i in range(len(train)):
         train_input.append([elm[0] for elm in dict_to_list(
         train[i]['data'], input_season)])
         train_output.append(dict_to_list(train[i]['data'],
                                             output_season)[0])
         
     rg_instance = Regressor(train_input,train_output)
     coeff = rg_instance.run()
     # season for test should be different (last season shouldn't be added)
     test_input = []
     test_output = []
     for i in range(len(test)):
         test_input.append([elm[0] for elm in dict_to_list(
         test[i]['data'], input_season)])
         test_output.append(dict_to_list(test[i]['data'],
                                            output_season)[0])
     
     predict_output = rg_instance.prediction(test_input, coeff[0])
     eval_res = self.evaluation(predict_output, test_output)
     return predict_output, eval_res
Beispiel #3
0
 def by_sim_check(self, train=None, test=None, is_iter=False):
     train, test = self.training_preparation(train, test)
     season_interval = self.param['season']
     # checking sim
     train_input = train[list(set(train.columns) - set(self.ignore_fields))]
     test_input = train[list(set(train.columns) - set(self.ignore_fields))]
     pred_res = []
     ground_truth = []
     for i in range(len(test)):
         # season for test should be different (last season shouldn't be added)
         if self.is_train:
             test_season = [season_interval[0], season_interval[1] - 1]
         else:
             test_season = [season_interval[0] + 1, season_interval[1]]
         test_list = dict_to_list(test[i]['data'], test_season)
         ground_truth.append(
             dict_to_list(test[i]['data'],
                          [season_interval[1], season_interval[1]])[0])
         res = 0.0
         errsum = 0.0
         for j in range(len(train)):
             train_list = dict_to_list(train[j]['data'], season_interval)
             # this is only for current one. err should be array afterwards
             if is_iter:
                 sii = SimCheckIteration(test_list, train_list[0:-1],
                                         'corr')
             else:
                 sii = SimCheck(test_list, train_list[0:-1], 'corr')
             err = sii.run()[0]
             if err == 0:
                 err = 0.00001
             res += (train_list[-1][0] / err)
             errsum += 1 / err
         res /= errsum
         pred_res.append(res)
     eval_res = self.evaluation(pred_res, ground_truth)
     return pred_res, eval_res