Building a model leaderboard
Now that the data is in long-format, you can score the model's results using the following helper functions:
def mape(y, yhat):
mape = mean(abs(y - yhat)/ y)
return mape
def rmse(y, yhat):
rmse = (mean((y - yhat) ** 2 )) ** 0.5
return rmse
def coverage(y, lower, upper):
coverage = sum((y <= upper) & (y >= lower)) / len(y)
return coverage
def score(df):
mape_score = mape(y = df["y"], yhat = df["forecast"])
rmse_score = rmse(y = df["y"], yhat = df["forecast"])
coverage_score = coverage(y = df["y"], lower = df["lower"], upper = df["upper"])
cols = ["mape", "rmse", "coverage"]
df = pd.Series([mape_score, rmse_score, coverage_score], index=cols)
return df
This exercise is part of the course
Designing Forecasting Pipelines for Production
Hands-on interactive exercise
Have a go at this exercise by completing this sample code.
# Create score_df
score_df = (bkt
.groupby(["unique_id", "model_label", "model_name", "partition"])
[["unique_id", "model_label", "model_name", "partition", "y", "forecast", "lower", "upper"]]
.____(____)
.reset_index()
)
print(score_df)