Aan de slagGa gratis aan de slag

De voorspellingsprestatie evalueren

In deze oefening evalueer en visualiseer je de prestaties van het forecastmodel dat je in de vorige oefening hebt gebouwd.

De test-gegevensset, ml_forecast-resultaten en plot_series zijn al geladen, samen met evaluatiefuncties (mape, rmse, coverage, hieronder getoond) en pandas als pd.

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

Laten we eerst de prestatie van het model beoordelen en daarna de forecast visualiseren.

Deze oefening maakt deel uit van de cursus

Forecasting-pijplijnen ontwerpen voor productie

Cursus bekijken

Oefeninstructies

  • Maak fc door de gegevenssets ml_forecast en test te mergen.
  • Bereken rmse met de meegeleverde aangepaste functie rmse(). Geef in die volgorde fc["y"] en fc[model] door aan de twee argumenten; sla dit binnen de for-lus op als een variabele r.
  • Rond de evaluatie af door fc_performance oplopend te sorteren op rmse.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

# Combine the data
fc = ml_forecast.____(____, how="left", on="ds")
fc_performance = None

for model in ["LGBMRegressor", "XGBRegressor", "LinearRegression"]:
    m = mape(y=fc["y"], yhat=fc[model])
    
    # Calculate RMSE
    r = ____(y=fc["____"], yhat=fc[____])
    c = coverage(y=fc["y"], lower=fc[model + "-lo-95"], upper=fc[model + "-hi-95"])

    perf = {"model": model, "mape": m, "rmse": r, "coverage": c}
    if fc_performance is None:
        fc_performance = pd.DataFrame([perf])
    else:
        fc_performance = pd.concat([fc_performance, pd.DataFrame([perf])])

# Sort the performance metrics by rmse
print(fc_performance.____("____"))
Code bewerken en uitvoeren