# K-Fold CV kf = KFold(n_splits=2, random_state=None, shuffle=False) # Load data and label X, y = load_data() acc = [] for i in range(10): acc_local = [] # To store accuracy of k times from k-Fold for train_index, test_index in kf.split(X): # Load train and test data and label train, train_label, test, test_label = X[train_index], y[ train_index], X[test_index], y[test_index] # Param: X,Y,epoch=100,lr=0.0005 net.fit(train, train_label, epoch=1, lr=0.0005) acc_fold = 0 # Counter for correct prediction for j in range(len(test)): to_feed = torch.tensor(test[j], dtype=torch.float64, requires_grad=True).cuda() pred = net(to_feed.float())[0] acc_fold += int((pred[0] < pred[1]) == int( test_label[j])) # Accumulate # of correct prediction # Log accuracy of each fold acc_local.append(acc_fold / len(test)) acc.append(np.average(acc_local)) # Accuracy of 1 epoch
for i in dpp.outlier_dict.keys(): dpp.DataStates[i] = Data(dpp.outlier_treatment(dpp.DataStates['Standardized_data'].df,forecastMeasure,outlier_type=i),forecastMeasure,m_count,m_perc,i_count,i_perc) dpp.imputation(dpp.DataStates[i].df,forecastMeasure,outlier_type=i) l = set(dpp.DataStates.keys()) - set(['Standardized_data','Normal_Distribution','boxplot']) d = {'Dataset':[],'Predictions':[]} for i in range(n_preds): d['t+'+str(i+1)+' RMSE'] = list() for i in l: rnn = RNN(dpp.DataStates[i].df.copy(),forecastMeasure,n_lag,n_preds,nvars) x, y, scaler = rnn.prepare_data(dpp.DataStates[i].df.copy()) x_train,x_test = rnn.train_test_split(x,test_size=0.3) y_train,y_test = rnn.train_test_split(y,test_size=0.3) model = rnn.fit([10,10],x_train, y_train) forecasts = rnn.forecast(model, x_test) forecasts = rnn.inverse_transform(forecasts, scaler) actual = rnn.inverse_transform(y_test.values, scaler) rmse = rnn.evaluate_forecasts(y_test.values, forecasts) d['Dataset'].append(i) for i in range(n_preds): d['t+'+str(i+1)+' RMSE'].append(rmse[i]) d['Predictions'].append(forecasts) fdf = pd.DataFrame(d) n = fdf[fdf['t+1 RMSE']==min(fdf['t+1 RMSE'])]['Dataset'].item() rnn = RNN(dpp.DataStates[n].df.copy(),forecastMeasure,n_lag,n_preds,nvars) x, y, scaler = rnn.prepare_data(dpp.DataStates[n].df.copy()) x_train,x_test = rnn.train_test_split(x,test_size=0.7) y_train,y_test = rnn.train_test_split(y,test_size=0.7)