Оценка ошибки на тестовых данных
Теперь, когда у вас есть posterior_predictive (доступен в рабочем пространстве), можно оценить качество модели на новых данных. Для этого нужно пройтись по тестовым наблюдениям и для каждого из них вычислить ошибку предсказания — разность между предсказательным распределением для данного наблюдения и его истинным значением. В результате вы получите распределение ошибок модели, которое затем можно визуализировать.
Вам понадобятся pymc3 и numpy — они уже импортированы как pm и np соответственно. Тестовые данные bikes_test также доступны в рабочем пространстве. Приступим!
Это упражнение является частью курса
Байесовский анализ данных на Python
Инструкции к упражнению
- Инициализируйте
errorsкак пустой список. - Для каждой строки в
bikes_testвычислите ошибку предсказания как разность между предсказательными выборками для этой строки изposterior_predictiveи единственным истинным значениемnum_bikesиз этой строки. - Преобразуйте
errorsв массивnumpy, примените к результату метод.reshape()и сохраните итог в переменнуюerror_distribution. - Постройте график распределения ошибок на тестовых данных с помощью функции
plot_posterior()изpymc3.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# 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()