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
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
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