Testfout inschatten
Nu je posterior_predictive (beschikbaar in je workspace) klaarstaat, kun je de modelprestaties op nieuwe data evalueren. Hiervoor loop je over de testobservaties en bereken je voor elke observatie de voorspellingsfout als het verschil tussen de predictieve verdeling voor deze observatie en de daadwerkelijke, echte waarde. Dit levert de verdeling van de fout van je model op, die je daarna kunt visualiseren.
Je hebt pymc3 en numpy nodig, die al voor je zijn geïmporteerd als respectievelijk pm en np. De testdata, bikes_test, is ook beschikbaar in je workspace. Aan de slag!
Deze oefening maakt deel uit van de cursus
Bayesian Data Analysis in Python
Oefeninstructies
- Initialiseer
errorsals een lege lijst. - Bereken voor elke rij in
bikes_testde voorspellingsfout als de predictieve trekkingen voor deze rij uitposterior_predictivemin de enkele echte waarde vannum_bikesuit de rij. - Vorm
errorsom door ze naar eennumpy-array te converteren en vervolgens de methode.reshape()toe te passen op het resultaat, en wijs de uiteindelijke uitkomst toe aanerror_distribution. - Plot de testfoutverdeling met de functie
plot_posterior()vanpymc3.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# Initialize errors
errors = ____
# Iterate over rows of bikes_test to compute error per row
for index, test_example in bikes_test.iterrows():
error = ____[____][:, ____] - ____[____]
errors.append(error)
# Reshape errors
error_distribution = ____(____).____()
# Plot the error distribution
____
plt.show()