| import sklearn |
| import pandas as pd |
| from tsai.basics import * |
| import config |
| from tsai.inference import load_learner |
|
|
| import pandas as pd |
| import platform |
| import pathlib |
|
|
| plt=platform.system() |
| if plt=='Linux': |
| pathlib.WindowsPath=pathlib.PosixPath |
|
|
| def get_inputs_from_user(): |
| |
| return 0 |
|
|
| def preprocess_data(DataFrame:pd.DataFrame): |
| preproc=load_object() |
| return DataFrame |
|
|
| def preprocess_data_transform_generate_splits_Train(DataFrame:pd.DataFrame): |
| DataFrame=DataFrame.drop(config.DROP_COLOUMNS,axis=1) |
| preproc_pipe=load_object(config.PREPROCESSOR_PATH) |
| exp_pipe=load_object(config.SCALING_DATA) |
| DataFrame=preproc_pipe.fit_transform(DataFrame) |
| |
| print("dataframe processed and ready for splitting") |
| |
| splits=get_forecasting_splits(DataFrame,fcst_history=config.FCST_HISTORY,fcst_horizon=config.FCST_HORIZON,datetime_col=config.DATETIME_COL, |
| valid_size=config.VALID_SIZE,test_size=config.TEST_SIZE) |
| |
| X,y=prepare_forecasting_data(DataFrame,fcst_history=config.FCST_HISTORY,fcst_horizon=config.FCST_HORIZON,x_vars=config.COLOUMNS,y_vars=config.COLOUMNS) |
| |
| learn=TSForecaster(X,y,splits=splits, |
| batch_size=16,path='models', |
| arch='InceptionTimePlus', |
| pipelines=[preproc_pipe,exp_pipe], |
| |
| metrics=[mse,mape], |
| cbs=ShowGraph() |
| ) |
| |
| lr_max=learn.lr_find().valley |
| |
| learn.fit_one_cycle(n_epoch=config.N_EPOCH,lr_max=lr_max) |
| learn.export("model_in.pt") |
| return 0 |
|
|
| |
| def inference_Aircomp(fcst_date:string,DataFrame:pd.DataFrame): |
| pre=load_object(config.AIR_PREPROCESSOR_PATH) |
| DataFrame=pre.fit_transform(DataFrame) |
| |
| dates=pd.date_range(start=None,end=fcst_date,periods=config.FCST_HISTORY,freq=config.FREQUENCY) |
| new_df=DataFrame[DataFrame[config.AIR_DATETIME_COL].isin(dates)].reset_index(drop=True) |
| |
|
|
| predict=load_learner(Path('models/AirInceptionTime.pt')) |
| new_df=predict.transform(new_df) |
| |
| new_x,__=prepare_forecasting_data(new_df,fcst_history=config.FCST_HISTORY,fcst_horizon=0,x_vars=config.AIR_COLOUMNS,y_vars=config.AIR_COLOUMNS) |
| |
| new_scaled_preds, *_ = predict.get_X_preds(new_x) |
|
|
| new_scaled_preds=to_np(new_scaled_preds).swapaxes(1,2).reshape(-1,len(config.AIR_COLOUMNS)) |
| |
| dates=pd.date_range(start=fcst_date, periods=config.FCST_HORIZON+1,freq='1H')[1:] |
| preds_df=pd.DataFrame(dates,columns=[config.AIR_DATETIME_COL]) |
| preds_df.loc[:, config.AIR_COLOUMNS]=new_scaled_preds |
| preds_df=predict.inverse_transform(preds_df) |
| |
| return preds_df |
|
|
| def inference_Energy(fcst_date:string,DataFrame:pd.DataFrame): |
| pre=load_object(config.ENER_PREPROCESSOR_PATH) |
| DataFrame[config.ENERGY_DATETIME]=pd.to_datetime(DataFrame[config.ENERGY_DATETIME],format='mixed') |
| DataFrame=pre.fit_transform(DataFrame) |
| |
| dates=pd.date_range(start=None,end=fcst_date,periods=config.FCST_HISTORY,freq=config.FREQUENCY) |
| new_df=DataFrame[DataFrame[config.ENERGY_DATETIME].isin(dates)].reset_index(drop=True) |
| |
|
|
| predict=load_learner(config.MODEL_PATH_ITP_ENER) |
| new_df=predict.transform(new_df) |
| |
| new_x,__=prepare_forecasting_data(new_df,fcst_history=config.FCST_HISTORY,fcst_horizon=0,x_vars=config.ENERGY_COLOUMNS,y_vars=config.ENERGY_COLOUMNS) |
| |
| new_scaled_preds, *_ = predict.get_X_preds(new_x) |
|
|
| new_scaled_preds=to_np(new_scaled_preds).swapaxes(1,2).reshape(-1,len(config.ENERGY_COLOUMNS)) |
| |
| dates=pd.date_range(start=fcst_date, periods=config.FCST_HORIZON+1,freq='1H')[1:] |
| preds_df=pd.DataFrame(dates,columns=[config.ENERGY_DATETIME]) |
| preds_df.loc[:, config.ENERGY_COLOUMNS]=new_scaled_preds |
| preds_df=predict.inverse_transform(preds_df) |
| |
| return preds_df |
|
|
| def inference_boiler(fcst_date:string,DataFrame:pd.DataFrame): |
| pre=load_object(config.BOILER_PREPROCESSOR_PATH) |
| DataFrame=pre.fit_transform(DataFrame) |
| |
| dates=pd.date_range(start=None,end=fcst_date,periods=config.FCST_HISTORY,freq=config.FREQUENCY) |
| new_df=DataFrame[DataFrame[config.BOILER_DATETIME].isin(dates)].reset_index(drop=True) |
|
|
| |
| predict=load_learner(config.MODEL_PATH_ITP_BOIL) |
| new_df=predict.transform(new_df) |
| |
| new_x,__=prepare_forecasting_data(new_df,fcst_history=config.FCST_HISTORY,fcst_horizon=0,x_vars=config.BOILER_COLOUMNS,y_vars=config.BOILER_COLOUMNS) |
| |
| new_scaled_preds, *_ = predict.get_X_preds(new_x) |
|
|
| new_scaled_preds=to_np(new_scaled_preds).swapaxes(1,2).reshape(-1,len(config.BOILER_COLOUMNS)) |
| |
| dates=pd.date_range(start=fcst_date, periods=config.FCST_HORIZON+1,freq='1H')[1:] |
| preds_df=pd.DataFrame(dates,columns=[config.BOILER_DATETIME]) |
| preds_df.loc[:, config.BOILER_COLOUMNS]=new_scaled_preds |
| preds_df=predict.inverse_transform(preds_df) |
| |
| return preds_df |