Implemented Non Autorgressive Quantile Regression

This commit is contained in:
Victor Mylle
2023-11-18 17:42:06 +00:00
parent 75f1f64c38
commit 1268af47a6
9 changed files with 196493 additions and 161 deletions

View File

@@ -9,11 +9,24 @@ import pytz
history_data_path = "../../data/history-quarter-hour-data.csv"
forecast_data_path = "../../data/load_forecast.csv"
pv_forecast_data_path = "../../data/pv_gen_forecast.csv"
wind_forecast_data_path = "../../data/wind_gen_forecast.csv"
class DataConfig:
NRV_HISTORY: bool = True
LOAD_FORECAST: bool = True
LOAD_HISTORY: bool = False
def __init__(self):
self.NRV_HISTORY: bool = True
### LOAD ###
self.LOAD_FORECAST: bool = True
self.LOAD_HISTORY: bool = False
### PV ###
self.PV_FORECAST: bool = False
self.PV_HISTORY: bool = False
### WIND ###
self.WIND_FORECAST: bool = False
self.WIND_HISTORY: bool = False
class DataProcessor:
def __init__(self, data_config: DataConfig):
@@ -26,8 +39,12 @@ class DataProcessor:
self.history_features = self.get_nrv_history()
self.future_features = self.get_load_forecast()
self.pv_forecast = self.get_pv_forecast()
self.wind_forecast = self.get_wind_forecast()
self.all_features = self.history_features.merge(self.future_features, on='datetime', how='left')
self.all_features = self.all_features.merge(self.pv_forecast, on='datetime', how='left')
self.all_features = self.all_features.merge(self.wind_forecast, on='datetime', how='left')
self.data_config = data_config
@@ -69,6 +86,31 @@ class DataProcessor:
df.sort_values(by="datetime", inplace=True)
return df
def get_pv_forecast(self):
df = pd.read_csv(pv_forecast_data_path, delimiter=';')
df = df.rename(columns={'dayahead11hforecast': 'pv_forecast', 'Datetime': 'datetime'})
df = df[['datetime', 'pv_forecast']]
df = df.groupby('datetime').mean().reset_index()
df['datetime'] = pd.to_datetime(df['datetime'], utc=True)
df.sort_values(by="datetime", inplace=True)
return df
def get_wind_forecast(self):
df = pd.read_csv(wind_forecast_data_path, delimiter=';')
df = df.rename(columns={'dayaheadforecast': 'wind_forecast', 'datetime': 'datetime'})
df = df[['datetime', 'wind_forecast']]
# remove nan rows
df = df[~df['wind_forecast'].isnull()]
df = df.groupby('datetime').mean().reset_index()
df['datetime'] = pd.to_datetime(df['datetime'], utc=True)
df.sort_values(by="datetime", inplace=True)
return df
def set_batch_size(self, batch_size: int):
self.batch_size = batch_size