def vote_with_lr(conf, forecasts, best_model_index, y_actual):
start = time.time()
best_forecast = forecasts[:, best_model_index]
forecasts = np.sort(np.delete(forecasts, best_model_index, axis=1), axis=1)
forecasts = np.where(forecasts <=0, 0.1, forecasts)
data_train = []
for i in range(forecasts.shape[0]):
f_row = forecasts[i,]
min_diff_to_best = np.min([cal_rmsle(best_forecast[i], f) for f in f_row])
comb = list(itertools.combinations(f_row,2))
avg_error = scipy.stats.hmean([cal_rmsle(x,y) for (x,y) in comb])
data_train.append([min_diff_to_best, avg_error, scipy.stats.hmean(f_row), np.median(f_row), np.std(f_row)])
X_all = np.column_stack([np.row_stack(data_train), best_forecast])
if conf.target_as_log:
y_actual = transfrom_to_log(y_actual)
#we use 10% full data to train the ensamble and 30% for evalaution
no_of_training_instances = int(round(len(y_actual)*0.25))
X_train, X_test, y_train, y_test = train_test_split(no_of_training_instances, X_all, y_actual)
y_actual_test = y_actual[no_of_training_instances:]
lr_model =linear_model.Lasso(alpha = 0.2)
lr_model.fit(X_train, y_train)
lr_forecast = lr_model.predict(X_test)
lr_forcast_revered = retransfrom_from_log(lr_forecast)
calculate_accuracy("vote__lr_forecast " + str(conf.command), y_actual_test, lr_forcast_revered)
print_time_took(start, "vote_with_lr")
return lr_forcast_revered
评论列表
文章目录