def evaluate(data, teX, teY, index_arr, kernelMeans, kernelSigma, kernelWeights, tau, E, original_P, target_P, mode): """model test""" print("== EVALUATE ==") f = open('result.txt', 'w') # recursive application assert ( target_P % original_P == 0 ) # check if target P can be achieved using n step applications of interval original_P gap = target_P - original_P loop = gap + 1 print("Iterative Application for {} times".format(loop)) Y_hat = [] print(len(teX)) for idx, x_element in enumerate(teX): data_copy = copy.deepcopy(data) data_at = index_arr[idx] - gap x = x_element for i in range(0, loop): y_h = predict(x, kernelMeans, kernelSigma, kernelWeights) # update value by prediction data_copy[data_at] = y_h x, data_at = ft.extracting_on_index(tau, E, original_P, data_copy, data_at, mode) Y_hat.append(y_h) err, rmse, rsq, mae = ft.loss_with_prediction_array(teY, Y_hat) return Y_hat, rmse, rsq, mae
def evaluate(data, teX, teY, teYdate, index_arr, num_kernels, kernelMeans, kernelSigma, kernelWeights, tau, E, original_P, target_P, mode, formatter, locater ): """model test""" print("== EVALUATE ==") f = open('result.txt', 'w') # recursive application assert(target_P % original_P == 0) # check if target P can be achieved using n step applications of interval original_P gap = target_P - original_P loop = gap + 1 print("Iterative Application for {} times".format(loop)) Y_hat = [] print(len(teX)) for idx, x_element in enumerate(teX): data_copy = copy.deepcopy(data) data_at = index_arr[idx] - gap x = x_element for i in range(0, loop): y_h = predict(x, kernelMeans, kernelSigma, kernelWeights) # update value by prediction data_copy[data_at] = y_h x, data_at = ft.extracting_on_index(tau, E, original_P, data_copy, data_at, mode) Y_hat.append(y_h) err, rmse, rsq, mae = ft.loss_with_prediction_array(teY, Y_hat) print(format('rmse: %f, R2: %f, MAE: %f') % (rmse, rsq, mae)) f.write(format('rmse: %f, R2: %f, MAE: %f') % (rmse, rsq, mae) + '\n') """ plot """ dates = [datetime.datetime.strptime(d, "%Y-%m-%d").date() for d in teYdate] plt.gca().xaxis.set_major_formatter(formatter) plt.gca().xaxis.set_major_locator(locater) pre = teY - err plt.plot(dates, teY, 'r') plt.plot(dates, pre, 'b') plt.legend(["Test Data", "Prediction"]) plt.savefig("./kernel" + str(num_kernels) + "_prediction_graph.png") plt.show() f.close() return rmse, rsq, mae
def rolling_forecast(teX, teY, teYdate, num_kernels, kernelMeans, kernelSigma, kernelWeights, formatter, locater): """ model test, rolling forecast """ # forecast and update n = len(teX) Yest = [] for i in range(n): # forecast Yhat = ft.output(teX[i], kernelMeans, kernelSigma, kernelWeights) Yest.append(Yhat) # update kernelMeans, kernelSigma, kernelWeights = \ updateWeights(teX[i], teY[i], num_kernels, kernelMeans, kernelSigma, kernelWeights) # evaluate f = open('result.txt', 'w') err, rmse, rsq, mae = ft.loss_with_prediction_array(teY, Yest) print(format('rmse: %f, R2: %f, MAE: %f') % (rmse, rsq, mae)) f.write(format('rmse: %f, R2: %f, MAE: %f') % (rmse, rsq, mae) + '\n') """ plot """ dates = [datetime.datetime.strptime(d, "%Y-%m-%d").date() for d in teYdate] plt.gca().xaxis.set_major_formatter(formatter) plt.gca().xaxis.set_major_locator(locater) pre = teY - err plt.plot(dates, teY, 'r') plt.plot(dates, pre, 'b') plt.legend(["Test Data", "Prediction"]) plt.savefig("./kernel" + str(num_kernels) + "_prediction_graph.png") plt.show() f.close() return rmse, rsq, mae
def rolling_forecast(teX, teY, num_kernels, kernelMeans, kernelSigma, kernelWeights, loop): """ model test, rolling forecast """ # forecast and update n = len(teX) Yest = [] for i in range(n): # forecast Yhat = ft.output(teX[i], kernelMeans, kernelSigma, kernelWeights) Yest.append(Yhat) # update kernelMeans, kernelSigma, kernelWeights = \ updateWeights(teX[i], teY[i], num_kernels, kernelMeans, kernelSigma, kernelWeights, loop) # evaluate f = open('result.txt', 'w') err, rmse, rsq, mae = ft.loss_with_prediction_array(teY, Yest) print(format('rmse: %f, R2: %f, MAE: %f') % (rmse, rsq, mae)) f.write(format('rmse: %f, R2: %f, MAE: %f') % (rmse, rsq, mae) + '\n') # plot pre = teY - err plt.plot(teY, 'r') plt.plot(pre, 'b') plt.legend(["Test Data", "Prediction"]) plt.savefig("./kernel" + str(num_kernels) + "_prediction_graph.png") plt.show() f.close() return rmse, rsq, mae
def rolling_forecast(teX, teY, num_kernels, kernelMeans, kernelSigma, kernelWeights): """ model test, rolling forecast """ # forecast and update n = len(teX) Yest = [] for i in range(n): # forecast Yhat = ft.output(teX[i], kernelMeans, kernelSigma, kernelWeights) Yest.append(Yhat) # update kernelMeans, kernelSigma, kernelWeights = \ updateWeights(teX[i], teY[i], num_kernels, kernelMeans, kernelSigma, kernelWeights) # evaluate err, rmse, rsq, mae = ft.loss_with_prediction_array(teY, Yest) return Yest, rmse, rsq, mae