def predict(self, data, gap=0, predtill=1): assert predtill - 1 <= gap true = data[:, -predtill:, :] pred = [] varm = VAR(data[0, :-gap - 1, :]) fitted = varm.fit() pred = varm.predict(fitted.params, start=data.shape[1] - gap - 2, end=data.shape[1] - 1)[gap + 1 - predtill:gap + 1] pred = np.expand_dims(np.array(pred), axis=0) mae = np.mean(np.abs(pred - true)) mape = np.mean(np.abs(pred - true) / true) * 100 return mae, mape, pred
def var(data, gap=0, predtill=1): assert predtill - 1 <= gap true = data[:, -predtill:, :] pred = [] # varm = VAR(data[0,:-1,:]) varm = VAR(data[0, :-gap - 1, :]) fitted = varm.fit() # print("Lag", fitted.k_ar) print("Coefficients", fitted.params.shape) pred = varm.predict(fitted.params, start=data.shape[1] - gap - 2, end=data.shape[1] - 1)[gap + 1 - predtill:gap + 1] print(pred.shape) pred = np.expand_dims(np.array(pred), axis=0) mae = np.mean(np.abs(pred - true)) mape = np.mean(np.abs(pred - true) / true) * 100 return mae, mape, pred
#1010025 all_data_scaled_sorted = pd.concat([all_data_scaled,labels],axis=1,sort=False).sort_values(['galaxy','galactic year'])[['galaxy','galactic year','y']] #%% X_train_with_labels = pd.concat([X_train,labels],axis=1,sort=False).sort_values(['galaxy','galactic year'])[['galaxy','galactic year','y']] # %% predicted_data = pd.DataFrame([]) for galaxy in tqdm_notebook(X_test['galaxy'].unique(), desc='Galaxy Loop'): galaxy_data = X_train_with_labels[X_train_with_labels['galaxy']==galaxy] galaxy_data_to_predict = X_test[X_test['galaxy']==galaxy][['galaxy','galactic year']] model = GradientBoostingRegressor(n_estimators=300) model.fit(np.array(galaxy_data['galactic year']).reshape(-1,1),galaxy_data['y']) galaxy_data_to_predict['y'] = model.predict(np.array(galaxy_data_to_predict['galactic year']).reshape(-1,1)) # trend_line = np.poly1d(np.polyfit(galaxy_data['galactic year'],galaxy_data['y'],deg=4)) # galaxy_data_to_predict['y'] = galaxy_data_to_predict['galactic year'].apply(lambda x: trend_line(x)) eei_test = test_df[test_df['galaxy']==galaxy][['galactic year','existence expectancy index']] eei_test.fillna(method='ffill',axis=0,inplace=True) galaxy_data_to_predict['existence expectancy index'] = eei_test['existence expectancy index'].values predicted_data = pd.concat([predicted_data,galaxy_data_to_predict[['y','existence expectancy index']]]) # data_to_plot = galaxy_data[['galactic year','y']] # data_to_plot = pd.concat([data_to_plot,galaxy_data_to_predict[['galactic year','y']]]).sort_values('galactic year') # plt.Line2D(xdata=data_to_plot['galactic year'],ydata=data_to_plot['y']) # plt.show()