Spaces:
Sleeping
Sleeping
| import time | |
| import warnings | |
| from Variable_artifects.artifact import FORECAST_DAY | |
| import pandas as pd | |
| def predict_function(trained_model, dataset, forecast_days): | |
| """ | |
| Function created for prediction | |
| Parameters | |
| --------- | |
| trained_model : SARIMAX model-A trained SARIMAX model path | |
| dataset : pandas DataFrame containing the historical time series data. | |
| param forecast_days: how many days want to forecast | |
| Returns | |
| ------- | |
| predict_frame : pandas Dataframe with predicted values and corresponding dates. | |
| execution_time : float | |
| Execution time for making predictions. | |
| """ | |
| try: | |
| # Specify the number of steps to forecast | |
| FORECAST_STEPS = forecast_days | |
| PERIODS = FORECAST_STEPS + 1 | |
| # Suppress ValueWarning and FutureWarning | |
| with warnings.catch_warnings(): | |
| warnings.simplefilter("ignore", category=UserWarning) | |
| warnings.simplefilter("ignore", category=FutureWarning) | |
| # Measure execution time | |
| start_time = time.time() | |
| # making prediction: | |
| forecast = trained_model.get_forecast(FORECAST_STEPS, dynamic=True) | |
| # Measure execution time | |
| execution_time = time.time() - start_time | |
| # Access the confidence interval directly using 'conf_int' | |
| confidence_interval = forecast.conf_int() | |
| # Get the last date in the DataFrame | |
| last_date = dataset.index[-2] | |
| # Generate a new DataFrame with the dates for the next x number of steps | |
| new_dates = pd.date_range( | |
| start=last_date, | |
| periods=PERIODS, | |
| freq='B')[1:] # 'B' stands for business day), [1:] Exclude the last_date | |
| # Print or use the confidence interval | |
| predict_frame = pd.DataFrame({"Date": new_dates, "Lower_Bound": confidence_interval.iloc[:, 0], | |
| "Upper_Bound": confidence_interval.iloc[:, 1]}) | |
| return predict_frame, execution_time | |
| except Exception as e: | |
| raise e | |